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