Elin Decompiled Documentation EA 23.237 Stable
Loading...
Searching...
No Matches
Point.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Newtonsoft.Json;
5using UnityEngine;
6
7[Serializable]
8public class Point : EClass
9{
10 public static readonly XY[] Surrounds = new XY[4]
11 {
12 new XY(0, -1),
13 new XY(1, 0),
14 new XY(0, 1),
15 new XY(-1, 0)
16 };
17
18 public static Vector3 fixedPos;
19
20 public static Point shared = new Point();
21
22 public static Point shared2 = new Point();
23
24 public static Point shared3 = new Point();
25
26 public static Map map;
27
28 public static Point Invalid = new Point
29 {
30 IsValid = false
31 };
32
33 public static Point Zero = new Point();
34
35 [JsonProperty]
36 public int x;
37
38 [JsonProperty]
39 public int z;
40
41 private Vector3 vCache;
42
43 public static BaseGameScreen _screen;
44
45 private static List<Card> listCard = new List<Card>();
46
47 private static List<Chara> listChara = new List<Chara>();
48
49 public int index => x + z * map.Size;
50
51 public Cell cell => map.cells[x, z];
52
54
56
58
60
62
64
66
68
70
72
73 public Area area => detail?.area;
74
75 public Point Front => new Point(x + 1, z - 1);
76
78
79 public int eloX => EClass.scene.elomap.minX + x;
80
81 public int eloY => EClass.scene.elomap.minY + z;
82
83 public bool HasDesignation => cell.detail?.designation != null;
84
85 public bool HasDirt => cell.decal != 0;
86
87 public bool IsValid
88 {
89 get
90 {
91 if (x >= 0 && z >= 0 && x < map.Size)
92 {
93 return z < map.Size;
94 }
95 return false;
96 }
97 set
98 {
99 x = ((!value) ? (-999) : 0);
100 }
101 }
102
103 public bool IsInBounds
104 {
105 get
106 {
107 if (x >= map.bounds.x && z >= map.bounds.z && x <= map.bounds.maxX)
108 {
109 return z <= map.bounds.maxZ;
110 }
111 return false;
112 }
113 }
114
115 public bool IsInBoundsPlus
116 {
117 get
118 {
119 if (x >= 0 && z >= 0 && x <= map.Size - 1)
120 {
121 return z <= map.Size - 1;
122 }
123 return false;
124 }
125 }
126
127 public bool IsFarmField => (HasBridge ? sourceBridge : sourceFloor).alias == "field";
128
129 public bool IsWater => cell.IsTopWater;
130
131 public bool HasRamp => cell.HasRamp;
132
133 public bool HasRail => sourceObj.tag.Contains("rail");
134
136
137 public bool HasObj => cell.obj != 0;
138
139 public bool HasDecal => cell.decal != 0;
140
141 public bool HasBlock => cell._block != 0;
142
143 public bool HasMinableBlock
144 {
145 get
146 {
147 if (HasObj)
148 {
149 return sourceBlock.tileType.IsFullBlock;
150 }
151 return false;
152 }
153 }
154
156
157 public bool HasWall
158 {
159 get
160 {
161 if (cell._block != 0)
162 {
163 return cell.sourceBlock.tileType.IsWall;
164 }
165 return false;
166 }
167 }
168
169 public bool HasFence
170 {
171 get
172 {
173 if (cell._block != 0)
174 {
175 return cell.sourceBlock.tileType.IsFence;
176 }
177 return false;
178 }
179 }
180
181 public bool IsSunLit
182 {
183 get
184 {
186 {
187 return Map.sunMap.Contains(index);
188 }
189 return true;
190 }
191 }
192
193 public bool HasNonWallBlock
194 {
195 get
196 {
197 if (HasBlock)
198 {
199 return !cell.sourceBlock.tileType.IsWallOrFence;
200 }
201 return false;
202 }
203 }
204
205 public bool HasTaskBuild
206 {
207 get
208 {
209 if (cell.detail != null)
210 {
211 return cell.detail.designation is TaskBuild;
212 }
213 return false;
214 }
215 }
216
217 public bool HasBlockRecipe => (cell.detail?.designation as TaskBuild)?.isBlock ?? false;
218
219 public bool HasFloor => cell._floor != 0;
220
221 public bool HasBridge => cell._bridge != 0;
222
223 public bool IsSky
224 {
225 get
226 {
227 if (sourceFloor.tileType == TileType.Sky)
228 {
229 return !HasBridge;
230 }
231 return false;
232 }
233 }
234
235 public bool HasArea => detail?.area != null;
236
237 public bool HasChara
238 {
239 get
240 {
241 CellDetail cellDetail = detail;
242 if (cellDetail == null)
243 {
244 return false;
245 }
246 return cellDetail.charas.Count > 0;
247 }
248 }
249
250 public bool HasThing
251 {
252 get
253 {
254 CellDetail cellDetail = detail;
255 if (cellDetail == null)
256 {
257 return false;
258 }
259 return cellDetail.things.Count > 0;
260 }
261 }
262
264 {
265 get
266 {
267 if (detail != null)
268 {
269 return detail.charas.Count > 1;
270 }
271 return false;
272 }
273 }
274
275 public bool IsDeepWater
276 {
277 get
278 {
280 {
281 return sourceFloor.tileType.IsDeepWater;
282 }
283 return false;
284 }
285 }
286
288 {
289 get
290 {
291 CellDetail cellDetail = detail;
292 if (cellDetail == null || cellDetail.charas.Count <= 0)
293 {
294 return null;
295 }
296 return detail.charas[0];
297 }
298 }
299
301 {
302 get
303 {
304 CellDetail cellDetail = detail;
305 if (cellDetail == null || cellDetail.things.Count <= 0)
306 {
307 return null;
308 }
309 return detail.things[0];
310 }
311 }
312
314 {
315 get
316 {
317 CellDetail cellDetail = detail;
318 if (cellDetail == null || cellDetail.things.Count <= 0)
319 {
320 return null;
321 }
322 return detail.things.LastItem();
323 }
324 }
325
327 {
328 get
329 {
330 if (detail == null || detail.things.Count <= 0 || !detail.things[0].IsInstalled)
331 {
332 return null;
333 }
334 return detail.things[0];
335 }
336 }
337
338 public List<Thing> Things => cell.Things;
339
340 public List<Chara> Charas => cell.Charas;
341
342 public bool IsSeen => cell.isSeen;
343
344 public bool IsSync => cell.pcSync;
345
346 public bool IsHidden
347 {
348 get
349 {
350 if (cell.isSeen)
351 {
352 if (cell.room != null && !EClass.screen.tileMap.hideRoomFog && !cell.hasDoor)
353 {
354 return cell.HasRoof;
355 }
356 return false;
357 }
358 return true;
359 }
360 }
361
362 public bool IsBlocked
363 {
364 get
365 {
366 if (IsValid)
367 {
368 return cell.blocked;
369 }
370 return true;
371 }
372 }
373
374 public bool IsHotSpring
375 {
376 get
377 {
379 {
380 if (!EClass.debug.enable && !EClass._zone.elements.Has(3701))
381 {
382 return IsInSpot<TraitGeyser>();
383 }
384 return true;
385 }
386 return false;
387 }
388 }
389
390 public static Point GetShared(int x, int z)
391 {
392 shared.x = x;
393 shared.z = z;
394 return shared;
395 }
396
397 public bool Within(int _x, int _z, int _w, int _h)
398 {
399 if (x >= _x && z >= _z && x < _x + _w)
400 {
401 return z < _z + _h;
402 }
403 return false;
404 }
405
407 {
408 if (detail != null)
409 {
410 foreach (Chara chara in detail.charas)
411 {
412 if (EClass.pc.CanSee(chara))
413 {
414 return chara;
415 }
416 }
417 }
418 return null;
419 }
420
421 public bool HasRoomOrArea(BaseArea a)
422 {
423 if (area != a)
424 {
425 return cell.room == a;
426 }
427 return true;
428 }
429
430 public bool IsInSpot<T>() where T : Trait
431 {
432 foreach (Thing thing in EClass._map.things)
433 {
434 if (!(thing.trait is T) || thing.trait.radius == 0)
435 {
436 continue;
437 }
438 foreach (Point item in thing.trait.ListPoints())
439 {
440 if (Equals(item))
441 {
442 return true;
443 }
444 }
445 }
446 return false;
447 }
448
449 public bool IsPublicSpace()
450 {
451 if (area != null)
452 {
454 {
455 return true;
456 }
457 return false;
458 }
459 if (cell.room != null)
460 {
462 {
463 return true;
464 }
465 return false;
466 }
467 return true;
468 }
469
470 public Point()
471 {
472 }
473
474 public Point(Point p)
475 {
476 x = p.x;
477 z = p.z;
478 }
479
480 public Point(int _x, int _z)
481 {
482 x = _x;
483 z = _z;
484 }
485
486 public Point(int _index)
487 {
488 Set(_index);
489 }
490
491 public Point Copy()
492 {
493 return new Point(x, z);
494 }
495
496 public T Copy<T>() where T : Point
497 {
498 T val = Activator.CreateInstance<T>();
499 val.Set(this);
500 return val;
501 }
502
503 public Point Set(int _x, int _z)
504 {
505 x = _x;
506 z = _z;
507 return this;
508 }
509
510 public Point Set(int index)
511 {
512 x = index % map.Size;
513 z = index % map.SizeXZ / map.Size;
514 return this;
515 }
516
517 public Point Set(Point point)
518 {
519 x = point.x;
520 z = point.z;
521 return this;
522 }
523
524 public override string ToString()
525 {
526 return "(" + x + " / " + z + ")";
527 }
528
529 public void Set(Vector3 v)
530 {
531 v.x -= 0.64f;
532 v.y -= 0.64f;
533 int num = Mathf.RoundToInt(v.x / _screen.tileAlign.x);
534 int num2 = Mathf.RoundToInt(v.y / _screen.tileAlign.y);
535 x = (num2 - num) / 2 * -1;
536 z = num - x;
537 }
538
539 public ref Vector3 PositionAuto()
540 {
542 {
543 return ref PositionTopdown();
544 }
545 return ref Position();
546 }
547
548 public ref Vector3 Position(int height)
549 {
550 if (height == -1)
551 {
552 return ref Position();
553 }
554 vCache.x = (float)(x + z) * _screen.tileAlign.x;
555 vCache.y = (float)(z - x) * _screen.tileAlign.y + (float)height * _screen.tileMap._heightMod.y;
556 vCache.z = 1000f + vCache.x * _screen.tileWeight.x + vCache.y * _screen.tileWeight.z + (float)height * _screen.tileMap._heightMod.z;
557 return ref vCache;
558 }
559
560 public ref Vector3 Position()
561 {
562 byte b = ((cell.bridgeHeight == 0) ? cell.height : cell.bridgeHeight);
563 vCache.x = (float)(x + z) * _screen.tileAlign.x;
564 vCache.y = (float)(z - x) * _screen.tileAlign.y + (float)(int)b * _screen.tileMap._heightMod.y;
565 vCache.z = 1000f + vCache.x * _screen.tileWeight.x + vCache.y * _screen.tileWeight.z + (float)(int)b * _screen.tileMap._heightMod.z;
566 return ref vCache;
567 }
568
569 public ref Vector3 PositionTopdown()
570 {
571 byte b = ((cell.bridgeHeight == 0) ? cell.height : cell.bridgeHeight);
572 vCache.x = (float)x * _screen.tileAlign.x;
573 vCache.y = (float)z * _screen.tileAlign.y + (float)(int)b * _screen.tileMap._heightMod.y;
574 vCache.z = 1000f + vCache.x * _screen.tileWeight.x + vCache.y * _screen.tileWeight.z + (float)(int)b * _screen.tileMap._heightMod.z;
575 return ref vCache;
576 }
577
578 public ref Vector3 PositionTopdownTreasure()
579 {
581 vCache.x = (float)(x - EClass.scene.elomap.minX) * screenElona.tileAlign.x;
582 vCache.y = (float)(z - EClass.scene.elomap.minY) * screenElona.tileAlign.y;
583 vCache.z = 1400f;
584 return ref vCache;
585 }
586
587 public ref Vector3 PositionCenter()
588 {
590 {
591 _ = ref PositionTopdown();
592 }
593 else
594 {
595 _ = ref Position();
596 }
597 vCache.x += EClass.screen.tileWorldSize.x * 0.5f;
598 vCache.y += EClass.screen.tileWorldSize.y * 0.75f;
599 return ref vCache;
600 }
601
602 public Quaternion GetRotation(Point to)
603 {
604 return Quaternion.Euler(0f, 0f, GetAngle(to));
605 }
606
607 public float GetAngle(Point to)
608 {
609 Vector3 vector = to.Position() - Position();
610 return Mathf.Atan2(vector.y, vector.x) * 57.29578f;
611 }
612
613 public float GetAngle2(Point to)
614 {
615 int num = to.x - x;
616 return Mathf.Atan2(to.z - z, num) * 57.29578f;
617 }
618
619 public Point GetNearestPoint(bool allowBlock = false, bool allowChara = true, bool allowInstalled = true, bool ignoreCenter = false, int minRadius = 0)
620 {
621 Point p = new Point();
622 int r = 1;
623 int num = x;
624 int num2 = z;
625 if (IsValid(num, num2))
626 {
627 return p;
628 }
629 if (IsValid(num, num2 + 1))
630 {
631 return p;
632 }
633 for (int i = 0; i < 30; i++)
634 {
635 for (int j = 0; j < r; j++)
636 {
637 num++;
638 if (IsValid(num, num2))
639 {
640 return p;
641 }
642 }
643 for (int k = 0; k < r; k++)
644 {
645 num2++;
646 if (IsValid(num, num2))
647 {
648 return p;
649 }
650 }
651 r++;
652 for (int l = 0; l < r; l++)
653 {
654 num--;
655 if (IsValid(num, num2))
656 {
657 return p;
658 }
659 }
660 for (int m = 0; m < r; m++)
661 {
662 num2--;
663 if (IsValid(num, num2))
664 {
665 return p;
666 }
667 }
668 r++;
669 }
670 p.Set(this);
671 return p;
672 bool IsValid(int dx, int dz)
673 {
674 p.Set(dx, dz);
675 if (minRadius > r / 2)
676 {
677 return false;
678 }
679 if (!p.IsInBounds || !map.Contains(dx, dz) || (ignoreCenter && dx == x && dz == z))
680 {
681 return false;
682 }
683 if ((!allowBlock && (p.cell.blocked || p.cell.hasDoor || (p.cell.growth != null && p.cell.growth.IsTree))) || (!allowChara && p.HasChara) || (!allowInstalled && p.Installed != null))
684 {
685 return false;
686 }
687 return true;
688 }
689 }
690
691 public bool ForeachNearestPoint(Func<Point, bool> endFunc, bool allowBlock = false, bool allowChara = true, bool allowInstalled = true, bool ignoreCenter = false, int maxRange = 30)
692 {
693 Point p = new Point();
694 int num = 1;
695 int num2 = x;
696 int num3 = z;
697 if (IsValid(num2, num3) && endFunc(p))
698 {
699 return true;
700 }
701 if (IsValid(num2, num3 + 1) && endFunc(p))
702 {
703 return true;
704 }
705 for (int i = 0; i < maxRange; i++)
706 {
707 for (int j = 0; j < num; j++)
708 {
709 num2++;
710 if (IsValid(num2, num3) && endFunc(p))
711 {
712 return true;
713 }
714 }
715 for (int k = 0; k < num; k++)
716 {
717 num3++;
718 if (IsValid(num2, num3) && endFunc(p))
719 {
720 return true;
721 }
722 }
723 num++;
724 for (int l = 0; l < num; l++)
725 {
726 num2--;
727 if (IsValid(num2, num3) && endFunc(p))
728 {
729 return true;
730 }
731 }
732 for (int m = 0; m < num; m++)
733 {
734 num3--;
735 if (IsValid(num2, num3) && endFunc(p))
736 {
737 return true;
738 }
739 }
740 num++;
741 }
742 Debug.Log("ForeachNearestPoint Fail:" + this);
743 return false;
744 bool IsValid(int dx, int dz)
745 {
746 p.Set(dx, dz);
747 if (!p.IsInBounds || !map.Contains(dx, dz) || (ignoreCenter && dx == x && dz == z))
748 {
749 return false;
750 }
751 if ((!allowBlock && (p.cell.blocked || p.cell.hasDoor || (p.cell.growth != null && p.cell.growth.IsTree))) || (!allowChara && p.HasChara) || (!allowInstalled && p.Installed != null))
752 {
753 return false;
754 }
755 return true;
756 }
757 }
758
760 {
761 int num = ((EClass.rnd(2) == 0) ? 1 : (-1));
762 if (EClass.rnd(2) == 0)
763 {
764 return new Point(Mathf.Clamp(x + num, 0, map.Size - 1), z);
765 }
766 return new Point(x, Mathf.Clamp(z + num, 0, map.Size - 1));
767 }
768
769 public Point GetRandomPoint(int radius, bool requireLos = true, bool allowChara = true, bool allowBlocked = false, int tries = 100)
770 {
771 Point point = new Point();
772 for (int i = 0; i < tries; i++)
773 {
774 point.Set(x - radius + EClass.rnd(radius * 2 + 1), z - radius + EClass.rnd(radius * 2 + 1));
775 if (point.IsValid && (allowBlocked || !point.IsBlocked) && (!requireLos || Los.IsVisible(this, point)) && (allowChara || !point.HasChara))
776 {
777 return point;
778 }
779 }
780 return null;
781 }
782
783 public Point GetRandomPointInRadius(int minRadius, int maxRadius, bool requireLos = true, bool allowChara = true, bool allowBlocked = false, int tries = 2000)
784 {
785 Point point = new Point();
786 for (int i = 0; i < tries; i++)
787 {
788 point.Set(x - maxRadius + EClass.rnd(maxRadius * 2 + 1), z - maxRadius + EClass.rnd(maxRadius * 2 + 1));
789 if (point.IsValid && (allowBlocked || !point.IsBlocked) && (allowChara || !point.HasChara))
790 {
791 int num = point.Distance(this);
792 if (num >= minRadius && num <= maxRadius && (!requireLos || Los.IsVisible(this, point)))
793 {
794 return point;
795 }
796 }
797 }
798 return null;
799 }
800
802 {
803 Point point = new Point(this);
804 int num = dest.x - point.x;
805 int num2 = dest.z - point.z;
806 if (Mathf.Abs(num) > 1 || Mathf.Abs(num2) > 1)
807 {
808 int num3 = Mathf.Max(Mathf.Abs(num), Mathf.Abs(num2));
809 point.x += num / num3;
810 point.z += num2 / num3;
811 }
812 return point;
813 }
814
815 public void TalkWitnesses(Chara criminal, string idTalk, int radius = 4, WitnessType type = WitnessType.everyone, Func<Chara, bool> talkIf = null, int chance = 3)
816 {
817 if (talkIf == null)
818 {
819 talkIf = (Chara c) => EClass.rnd(chance) == 0;
820 }
821 foreach (Chara item in ListWitnesses(criminal, radius, type))
822 {
823 if (talkIf(item) && !item.renderer.IsTalking())
824 {
825 item.Talk(idTalk);
826 }
827 }
828 }
829
830 public List<Chara> ListWitnesses(Chara criminal, int radius = 4, WitnessType type = WitnessType.crime, Chara target = null)
831 {
832 List<Chara> list = new List<Chara>();
833 foreach (Point item in map.ListPointsInCircle(this, radius, mustBeWalkable: false))
834 {
835 List<Chara> list2 = item.detail?.charas;
836 if (list2 == null || list2.Count == 0)
837 {
838 continue;
839 }
840 foreach (Chara item2 in list2)
841 {
842 if (item2 == criminal || item2.IsPC || (item2 != target && !item2.CanWitness) || (item2.HasCondition<ConDim>() && EClass.rnd(2) == 0) || item2.conSuspend != null || item2.isParalyzed || item2.IsDisabled)
843 {
844 continue;
845 }
846 switch (type)
847 {
848 case WitnessType.ally:
849 if (!criminal.IsPCFaction || item2.hostility <= Hostility.Neutral)
850 {
851 continue;
852 }
853 break;
854 case WitnessType.crime:
855 if (criminal == null || item2.isBlind || item2.isConfused || (criminal.IsPCParty && (item2.IsPCFaction || item2.IsPCFactionMinion)) || (target == null && item2.OriginalHostility < Hostility.Neutral))
856 {
857 continue;
858 }
859 break;
860 case WitnessType.music:
861 if (item2.hostility <= Hostility.Enemy)
862 {
863 continue;
864 }
865 break;
866 }
867 list.Add(item2);
868 }
869 }
870 return list;
871 }
872
873 public bool TryWitnessCrime(Chara criminal, Chara target = null, int radius = 4, Func<Chara, bool> funcWitness = null)
874 {
875 List<Chara> list = ListWitnesses(criminal, radius, WitnessType.crime, target);
876 bool result = false;
877 if (funcWitness == null)
878 {
879 funcWitness = (Chara c) => EClass.rnd(10) == 0;
880 }
881 foreach (Chara item in list)
882 {
883 if (funcWitness(item))
884 {
885 CallGuard(criminal, item);
886 result = true;
887 target?.DoHostileAction(criminal);
888 if (item != target)
889 {
890 item.DoHostileAction(criminal);
891 }
892 break;
893 }
894 }
895 return result;
896 }
897
898 public void CallGuard(Chara criminal, Chara caller)
899 {
900 if (caller.HasCondition<ConSleep>())
901 {
902 caller.RemoveCondition<ConSleep>();
903 }
904 caller.Talk("callGuards");
905 List<Chara> list = EClass._map.charas.Where((Chara c) => c.trait is TraitGuard && !c.IsInCombat).ToList();
906 if (list.Count > 0)
907 {
908 Chara chara = list.RandomItem();
909 caller.Say("calledGuard", caller);
910 chara.DoHostileAction(criminal);
911 }
913 {
914 EClass._zone.SetAlarm(enable: true);
915 }
916 }
917
918 public void SetBlock(int idMat = 0, int idBlock = 0)
919 {
920 map.SetBlock(x, z, idMat, idBlock);
921 }
922
923 public void SetFloor(int idMat = 0, int idFloor = 0)
924 {
925 map.SetFloor(x, z, idMat, idFloor);
926 }
927
928 public void SetObj(int id = 0, int value = 1, int dir = 0)
929 {
930 map.SetObj(x, z, id, value, dir);
931 }
932
933 public void ModFire(int value, bool extinguish = false)
934 {
935 if (extinguish && cell.HasFire)
936 {
937 PlaySound("extinguish");
938 PlayEffect("smoke");
939 PlayEffect("vanish");
940 }
941 map.ModFire(x, z, value);
942 }
943
944 public void Plow()
945 {
946 if (IsFarmField)
947 {
949 {
951 }
952 else if (cell.Front.HasWallOrFence)
953 {
955 }
956 }
957 SetFloor(4, 4);
958 }
959
960 public bool Equals(int _x, int _z)
961 {
962 if (x == _x)
963 {
964 return z == _z;
965 }
966 return false;
967 }
968
969 public override bool Equals(object obj)
970 {
971 Point point = obj as Point;
972 if (point == null)
973 {
974 Debug.Log(point?.ToString() + ":" + point.GetType()?.ToString() + "is not Point");
975 return false;
976 }
977 if (x == point.x)
978 {
979 return z == point.z;
980 }
981 return false;
982 }
983
984 public override int GetHashCode()
985 {
986 return x + z * map.Size;
987 }
988
989 public int Distance(Point p)
990 {
991 return Fov.Distance(p.x, p.z, x, z);
992 }
993
994 public int Distance(int tx, int tz)
995 {
996 return Fov.Distance(tx, tz, x, z);
997 }
998
999 public bool IsBlockByHeight(Point p)
1000 {
1001 if (Mathf.Abs(p.cell.minHeight - cell.topHeight) > 8)
1002 {
1003 return Mathf.Abs(p.cell.topHeight - cell.minHeight) > 8;
1004 }
1005 return false;
1006 }
1007
1008 public Point Clamp(bool useBounds = false)
1009 {
1010 if (useBounds)
1011 {
1012 if (x < map.bounds.x)
1013 {
1014 x = map.bounds.x;
1015 }
1016 else if (x >= map.bounds.maxX)
1017 {
1018 x = map.bounds.maxX;
1019 }
1020 if (z < map.bounds.z)
1021 {
1022 z = map.bounds.z;
1023 }
1024 else if (z >= map.bounds.maxZ)
1025 {
1026 z = map.bounds.maxZ;
1027 }
1028 }
1029 else
1030 {
1031 if (x < 0)
1032 {
1033 x = 0;
1034 }
1035 else if (x >= map.Size)
1036 {
1037 x = map.Size - 1;
1038 }
1039 if (z < 0)
1040 {
1041 z = 0;
1042 }
1043 else if (z >= map.Size)
1044 {
1045 z = map.Size - 1;
1046 }
1047 }
1048 return this;
1049 }
1050
1051 public List<Card> ListCards(bool includeMasked = false)
1052 {
1053 listCard.Clear();
1054 bool flag = EClass.scene.actionMode != null && EClass.scene.actionMode.IsRoofEditMode();
1055 if (detail != null)
1056 {
1057 foreach (Thing thing in detail.things)
1058 {
1059 if (!thing.isHidden && (includeMasked || !thing.isMasked) && thing.isRoofItem == flag)
1060 {
1061 listCard.Add(thing);
1062 }
1063 }
1064 if (!flag)
1065 {
1066 foreach (Chara chara in detail.charas)
1067 {
1068 listCard.Add(chara);
1069 }
1070 }
1071 }
1072 return listCard;
1073 }
1074
1075 public List<Card> ListVisibleCards()
1076 {
1077 listCard.Clear();
1078 if (detail != null)
1079 {
1080 foreach (Thing thing in detail.things)
1081 {
1082 if (!thing.isHidden && !thing.isMasked && !thing.isRoofItem)
1083 {
1084 listCard.Add(thing);
1085 }
1086 }
1087 foreach (Chara chara in detail.charas)
1088 {
1089 if (EClass.pc.CanSee(chara))
1090 {
1091 listCard.Add(chara);
1092 }
1093 }
1094 }
1095 return listCard;
1096 }
1097
1099 {
1100 foreach (Card item in ListCards())
1101 {
1102 if (item.isChara || item.trait.CanBeAttacked)
1103 {
1104 return item;
1105 }
1106 }
1107 return null;
1108 }
1109
1110 public Chara FindChara(Func<Chara, bool> func)
1111 {
1112 if (detail != null)
1113 {
1114 foreach (Chara chara in detail.charas)
1115 {
1116 if (func(chara))
1117 {
1118 return chara;
1119 }
1120 }
1121 }
1122 return null;
1123 }
1124
1125 public T FindThing<T>() where T : Trait
1126 {
1127 if (IsValid && detail != null)
1128 {
1129 foreach (Thing thing in detail.things)
1130 {
1131 if (thing.trait is T)
1132 {
1133 return thing.trait as T;
1134 }
1135 }
1136 }
1137 return null;
1138 }
1139
1140 public Thing FindThing(Func<Thing, bool> func)
1141 {
1142 if (detail != null)
1143 {
1144 foreach (Thing thing in detail.things)
1145 {
1146 if (func(thing))
1147 {
1148 return thing;
1149 }
1150 }
1151 }
1152 return null;
1153 }
1154
1155 public List<Card> ListThings<T>(bool onlyInstalled = true) where T : Trait
1156 {
1157 listCard.Clear();
1158 if (detail != null)
1159 {
1160 foreach (Thing thing in detail.things)
1161 {
1162 if (!thing.isHidden && !thing.isRoofItem && !thing.isMasked && (!onlyInstalled || thing.IsInstalled) && thing.trait is T)
1163 {
1164 listCard.Add(thing);
1165 }
1166 }
1167 }
1168 return listCard;
1169 }
1170
1171 public List<Chara> ListCharas()
1172 {
1173 listChara.Clear();
1174 if (detail != null)
1175 {
1176 foreach (Chara chara in detail.charas)
1177 {
1178 listChara.Add(chara);
1179 }
1180 }
1181 return listChara;
1182 }
1183
1184 public List<Chara> ListVisibleCharas()
1185 {
1186 listChara.Clear();
1187 if (detail != null)
1188 {
1189 foreach (Chara chara in detail.charas)
1190 {
1191 if (EClass.pc.CanSee(chara))
1192 {
1193 listChara.Add(chara);
1194 }
1195 }
1196 }
1197 return listChara;
1198 }
1199
1200 public List<Chara> ListCharasInNeighbor(Func<Chara, bool> func)
1201 {
1202 listChara.Clear();
1203 ForeachNeighbor(delegate(Point p)
1204 {
1205 if (p.detail == null)
1206 {
1207 return;
1208 }
1209 foreach (Chara chara in p.detail.charas)
1210 {
1211 if (func(chara))
1212 {
1213 listChara.Add(chara);
1214 }
1215 }
1216 });
1217 return listChara;
1218 }
1219
1220 public List<Chara> ListCharasInRadius(Chara cc, int dist, Func<Chara, bool> func, bool onlyVisible = true)
1221 {
1222 listChara.Clear();
1223 foreach (Chara chara in EClass._map.charas)
1224 {
1225 if (func(chara) && chara.Dist(cc) < dist && (!onlyVisible || Los.IsVisible(chara, cc)))
1226 {
1227 listChara.Add(chara);
1228 }
1229 }
1230 return listChara;
1231 }
1232
1233 public T GetInstalled<T>() where T : Trait
1234 {
1235 if (detail != null)
1236 {
1237 foreach (Thing thing in detail.things)
1238 {
1239 if (thing.IsInstalled && thing.trait is T)
1240 {
1241 return thing.trait as T;
1242 }
1243 }
1244 }
1245 return null;
1246 }
1247
1248 public Effect PlayEffect(string id)
1249 {
1250 return Effect.Get(id).Play(this);
1251 }
1252
1253 public SoundSource PlaySound(string id, bool synced = true, float v = 1f, bool spatial = true)
1254 {
1255 Vector3 vector = default(Vector3);
1256 if (spatial)
1257 {
1258 if (!IsValid)
1259 {
1260 return null;
1261 }
1262 vector = (EClass._zone.IsRegion ? PositionTopdown() : Position());
1263 vector.z = 0f;
1264 if (Vector3.Distance(vector, EClass.scene.transAudio.position) > EClass.core.gameSetting.audio.maxRange)
1265 {
1266 return null;
1267 }
1268 if (!synced)
1269 {
1270 v -= 0.4f;
1271 }
1272 }
1273 return EClass.Sound.Play(id, vector, (!spatial) ? 1f : (v * ((EClass.screen.Zoom >= 1f) ? 1f : EClass.screen.Zoom)));
1274 }
1275
1277 {
1278 map.RefreshNeighborTiles(x, z);
1279 }
1280
1281 public void RefreshTile()
1282 {
1283 map.RefreshSingleTile(x, z);
1284 }
1285
1286 public bool HasNonHomeProperty(Thing exclude = null)
1287 {
1288 if (FirstThing == null)
1289 {
1290 return false;
1291 }
1292 foreach (Thing thing in detail.things)
1293 {
1294 if (thing != exclude && thing.isNPCProperty)
1295 {
1296 return true;
1297 }
1298 }
1299 return false;
1300 }
1301
1302 public void Animate(AnimeID id, bool animeBlock = false)
1303 {
1304 if (!IsValid)
1305 {
1306 return;
1307 }
1308 CellDetail orCreateDetail = cell.GetOrCreateDetail();
1309 if (orCreateDetail.anime == null)
1310 {
1311 TransAnime transAnime = (orCreateDetail.anime = new TransAnime
1312 {
1313 data = ResourceCache.Load<TransAnimeData>("Scene/Render/Anime/" + id),
1314 point = this,
1315 animeBlock = animeBlock
1316 }.Init());
1317 EClass._map.pointAnimes.Add(transAnime);
1318 if (id == AnimeID.Quake)
1319 {
1320 transAnime.drawBlock = true;
1321 }
1322 }
1323 }
1324
1326 {
1327 if (detail == null || detail.anime == null)
1328 {
1329 return p;
1330 }
1331 p.x += detail.anime.v.x;
1332 p.y += detail.anime.v.y;
1333 p.z += detail.anime.v.z;
1334 p.v.x += detail.anime.v.x;
1335 p.v.y += detail.anime.v.y;
1336 p.v.z += detail.anime.v.z;
1337 return p;
1338 }
1339
1340 public Vector3 ApplyAnime(ref Vector3 p)
1341 {
1342 if (detail == null || detail.anime == null)
1343 {
1344 return p;
1345 }
1346 p.x += detail.anime.v.x;
1347 p.y += detail.anime.v.y;
1348 p.z += detail.anime.v.z;
1349 return p;
1350 }
1351
1352 public List<IInspect> ListInspectorTargets()
1353 {
1354 List<IInspect> list = new List<IInspect>();
1355 CellDetail cellDetail = detail;
1356 if (cellDetail != null)
1357 {
1358 foreach (Chara chara in cellDetail.charas)
1359 {
1360 if (chara.isSynced)
1361 {
1362 list.Add(chara);
1363 }
1364 }
1365 foreach (Thing thing in cellDetail.things)
1366 {
1367 list.Add(thing);
1368 }
1369 if (cellDetail.designation != null && !(cellDetail.designation is TaskCut) && !(cellDetail.designation is TaskMine))
1370 {
1371 list.Add(cellDetail.designation);
1372 }
1373 }
1374 if (ObjInfo._CanInspect(this))
1375 {
1376 list.Add(ObjInfo.GetTempList(this));
1377 }
1378 if (BlockInfo._CanInspect(this))
1379 {
1380 list.Add(BlockInfo.GetTempList(this));
1381 }
1382 return list;
1383 }
1384
1385 public void ForeachMultiSize(int w, int h, Action<Point, bool> action)
1386 {
1387 for (int i = 0; i < h; i++)
1388 {
1389 for (int j = 0; j < w; j++)
1390 {
1391 shared3.Set(x - j, z + i);
1392 action(shared3, j == 0 && i == 0);
1393 }
1394 }
1395 }
1396
1397 public void ForeachNeighbor(Action<Point> action, bool diagonal = true)
1398 {
1399 Point point = new Point();
1400 for (int i = x - 1; i <= x + 1; i++)
1401 {
1402 for (int j = z - 1; j <= z + 1; j++)
1403 {
1404 if (diagonal || i == x || j == z)
1405 {
1406 point.Set(i, j);
1407 if (point.IsValid)
1408 {
1409 action(point);
1410 }
1411 }
1412 }
1413 }
1414 }
1415
1417 {
1418 Point point = new Point(x, z);
1419 point.x += EClass.scene.elomap.minX;
1420 point.z += EClass.scene.elomap.minY;
1421 return point;
1422 }
1423
1424 public void SetHighlight(int id)
1425 {
1426 cell.highlight = (byte)id;
1428 }
1429}
AnimeID
Definition: AnimeID.cs:2
Hostility
Definition: Hostility.cs:2
WitnessType
Definition: WitnessType.cs:2
virtual bool IsRoofEditMode(Card c=null)
Definition: ActionMode.cs:311
virtual bool IsPublicArea
Definition: AreaType.cs:20
Definition: Area.cs:4
AreaType type
Definition: BaseArea.cs:32
Vector3 tileWeight
BaseTileMap tileMap
bool hideRoomFog
Definition: BaseTileMap.cs:281
Vector3 _heightMod
Definition: BaseTileMap.cs:335
static bool _CanInspect(Point pos)
Definition: BlockInfo.cs:31
static BlockInfo GetTempList(Point _pos)
Definition: BlockInfo.cs:21
Definition: Card.cs:11
bool IsPCFactionOrMinion
Definition: Card.cs:2260
bool isMasked
Definition: Card.cs:590
bool isNPCProperty
Definition: Card.cs:554
bool isRoofItem
Definition: Card.cs:578
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:6668
Trait trait
Definition: Card.cs:53
bool IsInstalled
Definition: Card.cs:2369
int Dist(Card c)
Definition: Card.cs:7614
bool isHidden
Definition: Card.cs:530
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6765
TaskDesignation designation
Definition: CellDetail.cs:19
List< Thing > things
Definition: CellDetail.cs:11
TransAnime anime
Definition: CellDetail.cs:21
List< Chara > charas
Definition: CellDetail.cs:13
Area area
Definition: CellDetail.cs:15
Definition: Cell.cs:7
byte _block
Definition: Cell.cs:30
Room room
Definition: Cell.cs:102
bool HasWallOrFence
Definition: Cell.cs:831
SourceBlock.Row sourceBlock
Definition: Cell.cs:1052
SourceMaterial.Row matBlock
Definition: Cell.cs:1030
SourceFloor.Row sourceFloor
Definition: Cell.cs:1054
SourceMaterial.Row matRoofBlock
Definition: Cell.cs:1028
bool IsTopWaterAndNoSnow
Definition: Cell.cs:712
Cell Front
Definition: Cell.cs:129
CellDetail GetOrCreateDetail()
Definition: Cell.cs:1533
List< Thing > Things
Definition: Cell.cs:986
SourceMaterial.Row matBridge
Definition: Cell.cs:1034
bool pcSync
Definition: Cell.cs:104
byte topHeight
Definition: Cell.cs:78
byte minHeight
Definition: Cell.cs:80
bool IsTopWater
Definition: Cell.cs:700
List< Chara > Charas
Definition: Cell.cs:988
byte height
Definition: Cell.cs:72
GrowSystem growth
Definition: Cell.cs:225
SourceFloor.Row sourceBridge
Definition: Cell.cs:1056
CellDetail detail
Definition: Cell.cs:92
bool HasRoof
Definition: Cell.cs:648
SourceMaterial.Row matFloor
Definition: Cell.cs:1032
bool isSeen
Definition: Cell.cs:282
SourceObj.Row sourceObj
Definition: Cell.cs:1072
bool HasFire
Definition: Cell.cs:676
SourceBlock.Row sourceRoofBlock
Definition: Cell.cs:1050
Point GetPoint()
Definition: Cell.cs:1101
Cell Right
Definition: Cell.cs:141
bool HasRamp
Definition: Cell.cs:837
byte bridgeHeight
Definition: Cell.cs:74
bool hasDoor
Definition: Cell.cs:258
bool HasRampOrLadder
Definition: Cell.cs:842
Definition: Chara.cs:10
Hostility OriginalHostility
Definition: Chara.cs:471
ConSuspend conSuspend
Definition: Chara.cs:104
override bool IsPC
Definition: Chara.cs:612
bool isParalyzed
Definition: Chara.cs:132
bool IsInCombat
Definition: Chara.cs:864
bool HasCondition(string alias)
Definition: Chara.cs:9289
override bool IsDisabled
Definition: Chara.cs:585
override bool isSynced
Definition: Chara.cs:691
override bool IsPCFaction
Definition: Chara.cs:671
bool CanSee(Card c)
Definition: Chara.cs:1218
override bool IsPCFactionMinion
Definition: Chara.cs:655
void DoHostileAction(Card _tg, bool immediate=false)
Definition: Chara.cs:6266
bool isBlind
Definition: Chara.cs:130
Hostility hostility
Definition: Chara.cs:291
bool CanWitness
Definition: Chara.cs:1003
bool isConfused
Definition: Chara.cs:126
Definition: ConDim.cs:2
bool enable
Definition: CoreDebug.cs:286
GameSetting gameSetting
Definition: Core.cs:47
bool IsNight
Definition: Date.cs:112
Definition: EClass.cs:5
static Scene scene
Definition: EClass.cs:30
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
static World world
Definition: EClass.cs:40
static Map _map
Definition: EClass.cs:18
static int rnd(long a)
Definition: EClass.cs:58
static BaseGameScreen screen
Definition: EClass.cs:32
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
static SoundManager Sound
Definition: EClass.cs:46
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:85
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
bool Has(int ele)
int minX
Definition: EloMap.cs:112
int minY
Definition: EloMap.cs:114
Definition: Fov.cs:6
static int Distance(int x1, int y1, int x2, int y2)
Definition: Fov.cs:134
AudioSetting audio
Definition: GameSetting.cs:297
virtual bool IsTree
Definition: GrowSystem.cs:87
Definition: Los.cs:5
static bool IsVisible(Point p1, Point p2, Action< Point, bool > _onVisit=null)
Definition: Los.cs:167
int Size
Definition: MapBounds.cs:20
int maxZ
Definition: MapBounds.cs:17
int maxX
Definition: MapBounds.cs:14
int x
Definition: MapBounds.cs:8
bool Contains(int dx, int dz)
Definition: MapBounds.cs:38
Definition: Map.cs:13
bool IsIndoor
Definition: Map.cs:131
void RefreshNeighborTiles(int x, int z)
Definition: Map.cs:2119
void RefreshSingleTile(int x, int z)
Definition: Map.cs:2103
List< Thing > things
Definition: Map.cs:49
void ModFire(int x, int z, int amount)
Definition: Map.cs:1172
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:957
void SetBlock(int x, int z, int idMat=0, int idBlock=0)
Definition: Map.cs:996
Cell[,] cells
Definition: Map.cs:85
List< Point > ListPointsInCircle(Point center, float radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2278
List< Chara > charas
Definition: Map.cs:81
List< TransAnime > pointAnimes
Definition: Map.cs:83
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1535
static HashSet< int > sunMap
Definition: Map.cs:14
MapBounds bounds
Definition: Map.cs:52
static bool _CanInspect(Point pos)
Definition: ObjInfo.cs:67
static ObjInfo GetTempList(Point _pos)
Definition: ObjInfo.cs:57
List< Cell > lastMarkedHighlights
Definition: Player.cs:1145
Definition: Point.cs:9
Thing Installed
Definition: Point.cs:327
int eloY
Definition: Point.cs:81
static Point shared
Definition: Point.cs:20
SourceMaterial.Row matBlock
Definition: Point.cs:55
SourceMaterial.Row matFloor
Definition: Point.cs:57
static Point GetShared(int x, int z)
Definition: Point.cs:390
int Distance(int tx, int tz)
Definition: Point.cs:994
SourceMaterial.Row matRoofBlock
Definition: Point.cs:53
int index
Definition: Point.cs:49
static Point Invalid
Definition: Point.cs:28
bool HasDirt
Definition: Point.cs:85
Vector3 vCache
Definition: Point.cs:41
bool IsBlockByHeight(Point p)
Definition: Point.cs:999
List< Chara > ListWitnesses(Chara criminal, int radius=4, WitnessType type=WitnessType.crime, Chara target=null)
Definition: Point.cs:830
bool IsSeen
Definition: Point.cs:342
SourceBlock.Row sourceBlock
Definition: Point.cs:63
bool HasFence
Definition: Point.cs:170
bool HasDecal
Definition: Point.cs:139
void ForeachMultiSize(int w, int h, Action< Point, bool > action)
Definition: Point.cs:1385
void SetObj(int id=0, int value=1, int dir=0)
Definition: Point.cs:928
Point Set(Point point)
Definition: Point.cs:517
List< Card > ListThings< T >(bool onlyInstalled=true)
Definition: Point.cs:1155
void Plow()
Definition: Point.cs:944
List< Card > ListVisibleCards()
Definition: Point.cs:1075
ref Vector3 Position(int height)
Definition: Point.cs:548
bool HasBridge
Definition: Point.cs:221
void SetHighlight(int id)
Definition: Point.cs:1424
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1051
float GetAngle(Point to)
Definition: Point.cs:607
static Point shared2
Definition: Point.cs:22
Vector3 ApplyAnime(ref Vector3 p)
Definition: Point.cs:1340
RenderParam ApplyAnime(RenderParam p)
Definition: Point.cs:1325
bool HasWall
Definition: Point.cs:158
Point Copy()
Definition: Point.cs:491
bool IsSky
Definition: Point.cs:224
Point(Point p)
Definition: Point.cs:474
ref Vector3 PositionTopdownTreasure()
Definition: Point.cs:578
bool HasDesignation
Definition: Point.cs:83
override string ToString()
Definition: Point.cs:524
Point Set(int _x, int _z)
Definition: Point.cs:503
List< IInspect > ListInspectorTargets()
Definition: Point.cs:1352
ref Vector3 PositionTopdown()
Definition: Point.cs:569
ref Vector3 PositionAuto()
Definition: Point.cs:539
T FindThing< T >()
Definition: Point.cs:1125
static Point Zero
Definition: Point.cs:33
void ForeachNeighbor(Action< Point > action, bool diagonal=true)
Definition: Point.cs:1397
CellDetail detail
Definition: Point.cs:71
Thing LastThing
Definition: Point.cs:314
bool HasTaskBuild
Definition: Point.cs:206
bool HasRail
Definition: Point.cs:133
Point(int _x, int _z)
Definition: Point.cs:480
bool IsBlocked
Definition: Point.cs:363
bool HasMultipleChara
Definition: Point.cs:264
bool IsWater
Definition: Point.cs:129
Quaternion GetRotation(Point to)
Definition: Point.cs:602
List< Thing > Things
Definition: Point.cs:338
int x
Definition: Point.cs:36
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
Definition: Point.cs:619
bool HasWallOrFence
Definition: Point.cs:155
void RefreshTile()
Definition: Point.cs:1281
bool HasNonHomeProperty(Thing exclude=null)
Definition: Point.cs:1286
bool IsInBoundsPlus
Definition: Point.cs:116
void ModFire(int value, bool extinguish=false)
Definition: Point.cs:933
int z
Definition: Point.cs:39
bool IsFarmField
Definition: Point.cs:127
bool IsSync
Definition: Point.cs:344
SourceMaterial.Row matBridge
Definition: Point.cs:59
List< Chara > Charas
Definition: Point.cs:340
void SetFloor(int idMat=0, int idFloor=0)
Definition: Point.cs:923
void CallGuard(Chara criminal, Chara caller)
Definition: Point.cs:898
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
Definition: Point.cs:1253
override bool Equals(object obj)
Definition: Point.cs:969
int eloX
Definition: Point.cs:79
List< Chara > ListCharasInNeighbor(Func< Chara, bool > func)
Definition: Point.cs:1200
ref Vector3 PositionCenter()
Definition: Point.cs:587
Point GetPointTowards(Point dest)
Definition: Point.cs:801
bool HasBlockRecipe
Definition: Point.cs:217
List< Chara > ListCharasInRadius(Chara cc, int dist, Func< Chara, bool > func, bool onlyVisible=true)
Definition: Point.cs:1220
bool HasThing
Definition: Point.cs:251
SourceObj.Row sourceObj
Definition: Point.cs:69
Chara FindChara(Func< Chara, bool > func)
Definition: Point.cs:1110
bool Equals(int _x, int _z)
Definition: Point.cs:960
bool HasMinableBlock
Definition: Point.cs:144
static BaseGameScreen _screen
Definition: Point.cs:43
List< Chara > ListCharas()
Definition: Point.cs:1171
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:873
SourceFloor.Row sourceFloor
Definition: Point.cs:65
bool IsSunLit
Definition: Point.cs:182
Card FindAttackTarget()
Definition: Point.cs:1098
static List< Chara > listChara
Definition: Point.cs:47
T Copy< T >()
Definition: Point.cs:496
void TalkWitnesses(Chara criminal, string idTalk, int radius=4, WitnessType type=WitnessType.everyone, Func< Chara, bool > talkIf=null, int chance=3)
Definition: Point.cs:815
void SetBlock(int idMat=0, int idBlock=0)
Definition: Point.cs:918
bool HasArea
Definition: Point.cs:235
Chara FirstVisibleChara()
Definition: Point.cs:406
bool Within(int _x, int _z, int _w, int _h)
Definition: Point.cs:397
bool IsValid
Definition: Point.cs:88
override int GetHashCode()
Definition: Point.cs:984
Effect PlayEffect(string id)
Definition: Point.cs:1248
bool HasObj
Definition: Point.cs:137
void RefreshNeighborTiles()
Definition: Point.cs:1276
ref Vector3 Position()
Definition: Point.cs:560
bool HasRoomOrArea(BaseArea a)
Definition: Point.cs:421
bool HasRamp
Definition: Point.cs:131
static readonly XY[] Surrounds
Definition: Point.cs:10
Point Front
Definition: Point.cs:75
bool HasRampOrLadder
Definition: Point.cs:135
Area area
Definition: Point.cs:73
Point ToRegionPos()
Definition: Point.cs:1416
bool HasFloor
Definition: Point.cs:219
Point(int _index)
Definition: Point.cs:486
Point()
Definition: Point.cs:470
bool ForeachNearestPoint(Func< Point, bool > endFunc, bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int maxRange=30)
Definition: Point.cs:691
Point GetRandomPointInRadius(int minRadius, int maxRadius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=2000)
Definition: Point.cs:783
int Distance(Point p)
Definition: Point.cs:989
bool IsHidden
Definition: Point.cs:347
static Point shared3
Definition: Point.cs:24
Chara FirstChara
Definition: Point.cs:288
Thing FirstThing
Definition: Point.cs:301
Point Clamp(bool useBounds=false)
Definition: Point.cs:1008
bool HasBlock
Definition: Point.cs:141
static List< Card > listCard
Definition: Point.cs:45
bool IsInBounds
Definition: Point.cs:104
void Set(Vector3 v)
Definition: Point.cs:529
Cell cell
Definition: Point.cs:51
float GetAngle2(Point to)
Definition: Point.cs:613
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1140
Point GetRandomNeighbor()
Definition: Point.cs:759
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1302
static Vector3 fixedPos
Definition: Point.cs:18
SourceFloor.Row sourceBridge
Definition: Point.cs:67
bool IsPublicSpace()
Definition: Point.cs:449
GrowSystem growth
Definition: Point.cs:77
List< Chara > ListVisibleCharas()
Definition: Point.cs:1184
bool HasChara
Definition: Point.cs:238
bool HasNonWallBlock
Definition: Point.cs:194
bool IsHotSpring
Definition: Point.cs:375
bool IsInSpot< T >()
Definition: Point.cs:430
SourceBlock.Row sourceRoofBlock
Definition: Point.cs:61
Point Set(int index)
Definition: Point.cs:510
bool IsDeepWater
Definition: Point.cs:276
static Map map
Definition: Point.cs:26
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:769
Transform transAudio
Definition: Scene.cs:31
ActionMode actionMode
Definition: Scene.cs:79
EloMap elomap
Definition: Scene.cs:149
GameScreenElona screenElona
Definition: Scene.cs:95
bool isAlarmSet
Definition: Spatial.cs:430
virtual bool IsRegion
Definition: Spatial.cs:515
Definition: Thing.cs:8
static TileTypeSky Sky
Definition: TileType.cs:71
Definition: Trait.cs:7
virtual int radius
Definition: Trait.cs:93
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:756
Vector3 v
Definition: TransAnime.cs:5
GameDate date
Definition: World.cs:6
virtual bool SetAlarmOnBreakLaw
Definition: Zone.cs:228
ElementContainerZone elements
Definition: Zone.cs:43
virtual bool IsUnderwater
Definition: Zone.cs:266
virtual void SetAlarm(bool enable)
Definition: Zone.cs:3552
Definition: XY.cs:2