25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 

102 satır
2.2 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using CIGEnums;
  4. using SUISSEngine;
  5. using UnityEngine;
  6. public class CIGDisasterManager : MonoBehaviour
  7. {
  8. protected void Start()
  9. {
  10. base.Invoke("AddSprites", 5f);
  11. }
  12. public void AddSprites()
  13. {
  14. int num = 0;
  15. for (int i = 0; i < this.grid.Size.u; i++)
  16. {
  17. for (int j = 0; j < this.grid.Size.v; j++)
  18. {
  19. bool index = this.getElementType(i - 1, j - 1) == (int)this.elementType;
  20. bool index2 = this.getElementType(i, j - 1) == (int)this.elementType;
  21. bool index3 = this.getElementType(i - 1, j) == (int)this.elementType;
  22. bool index4 = this.getElementType(i, j) == (int)this.elementType;
  23. int spriteNumber = this.GetSpriteNumber(index, index2, index3, index4);
  24. if (spriteNumber > 0)
  25. {
  26. GridTile gridTile;
  27. if (num < this.tiles.Count)
  28. {
  29. gridTile = this.tiles[num++];
  30. gridTile.gameObject.SetActive(true);
  31. }
  32. else
  33. {
  34. GameObject gameObject = UnityEngine.Object.Instantiate<GameObject>(this.prefab);
  35. gridTile = gameObject.GetComponent<GridTile>();
  36. this.tiles.Add(gridTile);
  37. num++;
  38. }
  39. SpriteRenderer component = gridTile.GetComponent<SpriteRenderer>();
  40. component.sprite = this.sprites[spriteNumber];
  41. gridTile.transform.parent = this.grid.transform;
  42. gridTile.index = new GridIndex(i, j);
  43. gridTile.UpdateTransform();
  44. }
  45. }
  46. }
  47. }
  48. public void RemoveSprites()
  49. {
  50. foreach (GridTile gridTile in this.tiles)
  51. {
  52. gridTile.gameObject.SetActive(false);
  53. gridTile.transform.parent = base.transform;
  54. }
  55. }
  56. private int GetSpriteNumber(bool index1, bool index2, bool index3, bool index4)
  57. {
  58. int num = 0;
  59. if (index4)
  60. {
  61. num += 8;
  62. }
  63. if (index3)
  64. {
  65. num += 2;
  66. }
  67. if (index2)
  68. {
  69. num += 4;
  70. }
  71. if (index1)
  72. {
  73. num++;
  74. }
  75. return num;
  76. }
  77. private int getElementType(int u, int v)
  78. {
  79. if (u >= 0 && u < this.grid.Size.u && v >= 0 && v < this.grid.Size.v)
  80. {
  81. return this.grid[u, v].Type;
  82. }
  83. return 0;
  84. }
  85. [SelfReference]
  86. public IsometricGrid grid;
  87. public SurfaceType elementType;
  88. public GameObject prefab;
  89. public Sprite[] sprites;
  90. protected List<GridTile> tiles = new List<GridTile>();
  91. }