Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

132 rindas
2.8 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using CIG3.ExtensionMethods;
  4. using SUISSEngine;
  5. public class CIGIslandStats
  6. {
  7. public CIGIslandStats(Dictionary<string, object> storage)
  8. {
  9. this._data = storage;
  10. }
  11. public void PopuplateStats(CityIsland island)
  12. {
  13. this.RoadCount = this.CountRoadsOn(island);
  14. this.DecorationsCount = this.CountDecorationsOn(island);
  15. this.MaxLevelBuildingCount = this.CountMaxLevelBuildings(island);
  16. }
  17. public int RoadCount
  18. {
  19. get
  20. {
  21. return this._data.GetValue("roads", 0);
  22. }
  23. set
  24. {
  25. this._data["roads"] = value;
  26. }
  27. }
  28. public int DecorationsCount
  29. {
  30. get
  31. {
  32. return this._data.GetValue("decorations", 0);
  33. }
  34. set
  35. {
  36. this._data["decorations"] = value;
  37. }
  38. }
  39. public int MaxLevelBuildingCount
  40. {
  41. get
  42. {
  43. return this._data.GetValue("maxLevelBuildings", 0);
  44. }
  45. set
  46. {
  47. this._data["maxLevelBuildings"] = value;
  48. }
  49. }
  50. private int CountDecorationsOn(CityIsland island)
  51. {
  52. if (island == null || island.isometricIsland == null)
  53. {
  54. return 0;
  55. }
  56. IsometricIsland isometricIsland = island.isometricIsland;
  57. int num = 0;
  58. List<Building> buildingsOnIsland = isometricIsland.BuildingsOnIsland;
  59. int count = buildingsOnIsland.Count;
  60. for (int i = 0; i < count; i++)
  61. {
  62. if (buildingsOnIsland[i] is CIGDecoration)
  63. {
  64. num++;
  65. }
  66. }
  67. return num;
  68. }
  69. private int CountMaxLevelBuildings(CityIsland island)
  70. {
  71. if (island == null || island.isometricIsland == null)
  72. {
  73. return 0;
  74. }
  75. IsometricIsland isometricIsland = island.isometricIsland;
  76. int num = 0;
  77. List<Building> buildingsOnIsland = isometricIsland.BuildingsOnIsland;
  78. int count = buildingsOnIsland.Count;
  79. for (int i = 0; i < count; i++)
  80. {
  81. CIGBuilding cigbuilding = buildingsOnIsland[i] as CIGBuilding;
  82. if (cigbuilding != null && cigbuilding.GetMaxLevel() > 1 && cigbuilding.GetMaxLevel() == cigbuilding.CurrentLevel)
  83. {
  84. num++;
  85. }
  86. }
  87. return num;
  88. }
  89. private int CountRoadsOn(CityIsland island)
  90. {
  91. if (island == null || island.isometricIsland == null || island.isometricIsland.grid == null)
  92. {
  93. return 0;
  94. }
  95. IsometricGrid grid = island.isometricIsland.grid;
  96. int num = 0;
  97. GridSize size = grid.Size;
  98. for (int i = 0; i < size.v; i++)
  99. {
  100. for (int j = 0; j < size.u; j++)
  101. {
  102. GridTile tile = grid[j, i].Tile;
  103. if (tile != null)
  104. {
  105. Road component = tile.GetComponent<Road>();
  106. if (component != null)
  107. {
  108. num++;
  109. }
  110. }
  111. }
  112. }
  113. return num;
  114. }
  115. private const string RoadCountKey = "roads";
  116. private const string MaxLevelBuildingCountKey = "maxLevelBuildings";
  117. private const string DecorationCountKey = "decorations";
  118. private Dictionary<string, object> _data;
  119. }