Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetSittingTargetInfo()

static bool Terraria.GameContent.PlayerSittingHelper.GetSittingTargetInfo ( Player player,
int x,
int y,
out int targetDirection,
out Vector2 playerSittingPosition,
out Vector2 seatDownOffset,
out ExtraSeatInfo extraInfo )
inlinestatic

Definition at line 134 of file PlayerSittingHelper.cs.

135 {
136 extraInfo = default(ExtraSeatInfo);
137 Tile tileSafely = Framing.GetTileSafely(x, y);
138 if (!TileID.Sets.CanBeSatOnForPlayers[tileSafely.type] || !tileSafely.active())
139 {
140 targetDirection = 1;
141 seatDownOffset = Vector2.Zero;
142 playerSittingPosition = default(Vector2);
143 return false;
144 }
145 int num = x;
146 int num2 = y;
147 targetDirection = 1;
148 seatDownOffset = Vector2.Zero;
149 int num3 = 6;
150 Vector2 zero = Vector2.Zero;
151 switch (tileSafely.type)
152 {
153 case 15:
154 case 497:
155 {
156 bool num6 = tileSafely.type == 15 && (tileSafely.frameY / 40 == 1 || tileSafely.frameY / 40 == 20);
157 bool value = tileSafely.type == 15 && tileSafely.frameY / 40 == 27;
158 seatDownOffset.Y = value.ToInt() * 4;
159 if (tileSafely.frameY % 40 != 0)
160 {
161 num2--;
162 }
163 targetDirection = -1;
164 if (tileSafely.frameX != 0)
165 {
166 targetDirection = 1;
167 }
168 if (num6 || tileSafely.type == 497)
169 {
170 extraInfo.IsAToilet = true;
171 }
172 break;
173 }
174 case 102:
175 {
176 int num4 = tileSafely.frameX / 18;
177 if (num4 == 0)
178 {
179 num++;
180 }
181 if (num4 == 2)
182 {
183 num--;
184 }
185 int num5 = tileSafely.frameY / 18;
186 if (num5 == 0)
187 {
188 num2 += 2;
189 }
190 if (num5 == 1)
191 {
192 num2++;
193 }
194 if (num5 == 3)
195 {
196 num2--;
197 }
198 targetDirection = player.direction;
199 num3 = 0;
200 break;
201 }
202 case 487:
203 {
204 int num7 = tileSafely.frameX % 72 / 18;
205 if (num7 == 1)
206 {
207 num--;
208 }
209 if (num7 == 2)
210 {
211 num++;
212 }
213 if (tileSafely.frameY / 18 != 0)
214 {
215 num2--;
216 }
217 targetDirection = (num7 <= 1).ToDirectionInt();
218 num3 = 0;
219 seatDownOffset.Y -= 1f;
220 break;
221 }
222 case 89:
223 {
224 targetDirection = player.direction;
225 num3 = 0;
226 Vector2 vector = new Vector2(-4f, 2f);
227 Vector2 vector2 = new Vector2(4f, 2f);
228 Vector2 vector3 = new Vector2(0f, 2f);
229 Vector2 zero2 = Vector2.Zero;
230 zero2.X = 1f;
231 zero.X = -1f;
232 switch (tileSafely.frameX / 54)
233 {
234 case 0:
235 vector3.Y = (vector.Y = (vector2.Y = 1f));
236 break;
237 case 1:
238 vector3.Y = 1f;
239 break;
240 case 2:
241 case 14:
242 case 15:
243 case 17:
244 case 20:
245 case 21:
246 case 22:
247 case 23:
248 case 25:
249 case 26:
250 case 27:
251 case 28:
252 case 35:
253 case 37:
254 case 38:
255 case 39:
256 case 40:
257 case 41:
258 case 42:
259 vector3.Y = (vector.Y = (vector2.Y = 1f));
260 break;
261 case 3:
262 case 4:
263 case 5:
264 case 7:
265 case 8:
266 case 9:
267 case 10:
268 case 11:
269 case 12:
270 case 13:
271 case 16:
272 case 18:
273 case 19:
274 case 36:
275 vector3.Y = (vector.Y = (vector2.Y = 0f));
276 break;
277 case 6:
278 vector3.Y = (vector.Y = (vector2.Y = -1f));
279 break;
280 case 24:
281 vector3.Y = 0f;
282 vector.Y = -4f;
283 vector.X = 0f;
284 vector2.X = 0f;
285 vector2.Y = -4f;
286 break;
287 }
288 if (tileSafely.frameY % 40 != 0)
289 {
290 num2--;
291 }
292 if ((tileSafely.frameX % 54 == 0 && targetDirection == -1) || (tileSafely.frameX % 54 == 36 && targetDirection == 1))
293 {
294 seatDownOffset = vector;
295 }
296 else if ((tileSafely.frameX % 54 == 0 && targetDirection == 1) || (tileSafely.frameX % 54 == 36 && targetDirection == -1))
297 {
298 seatDownOffset = vector2;
299 }
300 else
301 {
302 seatDownOffset = vector3;
303 }
304 seatDownOffset += zero2;
305 break;
306 }
307 }
308 playerSittingPosition = new Point(num, num2 + 1).ToWorldCoordinates(8f, 16f);
309 playerSittingPosition.X += targetDirection * num3;
310 playerSittingPosition += zero;
311 return true;
312 }
static bool[] CanBeSatOnForPlayers
Definition TileID.cs:135

References Terraria.Tile.active(), Terraria.ID.TileID.Sets.CanBeSatOnForPlayers, Terraria.Entity.direction, Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.Framing.GetTileSafely(), Terraria.Tile.type, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.GameContent.PlayerSittingHelper.SitDown(), Terraria.GameContent.PlayerSittingHelper.TryGetSittingBlock(), and Terraria.GameContent.PlayerSittingHelper.UpdateSitting().