Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Animation.cs
Go to the documentation of this file.
3
4namespace Terraria;
5
6public class Animation
7{
9
11
13
15
16 private bool _temporary;
17
19
20 private ushort _tileType;
21
22 private int _frame;
23
24 private int _frameMax;
25
26 private int _frameCounter;
27
28 private int _frameCounterMax;
29
30 private int[] _frameData;
31
39
40 private void SetDefaults(int type)
41 {
42 _tileType = 0;
43 _frame = 0;
44 _frameMax = 0;
45 _frameCounter = 0;
47 _temporary = false;
48 switch (type)
49 {
50 case 0:
51 {
52 _frameMax = 5;
54 _frameData = new int[_frameMax];
55 for (int l = 0; l < _frameMax; l++)
56 {
57 _frameData[l] = l + 1;
58 }
59 break;
60 }
61 case 1:
62 {
63 _frameMax = 5;
65 _frameData = new int[_frameMax];
66 for (int j = 0; j < _frameMax; j++)
67 {
68 _frameData[j] = 5 - j;
69 }
70 break;
71 }
72 case 2:
74 _frameData = new int[5] { 1, 2, 2, 2, 1 };
75 _frameMax = _frameData.Length;
76 break;
77 case 3:
78 {
79 _frameMax = 5;
81 _frameData = new int[_frameMax];
82 for (int k = 0; k < _frameMax; k++)
83 {
84 _frameData[k] = k;
85 }
86 break;
87 }
88 case 4:
89 {
90 _frameMax = 3;
92 _frameData = new int[_frameMax];
93 for (int i = 0; i < _frameMax; i++)
94 {
95 _frameData[i] = 9 + i;
96 }
97 break;
98 }
99 }
100 }
101
102 public static void NewTemporaryAnimation(int type, ushort tileType, int x, int y)
103 {
104 Point16 coordinates = new Point16(x, y);
105 if (x >= 0 && x < Main.maxTilesX && y >= 0 && y < Main.maxTilesY)
106 {
108 animation.SetDefaults(type);
109 animation._tileType = tileType;
110 animation._coordinates = coordinates;
111 animation._temporary = true;
113 if (Main.netMode == 2)
114 {
115 NetMessage.SendTemporaryAnimation(-1, type, tileType, x, y);
116 }
117 }
118 }
119
120 private static void RemoveTemporaryAnimation(short x, short y)
121 {
122 Point16 point = new Point16(x, y);
123 if (_temporaryAnimations.ContainsKey(point))
124 {
125 _awaitingRemoval.Add(point);
126 }
127 }
128
129 public static void UpdateAll()
130 {
131 for (int i = 0; i < _animations.Count; i++)
132 {
133 _animations[i].Update();
134 }
135 if (_awaitingAddition.Count > 0)
136 {
137 for (int j = 0; j < _awaitingAddition.Count; j++)
138 {
141 }
142 _awaitingAddition.Clear();
143 }
145 {
146 temporaryAnimation.Value.Update();
147 }
148 if (_awaitingRemoval.Count > 0)
149 {
150 for (int k = 0; k < _awaitingRemoval.Count; k++)
151 {
153 }
154 _awaitingRemoval.Clear();
155 }
156 }
157
158 public void Update()
159 {
160 if (_temporary)
161 {
163 if (tile != null && tile.type != _tileType)
164 {
166 return;
167 }
168 }
171 {
172 return;
173 }
174 _frameCounter = 0;
175 _frame++;
176 if (_frame >= _frameMax)
177 {
178 _frame = 0;
179 if (_temporary)
180 {
182 }
183 }
184 }
185
186 public static bool GetTemporaryFrame(int x, int y, out int frameData)
187 {
188 Point16 key = new Point16(x, y);
189 if (!_temporaryAnimations.TryGetValue(key, out var value))
190 {
191 frameData = 0;
192 return false;
193 }
194 frameData = value._frameData[value._frame];
195 return true;
196 }
197}
static List< Animation > _animations
Definition Animation.cs:8
static Dictionary< Point16, Animation > _temporaryAnimations
Definition Animation.cs:10
static bool GetTemporaryFrame(int x, int y, out int frameData)
Definition Animation.cs:186
static void Initialize()
Definition Animation.cs:32
static List< Point16 > _awaitingRemoval
Definition Animation.cs:12
static List< Animation > _awaitingAddition
Definition Animation.cs:14
static void RemoveTemporaryAnimation(short x, short y)
Definition Animation.cs:120
static void NewTemporaryAnimation(int type, ushort tileType, int x, int y)
Definition Animation.cs:102
void SetDefaults(int type)
Definition Animation.cs:40
Point16 _coordinates
Definition Animation.cs:18
static void UpdateAll()
Definition Animation.cs:129
static int maxTilesY
Definition Main.cs:1116
static int netMode
Definition Main.cs:2095
static Tile[,] tile
Definition Main.cs:1675
static void SendTemporaryAnimation(int whoAmi, int animationType, int tileType, int xCoord, int yCoord)
ushort type
Definition Tile.cs:8