Elin Modding Docs Doc
Loading...
Searching...
No Matches
BiomeProfile.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using NoiseSystem;
5using UnityEngine;
6
7// Token: 0x0200065B RID: 1627
9{
10 // Token: 0x17000CF3 RID: 3315
11 // (get) Token: 0x06002DBE RID: 11710 RVA: 0x001006ED File Offset: 0x000FE8ED
12 public BiomeProfile.TileGroup exterior
13 {
14 get
15 {
16 return this._exterior;
17 }
18 }
19
20 // Token: 0x17000CF4 RID: 3316
21 // (get) Token: 0x06002DBF RID: 11711 RVA: 0x001006F5 File Offset: 0x000FE8F5
22 public BiomeProfile.TileGroup interior
23 {
24 get
25 {
26 if (this._interior.floor.id != 0)
27 {
28 return this._interior;
29 }
30 return this.exterior;
31 }
32 }
33
34 // Token: 0x17000CF5 RID: 3317
35 // (get) Token: 0x06002DC0 RID: 11712 RVA: 0x00100718 File Offset: 0x000FE918
36 public SourceMaterial.Row MatFloor
37 {
38 get
39 {
40 SourceMaterial.Row result;
41 if ((result = this._mat) == null)
42 {
43 result = (this._mat = EClass.sources.materials.map[this.exterior.floor.mat]);
44 }
45 return result;
46 }
47 }
48
49 // Token: 0x17000CF6 RID: 3318
50 // (get) Token: 0x06002DC1 RID: 11713 RVA: 0x0010075C File Offset: 0x000FE95C
51 public SourceMaterial.Row MatSub
52 {
53 get
54 {
55 SourceMaterial.Row result;
56 if ((result = this._matSub) == null)
57 {
58 result = (this._matSub = ((this.exterior.floor.matSub == 0) ? this.MatFloor : EClass.sources.materials.map[this.exterior.floor.matSub]));
59 }
60 return result;
61 }
62 }
63
64 // Token: 0x06002DC2 RID: 11714 RVA: 0x001007BC File Offset: 0x000FE9BC
65 public void Populate(Point point, bool interior = false)
66 {
67 Cell cell = point.cell;
68 if (cell.obj != 0 || cell.Things.Count > 0)
69 {
70 return;
71 }
72 int count = this.cluster.obj.Count;
73 for (int i = 0; i < count + this.cluster.thing.Count; i++)
74 {
75 BiomeProfile.Cluster cluster = (i >= count) ? this.cluster.thing[i - count] : this.cluster.obj[i];
76 if (cluster.density == 0f)
77 {
78 return;
79 }
80 if (Rand.Range(0f, 1f) <= cluster.density)
81 {
82 BiomeProfile.Cluster.Type type = cluster.type;
83 switch (type)
84 {
85 case BiomeProfile.Cluster.Type.ScatterExterior:
86 if (interior)
87 {
88 goto IL_185;
89 }
90 break;
91 case BiomeProfile.Cluster.Type.ScatterInterior:
92 if (!interior)
93 {
94 goto IL_185;
95 }
96 break;
97 case BiomeProfile.Cluster.Type.ScatterNonObstacle:
98 if ((cell.Left.HasObstacle() ? 1 : 0) + (cell.Right.HasObstacle() ? 1 : 0) + (cell.Front.HasObstacle() ? 1 : 0) + (cell.Back.HasObstacle() ? 1 : 0) > 0)
99 {
100 goto IL_185;
101 }
102 break;
103 default:
104 if (type == BiomeProfile.Cluster.Type.ByWall)
105 {
106 if (cell.Left.hasDoor || cell.Right.hasDoor || cell.Front.hasDoor || cell.Back.hasDoor || (!cell.Left.HasBlock && !cell.Right.HasBlock && !cell.Front.HasBlock && !cell.Back.HasBlock))
107 {
108 goto IL_185;
109 }
110 }
111 break;
112 }
113 if (cluster.TryCreate(point))
114 {
115 return;
116 }
117 }
118 IL_185:;
119 }
120 }
121
122 // Token: 0x06002DC3 RID: 11715 RVA: 0x0010096C File Offset: 0x000FEB6C
123 public static void Init()
124 {
125 if (!BiomeProfile.forceInitialize)
126 {
127 return;
128 }
129 Debug.Log("Initializing Clusters");
130 foreach (BiomeProfile biomeProfile in EClass.core.refs.biomes.dict.Values)
131 {
132 biomeProfile.Reset();
133 }
134 BiomeProfile.forceInitialize = false;
135 }
136
137 // Token: 0x06002DC4 RID: 11716 RVA: 0x001009E4 File Offset: 0x000FEBE4
138 public void Reset()
139 {
140 this._mat = null;
141 this._matSub = null;
142 }
143
144 // Token: 0x040019CC RID: 6604
145 public static bool forceInitialize;
146
147 // Token: 0x040019CD RID: 6605
148 public NoiseLayer layerBlock;
149
150 // Token: 0x040019CE RID: 6606
151 public BiomeID id;
152
153 // Token: 0x040019CF RID: 6607
154 public Color color;
155
156 // Token: 0x040019D0 RID: 6608
157 public FowProfile fowProfile;
158
159 // Token: 0x040019D1 RID: 6609
160 public BiomeProfile.TileGroup _exterior;
161
162 // Token: 0x040019D2 RID: 6610
163 public BiomeProfile.TileGroup _interior;
164
165 // Token: 0x040019D3 RID: 6611
166 public BiomeProfile.Style style;
167
168 // Token: 0x040019D4 RID: 6612
169 public BiomeProfile.Spawns spawn;
170
171 // Token: 0x040019D5 RID: 6613
172 public BiomeProfile.Clusters cluster;
173
174 // Token: 0x040019D6 RID: 6614
175 public string tags;
176
177 // Token: 0x040019D7 RID: 6615
178 public int floor_height;
179
180 // Token: 0x040019D8 RID: 6616
181 [NonSerialized]
182 private SourceMaterial.Row _mat;
183
184 // Token: 0x040019D9 RID: 6617
185 [NonSerialized]
186 private SourceMaterial.Row _matSub;
187
188 // Token: 0x02000BC9 RID: 3017
189 public enum DoorStyle
190 {
191 // Token: 0x04002F3F RID: 12095
192 simpleWood,
193 // Token: 0x04002F40 RID: 12096
194 FirmWood,
195 // Token: 0x04002F41 RID: 12097
196 Stone,
197 // Token: 0x04002F42 RID: 12098
198 Jail,
199 // Token: 0x04002F43 RID: 12099
200 Rune
201 }
202
203 // Token: 0x02000BCA RID: 3018
204 public enum StairsStyle
205 {
206 // Token: 0x04002F45 RID: 12101
207 Soil,
208 // Token: 0x04002F46 RID: 12102
209 Wood,
210 // Token: 0x04002F47 RID: 12103
211 Stone,
212 // Token: 0x04002F48 RID: 12104
213 Rock
214 }
215
216 // Token: 0x02000BCB RID: 3019
217 public class BaseTile
218 {
219 // Token: 0x06004582 RID: 17794 RVA: 0x0015EEA8 File Offset: 0x0015D0A8
220 protected string _GetThing(string id)
221 {
222 if (id.IsEmpty())
223 {
224 return "-";
225 }
226 SourceThing.Row row = EClass.editorSources.things.rows.First((SourceThing.Row a) => a.id == id);
227 if (row != null)
228 {
229 return row.id + "-(" + row.name_JP + ")";
230 }
231 return "-";
232 }
233
234 // Token: 0x06004583 RID: 17795 RVA: 0x0015EF1C File Offset: 0x0015D11C
235 protected void _SetThing(ref string id, string value)
236 {
237 id = EClass.editorSources.things.rows.First((SourceThing.Row a) => a.id == value.Split('-', StringSplitOptions.None)[0]).id;
238 }
239
240 // Token: 0x06004584 RID: 17796 RVA: 0x0015EF5D File Offset: 0x0015D15D
241 protected IEnumerable<string> ThingRows()
242 {
243 return EClass.editorSources.things.GetListString();
244 }
245
246 // Token: 0x06004585 RID: 17797 RVA: 0x0015EF70 File Offset: 0x0015D170
247 protected string _GetObj(int id)
248 {
249 SourceObj.Row row = EClass.editorSources.objs.rows.First((SourceObj.Row a) => a.id == id);
250 if (row != null)
251 {
252 return string.Concat(new string[]
253 {
254 row.id.ToString(),
255 "-",
256 row.alias,
257 "(",
258 row.name_JP,
259 ")"
260 });
261 }
262 return "-";
263 }
264
265 // Token: 0x06004586 RID: 17798 RVA: 0x0015EFF8 File Offset: 0x0015D1F8
266 protected void _SetObj(ref int id, string value)
267 {
268 id = EClass.editorSources.objs.rows.First((SourceObj.Row a) => a.id == int.Parse(value.Split('-', StringSplitOptions.None)[0])).id;
269 }
270
271 // Token: 0x06004587 RID: 17799 RVA: 0x0015F039 File Offset: 0x0015D239
272 protected IEnumerable<string> ObjRows()
273 {
274 return EClass.editorSources.objs.GetListString();
275 }
276
277 // Token: 0x06004588 RID: 17800 RVA: 0x0015F04C File Offset: 0x0015D24C
278 protected string _GetFloor(int id)
279 {
280 SourceFloor.Row row = EClass.editorSources.floors.rows.First((SourceFloor.Row a) => a.id == id);
281 if (row != null)
282 {
283 return string.Concat(new string[]
284 {
285 row.id.ToString(),
286 "-",
287 row.alias,
288 "(",
289 row.name_JP,
290 ")"
291 });
292 }
293 return "-";
294 }
295
296 // Token: 0x06004589 RID: 17801 RVA: 0x0015F0D4 File Offset: 0x0015D2D4
297 protected void _SetFloor(ref int id, string value)
298 {
299 id = EClass.editorSources.floors.rows.First((SourceFloor.Row a) => a.id == int.Parse(value.Split('-', StringSplitOptions.None)[0])).id;
300 }
301
302 // Token: 0x0600458A RID: 17802 RVA: 0x0015F115 File Offset: 0x0015D315
303 protected IEnumerable<string> FloorRows()
304 {
305 return EClass.editorSources.floors.GetListString();
306 }
307
308 // Token: 0x0600458B RID: 17803 RVA: 0x0015F128 File Offset: 0x0015D328
309 protected string _GetBlock(int id)
310 {
311 SourceBlock.Row row = EClass.editorSources.blocks.rows.First((SourceBlock.Row a) => a.id == id);
312 if (row != null)
313 {
314 return string.Concat(new string[]
315 {
316 row.id.ToString(),
317 "-",
318 row.alias,
319 "(",
320 row.name_JP,
321 ")"
322 });
323 }
324 return "-";
325 }
326
327 // Token: 0x0600458C RID: 17804 RVA: 0x0015F1B0 File Offset: 0x0015D3B0
328 protected void _SetBlock(ref int id, string value)
329 {
330 id = EClass.editorSources.blocks.rows.First((SourceBlock.Row a) => a.id == int.Parse(value.Split('-', StringSplitOptions.None)[0])).id;
331 }
332
333 // Token: 0x0600458D RID: 17805 RVA: 0x0015F1F1 File Offset: 0x0015D3F1
334 protected IEnumerable<string> BlockRows()
335 {
336 return EClass.editorSources.blocks.GetListString();
337 }
338
339 // Token: 0x0600458E RID: 17806 RVA: 0x0015F204 File Offset: 0x0015D404
340 protected string _GetMat(int id)
341 {
342 if (id == -1)
343 {
344 id = 0;
345 }
346 SourceMaterial.Row row = EClass.editorSources.materials.rows.First((SourceMaterial.Row a) => a.id == id);
347 if (row != null)
348 {
349 return string.Concat(new string[]
350 {
351 row.id.ToString(),
352 "-",
353 row.alias,
354 "(",
355 row.name_JP,
356 ")"
357 });
358 }
359 return "-";
360 }
361
362 // Token: 0x0600458F RID: 17807 RVA: 0x0015F29C File Offset: 0x0015D49C
363 protected void _SetMat(ref int id, string value)
364 {
365 id = EClass.editorSources.materials.rows.First((SourceMaterial.Row a) => a.id == int.Parse(value.Split('-', StringSplitOptions.None)[0])).id;
366 }
367
368 // Token: 0x06004590 RID: 17808 RVA: 0x0015F2DD File Offset: 0x0015D4DD
369 protected IEnumerable<string> MatRows()
370 {
371 return EClass.editorSources.materials.GetListString();
372 }
373
374 // Token: 0x06004591 RID: 17809 RVA: 0x0015F2F0 File Offset: 0x0015D4F0
375 protected string _GetSpawnList(string id)
376 {
377 if (id.IsEmpty() || !EClass.editorSources.spawnLists.map.ContainsKey(id))
378 {
379 return "-";
380 }
381 SourceSpawnList.Row row = EClass.editorSources.spawnLists.rows.First((SourceSpawnList.Row a) => a.id == id);
382 if (row != null)
383 {
384 return row.id;
385 }
386 return "-";
387 }
388
389 // Token: 0x06004592 RID: 17810 RVA: 0x0015F36C File Offset: 0x0015D56C
390 protected void _SetSpawnList(ref string id, string value)
391 {
392 id = ((value == null) ? "" : EClass.editorSources.spawnLists.rows.First((SourceSpawnList.Row a) => a.id == value).id);
393 }
394
395 // Token: 0x06004593 RID: 17811 RVA: 0x0015F3BC File Offset: 0x0015D5BC
396 protected IEnumerable<string> _SpawnList()
397 {
398 return EClass.editorSources.spawnLists.GetListString();
399 }
400
401 // Token: 0x02000C6F RID: 3183
402 public enum SubType
403 {
404 // Token: 0x040030E6 RID: 12518
405 None,
406 // Token: 0x040030E7 RID: 12519
407 Rnd5 = 10,
408 // Token: 0x040030E8 RID: 12520
409 Rnd10,
410 // Token: 0x040030E9 RID: 12521
411 Rnd20,
412 // Token: 0x040030EA RID: 12522
413 Pattern = 20
414 }
415
416 // Token: 0x02000C70 RID: 3184
417 public enum DirType
418 {
419 // Token: 0x040030EC RID: 12524
420 Random8,
421 // Token: 0x040030ED RID: 12525
422 RandomSqrt8,
423 // Token: 0x040030EE RID: 12526
424 RandomSqrtSqrt8
425 }
426 }
427
428 // Token: 0x02000BCC RID: 3020
429 [Serializable]
431 {
432 // Token: 0x170011F9 RID: 4601
433 // (get) Token: 0x06004595 RID: 17813 RVA: 0x0015F3D5 File Offset: 0x0015D5D5
434 // (set) Token: 0x06004596 RID: 17814 RVA: 0x0015F3E3 File Offset: 0x0015D5E3
435 public string _mat
436 {
437 get
438 {
439 return base._GetMat(this.mat);
440 }
441 set
442 {
443 base._SetMat(ref this.mat, value);
444 }
445 }
446
447 // Token: 0x170011FA RID: 4602
448 // (get) Token: 0x06004597 RID: 17815 RVA: 0x0015F3F2 File Offset: 0x0015D5F2
449 // (set) Token: 0x06004598 RID: 17816 RVA: 0x0015F400 File Offset: 0x0015D600
450 public string _matSub
451 {
452 get
453 {
454 return base._GetMat(this.matSub);
455 }
456 set
457 {
458 base._SetMat(ref this.matSub, value);
459 }
460 }
461
462 // Token: 0x06004599 RID: 17817 RVA: 0x0015F410 File Offset: 0x0015D610
463 public int GetDir()
464 {
465 switch (this.dirType)
466 {
467 case BiomeProfile.BaseTile.DirType.Random8:
468 return EScriptable.rnd(8);
469 case BiomeProfile.BaseTile.DirType.RandomSqrt8:
470 return EScriptable.rnd(EScriptable.rnd(8) + 1);
471 case BiomeProfile.BaseTile.DirType.RandomSqrtSqrt8:
472 return EScriptable.rnd(EScriptable.rnd(EScriptable.rnd(8) + 1) + 1);
473 default:
474 return EScriptable.rnd(8);
475 }
476 }
477
478 // Token: 0x04002F49 RID: 12105
479 [HideInInspector]
480 public int id;
481
482 // Token: 0x04002F4A RID: 12106
483 [HideInInspector]
484 public int mat;
485
486 // Token: 0x04002F4B RID: 12107
487 [HideInInspector]
488 public int idSub;
489
490 // Token: 0x04002F4C RID: 12108
491 [HideInInspector]
492 public int matSub;
493
494 // Token: 0x04002F4D RID: 12109
495 public BiomeProfile.BaseTile.SubType subType;
496
497 // Token: 0x04002F4E RID: 12110
498 public BiomeProfile.BaseTile.DirType dirType;
499 }
500
501 // Token: 0x02000BCD RID: 3021
502 [Serializable]
504 {
505 // Token: 0x170011FB RID: 4603
506 // (get) Token: 0x0600459B RID: 17819 RVA: 0x0015F470 File Offset: 0x0015D670
507 // (set) Token: 0x0600459C RID: 17820 RVA: 0x0015F47E File Offset: 0x0015D67E
508 public string _id
509 {
510 get
511 {
512 return base._GetFloor(this.id);
513 }
514 set
515 {
516 base._SetFloor(ref this.id, value);
517 }
518 }
519
520 // Token: 0x170011FC RID: 4604
521 // (get) Token: 0x0600459D RID: 17821 RVA: 0x0015F48D File Offset: 0x0015D68D
522 // (set) Token: 0x0600459E RID: 17822 RVA: 0x0015F49B File Offset: 0x0015D69B
523 public string _idSub
524 {
525 get
526 {
527 return base._GetFloor(this.idSub);
528 }
529 set
530 {
531 base._SetFloor(ref this.idSub, value);
532 }
533 }
534 }
535
536 // Token: 0x02000BCE RID: 3022
537 [Serializable]
539 {
540 // Token: 0x170011FD RID: 4605
541 // (get) Token: 0x060045A0 RID: 17824 RVA: 0x0015F4B2 File Offset: 0x0015D6B2
542 // (set) Token: 0x060045A1 RID: 17825 RVA: 0x0015F4C0 File Offset: 0x0015D6C0
543 public string _id
544 {
545 get
546 {
547 return base._GetBlock(this.id);
548 }
549 set
550 {
551 base._SetBlock(ref this.id, value);
552 }
553 }
554
555 // Token: 0x170011FE RID: 4606
556 // (get) Token: 0x060045A2 RID: 17826 RVA: 0x0015F4CF File Offset: 0x0015D6CF
557 // (set) Token: 0x060045A3 RID: 17827 RVA: 0x0015F4DD File Offset: 0x0015D6DD
558 public string _idSub
559 {
560 get
561 {
562 return base._GetBlock(this.idSub);
563 }
564 set
565 {
566 base._SetBlock(ref this.idSub, value);
567 }
568 }
569 }
570
571 // Token: 0x02000BCF RID: 3023
572 [Serializable]
573 public class TileGroup
574 {
575 // Token: 0x04002F4F RID: 12111
576 public BiomeProfile.TileFloor floor;
577
578 // Token: 0x04002F50 RID: 12112
579 public BiomeProfile.TileBlock block;
580 }
581
582 // Token: 0x02000BD0 RID: 3024
583 [Serializable]
585 {
586 // Token: 0x170011FF RID: 4607
587 // (get) Token: 0x060045A6 RID: 17830 RVA: 0x0015F4FC File Offset: 0x0015D6FC
588 // (set) Token: 0x060045A7 RID: 17831 RVA: 0x0015F50A File Offset: 0x0015D70A
589 public string _matDoor
590 {
591 get
592 {
593 return base._GetMat(this.matDoor);
594 }
595 set
596 {
597 base._SetMat(ref this.matDoor, value);
598 }
599 }
600
601 // Token: 0x17001200 RID: 4608
602 // (get) Token: 0x060045A8 RID: 17832 RVA: 0x0015F519 File Offset: 0x0015D719
603 // (set) Token: 0x060045A9 RID: 17833 RVA: 0x0015F527 File Offset: 0x0015D727
604 public string _matStairs
605 {
606 get
607 {
608 return base._GetMat(this.matStairs);
609 }
610 set
611 {
612 base._SetMat(ref this.matStairs, value);
613 }
614 }
615
616 // Token: 0x060045AA RID: 17834 RVA: 0x0015F538 File Offset: 0x0015D738
617 public string GetIdLight(bool wall)
618 {
619 if (this.lights.Count > 0)
620 {
621 foreach (BiomeProfile.Cluster.ItemThing itemThing in this.lights)
622 {
623 if (EClass.sources.cards.map[itemThing.id].tileType.UseMountHeight == wall)
624 {
625 return itemThing.id;
626 }
627 }
628 }
629 if (!wall)
630 {
631 return "torch";
632 }
633 return "torch_wall";
634 }
635
636 // Token: 0x060045AB RID: 17835 RVA: 0x0015F5D4 File Offset: 0x0015D7D4
637 public string GetIdStairs(bool upstairs)
638 {
639 switch (this.stairsStyle)
640 {
641 case BiomeProfile.StairsStyle.Wood:
642 if (!upstairs)
643 {
644 return "381";
645 }
646 return "376";
647 case BiomeProfile.StairsStyle.Stone:
648 if (!upstairs)
649 {
650 return "932";
651 }
652 return "379";
653 case BiomeProfile.StairsStyle.Rock:
654 if (!upstairs)
655 {
656 return "380";
657 }
658 return "377";
659 default:
660 if (!upstairs)
661 {
662 return "stairsDown_cave";
663 }
664 return "stairs_cave";
665 }
666 }
667
668 // Token: 0x060045AC RID: 17836 RVA: 0x0015F63C File Offset: 0x0015D83C
669 public string GetIdDoor()
670 {
671 switch (this.doorStyle)
672 {
673 case BiomeProfile.DoorStyle.FirmWood:
674 return "46";
675 case BiomeProfile.DoorStyle.Stone:
676 return "42";
677 case BiomeProfile.DoorStyle.Jail:
678 return "40";
679 case BiomeProfile.DoorStyle.Rune:
680 return "43";
681 default:
682 return "45";
683 }
684 }
685
686 // Token: 0x04002F51 RID: 12113
687 public float doorChance = 0.9f;
688
689 // Token: 0x04002F52 RID: 12114
690 public BiomeProfile.DoorStyle doorStyle;
691
692 // Token: 0x04002F53 RID: 12115
693 [HideInInspector]
694 public int matDoor;
695
696 // Token: 0x04002F54 RID: 12116
697 public BiomeProfile.StairsStyle stairsStyle;
698
699 // Token: 0x04002F55 RID: 12117
700 [HideInInspector]
701 public int matStairs;
702
703 // Token: 0x04002F56 RID: 12118
704 public List<BiomeProfile.Cluster.ItemThing> lights;
705 }
706
707 // Token: 0x02000BD1 RID: 3025
708 [Serializable]
709 public class Spawns
710 {
711 // Token: 0x060045AE RID: 17838 RVA: 0x0015F69C File Offset: 0x0015D89C
712 public string GetRandomCharaId()
713 {
714 if (this.chara.Count != 0)
715 {
716 return this.chara.RandomItemWeighted((BiomeProfile.SpawnListChara a) => a.chance).id;
717 }
718 return "c_dungeon";
719 }
720
721 // Token: 0x060045AF RID: 17839 RVA: 0x0015F6EC File Offset: 0x0015D8EC
722 public string GetRandomThingId()
723 {
724 if (this.thing.Count != 0)
725 {
726 return this.thing.RandomItemWeighted((BiomeProfile.SpawnListThing a) => a.chance).id;
727 }
728 return "dungeon";
729 }
730
731 // Token: 0x04002F57 RID: 12119
732 public List<BiomeProfile.SpawnListChara> chara;
733
734 // Token: 0x04002F58 RID: 12120
735 public List<BiomeProfile.SpawnListThing> thing;
736 }
737
738 // Token: 0x02000BD2 RID: 3026
739 [Serializable]
741 {
742 // Token: 0x17001201 RID: 4609
743 // (get) Token: 0x060045B1 RID: 17841 RVA: 0x0015F743 File Offset: 0x0015D943
744 // (set) Token: 0x060045B2 RID: 17842 RVA: 0x0015F751 File Offset: 0x0015D951
745 public string _id
746 {
747 get
748 {
749 return base._GetSpawnList(this.id);
750 }
751 set
752 {
753 base._SetSpawnList(ref this.id, value);
754 }
755 }
756
757 // Token: 0x04002F59 RID: 12121
758 public float chance = 1f;
759
760 // Token: 0x04002F5A RID: 12122
761 [HideInInspector]
762 public string id;
763 }
764
765 // Token: 0x02000BD3 RID: 3027
766 [Serializable]
768 {
769 }
770
771 // Token: 0x02000BD4 RID: 3028
772 [Serializable]
774 {
775 }
776
777 // Token: 0x02000BD5 RID: 3029
778 [Serializable]
779 public class Clusters
780 {
781 // Token: 0x04002F5B RID: 12123
782 public List<BiomeProfile.ClusterObj> obj;
783
784 // Token: 0x04002F5C RID: 12124
785 public List<BiomeProfile.ClusterThing> thing;
786 }
787
788 // Token: 0x02000BD6 RID: 3030
789 [Serializable]
790 public class Cluster
791 {
792 // Token: 0x060045B7 RID: 17847 RVA: 0x0015F78B File Offset: 0x0015D98B
793 public virtual bool TryCreate(Point p)
794 {
795 return false;
796 }
797
798 // Token: 0x04002F5D RID: 12125
799 public BiomeProfile.Cluster.Type type;
800
801 // Token: 0x04002F5E RID: 12126
802 public float density;
803
804 // Token: 0x02000C7E RID: 3198
805 public enum Type
806 {
807 // Token: 0x040030FF RID: 12543
808 Scatter,
809 // Token: 0x04003100 RID: 12544
810 ScatterExterior,
811 // Token: 0x04003101 RID: 12545
812 ScatterInterior,
813 // Token: 0x04003102 RID: 12546
814 ScatterNonObstacle,
815 // Token: 0x04003103 RID: 12547
816 ByWall = 10
817 }
818
819 // Token: 0x02000C7F RID: 3199
820 [Serializable]
822 {
823 // Token: 0x17001221 RID: 4641
824 // (get) Token: 0x06004717 RID: 18199 RVA: 0x001625B0 File Offset: 0x001607B0
825 public virtual bool IsSpawnOnBlock
826 {
827 get
828 {
829 return false;
830 }
831 }
832
833 // Token: 0x17001222 RID: 4642
834 // (get) Token: 0x06004718 RID: 18200 RVA: 0x001625B3 File Offset: 0x001607B3
835 public virtual bool IsSpawnOnWater
836 {
837 get
838 {
839 return false;
840 }
841 }
842
843 // Token: 0x04003104 RID: 12548
844 public float chance = 1f;
845 }
846
847 // Token: 0x02000C80 RID: 3200
848 [Serializable]
850 {
851 // Token: 0x17001223 RID: 4643
852 // (get) Token: 0x0600471A RID: 18202 RVA: 0x001625C9 File Offset: 0x001607C9
853 public override bool IsSpawnOnBlock
854 {
855 get
856 {
857 return EClass.sources.objs.rows[this.idObj].tileType.IsBlockMount;
858 }
859 }
860
861 // Token: 0x17001224 RID: 4644
862 // (get) Token: 0x0600471B RID: 18203 RVA: 0x001625EF File Offset: 0x001607EF
863 public override bool IsSpawnOnWater
864 {
865 get
866 {
867 return EClass.sources.objs.rows[this.idObj].tileType.CanSpawnOnWater;
868 }
869 }
870
871 // Token: 0x17001225 RID: 4645
872 // (get) Token: 0x0600471C RID: 18204 RVA: 0x00162615 File Offset: 0x00160815
873 // (set) Token: 0x0600471D RID: 18205 RVA: 0x00162623 File Offset: 0x00160823
874 public string obj
875 {
876 get
877 {
878 return base._GetObj(this.idObj);
879 }
880 set
881 {
882 base._SetObj(ref this.idObj, value);
883 }
884 }
885
886 // Token: 0x04003105 RID: 12549
887 public int idObj;
888 }
889
890 // Token: 0x02000C81 RID: 3201
891 [Serializable]
893 {
894 // Token: 0x17001226 RID: 4646
895 // (get) Token: 0x0600471F RID: 18207 RVA: 0x0016263A File Offset: 0x0016083A
896 // (set) Token: 0x06004720 RID: 18208 RVA: 0x00162648 File Offset: 0x00160848
897 public string _id
898 {
899 get
900 {
901 return base._GetThing(this.id);
902 }
903 set
904 {
905 base._SetThing(ref this.id, value);
906 }
907 }
908
909 // Token: 0x04003106 RID: 12550
910 public string id;
911 }
912 }
913
914 // Token: 0x02000BD7 RID: 3031
915 [Serializable]
917 {
918 // Token: 0x060045B9 RID: 17849 RVA: 0x0015F798 File Offset: 0x0015D998
919 public override bool TryCreate(Point p)
920 {
921 BiomeProfile.Cluster.Item item = this.items.RandomItem<BiomeProfile.Cluster.Item>();
922 if (Rand.Range(0f, 1f) > item.chance)
923 {
924 return false;
925 }
926 Cell cell = p.cell;
927 if (cell.HasBlock)
928 {
929 if (!item.IsSpawnOnBlock)
930 {
931 return false;
932 }
933 }
934 else if (item.IsSpawnOnBlock)
935 {
936 return false;
937 }
938 p.SetObj(item.idObj, 1, 0);
939 cell.objDir = EScriptable.rnd(8);
940 if (cell.sourceObj.HasGrowth && cell.sourceObj.id != 103)
941 {
942 cell.growth.SetRandomStage();
943 }
944 return true;
945 }
946
947 // Token: 0x04002F5F RID: 12127
948 public List<BiomeProfile.Cluster.Item> items;
949 }
950
951 // Token: 0x02000BD8 RID: 3032
952 [Serializable]
954 {
955 // Token: 0x060045BB RID: 17851 RVA: 0x0015F838 File Offset: 0x0015DA38
956 public override bool TryCreate(Point p)
957 {
958 BiomeProfile.Cluster.ItemThing itemThing = this.items.RandomItem<BiomeProfile.Cluster.ItemThing>();
959 if (Rand.Range(0f, 1f) > itemThing.chance)
960 {
961 return false;
962 }
963 Cell cell = p.cell;
964 if (cell.HasBlock)
965 {
966 if (!itemThing.IsSpawnOnBlock)
967 {
968 return false;
969 }
970 }
971 else if (itemThing.IsSpawnOnBlock)
972 {
973 return false;
974 }
975 if (cell.IsTopWater)
976 {
977 if (!itemThing.IsSpawnOnWater)
978 {
979 return false;
980 }
981 }
982 else if (itemThing.IsSpawnOnWater)
983 {
984 return false;
985 }
986 Thing thing = ThingGen.Create(itemThing.id, -1, -1);
987 int desiredDir = thing.TileType.GetDesiredDir(p, 0);
988 if (desiredDir != -1)
989 {
990 thing.dir = desiredDir;
991 }
992 EClass._zone.AddCard(thing, p).Install();
993 return true;
994 }
995
996 // Token: 0x04002F60 RID: 12128
997 public List<BiomeProfile.Cluster.ItemThing> items;
998 }
999}
Definition Cell.cs:10
Definition Point.cs:11
Definition Thing.cs:10