Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
Critter.cs
Go to the documentation of this file.
1using UnityEngine;
2
3public class Critter : EClass
4{
5 public const float R = 0.12f;
6
7 public int tile;
8
9 public int index;
10
11 public Vector2 dir;
12
13 public float x;
14
15 public float y;
16
17 public float dirTimer;
18
19 public float animeTimer;
20
21 public float speed = 0.1f;
22
23 public bool reverse;
24
25 public virtual int[] animeTiles => null;
26
27 public virtual int[] idleTiles => null;
28
29 public virtual int AnimeTile => animeTiles[index % animeTiles.Length];
30
31 public virtual int IdleTile => idleTiles[index % idleTiles.Length];
32
33 public virtual int SnowTile => 0;
34
35 public virtual int Interval => 5;
36
37 public virtual float BaseSpeed => 1f;
38
39 public static Critter Create(Cell cell)
40 {
41 BiomeProfile biomeProfile = cell.sourceFloor.biome ?? EClass.core.refs.biomes.Plain;
42 if (biomeProfile == null)
43 {
44 return null;
45 }
46 if (cell.IsTopWater)
47 {
48 if (EClass.rnd(12) == 0)
49 {
50 return new CritterFish();
51 }
52 return null;
53 }
54 if (biomeProfile.id == BiomeID.Snow)
55 {
56 return null;
57 }
58 if (EClass.rnd(12) == 0)
59 {
60 return new CritterFrog();
61 }
62 if (EClass.rnd(6) == 0)
63 {
64 return new CritterFrogSmall();
65 }
66 if (EClass.rnd(12) == 0)
67 {
68 return new CritterCancer();
69 }
70 if (EClass.rnd(6) == 0)
71 {
72 return new CritterCancerSmall();
73 }
74 if (EClass.rnd(12) == 0)
75 {
76 return new CritterRat();
77 }
78 if (EClass.rnd(6) == 0)
79 {
80 return new CritterRatSmall();
81 }
82 if (EClass.rnd(12) == 0)
83 {
84 return new CritterRoach();
85 }
86 if (EClass.rnd(6) == 0)
87 {
88 return new CritterRoachSmall();
89 }
90 return new CritterRandom();
91 }
92
93 public static void RebuildCritter(Cell cell)
94 {
95 cell.critter = null;
96 if (cell.sourceObj.id == 68)
97 {
98 cell.critter = new CritterFish();
99 }
100 }
101
102 public void Update()
103 {
104 float gameDelta = Core.gameDelta;
105 animeTimer -= gameDelta * speed * 100f;
106 if (animeTimer < 0f)
107 {
108 index++;
109 animeTimer = 2f;
110 }
111 if (dir.x != 0f || dir.y != 0f)
112 {
113 tile = AnimeTile;
114 }
115 else
116 {
117 tile = IdleTile;
118 }
119 dirTimer -= gameDelta;
120 if (dirTimer < 0f)
121 {
123 dir.x = EClass.rnd(3) - 1;
124 dir.y = EClass.rnd(3) - 1;
125 speed = 0.01f * (float)(EClass.rnd(20) + 1) * BaseSpeed;
126 reverse = dir.x > 0f;
127 }
128 x += dir.x * gameDelta * speed;
129 if (x > 0.12f)
130 {
131 x = 0.12f;
132 dir.x = 0f;
133 }
134 else if (x < -0.12f)
135 {
136 x = -0.12f;
137 dir.x = 0f;
138 }
139 y += dir.y * gameDelta * speed;
140 if (y > 0.12f)
141 {
142 y = 0.12f;
143 dir.y = 0f;
144 }
145 else if (y < -0.12f)
146 {
147 y = -0.12f;
148 dir.y = 0f;
149 }
150 }
151}
BiomeID
Definition: BiomeID.cs:2
Definition: Cell.cs:7
bool IsTopWater
Definition: Cell.cs:700
SourceObj.Row sourceObj
Definition: Cell.cs:1072
BiomeProfile Plain
Definition: CoreRef.cs:144
Biomes biomes
Definition: CoreRef.cs:325
Definition: Core.cs:14
CoreRef refs
Definition: Core.cs:51
static float gameDelta
Definition: Core.cs:21
float speed
Definition: Critter.cs:21
virtual int[] idleTiles
Definition: Critter.cs:27
float animeTimer
Definition: Critter.cs:19
virtual int IdleTile
Definition: Critter.cs:31
int index
Definition: Critter.cs:9
virtual int Interval
Definition: Critter.cs:35
virtual int[] animeTiles
Definition: Critter.cs:25
virtual int AnimeTile
Definition: Critter.cs:29
bool reverse
Definition: Critter.cs:23
void Update()
Definition: Critter.cs:102
virtual int SnowTile
Definition: Critter.cs:33
const float R
Definition: Critter.cs:5
float dirTimer
Definition: Critter.cs:17
float x
Definition: Critter.cs:13
static Critter Create(Cell cell)
Definition: Critter.cs:39
Vector2 dir
Definition: Critter.cs:11
int tile
Definition: Critter.cs:7
virtual float BaseSpeed
Definition: Critter.cs:37
float y
Definition: Critter.cs:15
static void RebuildCritter(Cell cell)
Definition: Critter.cs:93
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Core core
Definition: EClass.cs:6