ItemUtil.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. using UnityEngine;
  2. using GadgetCore.API;
  3. namespace ShipDecorations
  4. {
  5. public static class ItemUtil
  6. {
  7. public static int CreatePlacableDecoItem(string tileImgPath, string itemImgPath, string name)
  8. {
  9. Texture2D texture2D = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  10. Texture2D texture2D2 = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  11. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  12. Renderer renderer = gameObject.GetComponentInChildren<Renderer>();
  13. renderer.material = new Material(Shader.Find("Unlit/Transparent"))
  14. {
  15. mainTexture = texture2D
  16. };
  17. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", texture2D2);
  18. itemInfo.Register(name);
  19. new TileInfo(TileType.NONSOLID, texture2D, gameObject, itemInfo).Register(name);
  20. return itemInfo.GetID();
  21. }
  22. public static int CreatePlacableSlideDoorItem(string tileImgPath, string tileOpenImgPath, string itemImgPath, string name)
  23. {
  24. Texture2D texture2D = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  25. Texture2D texture2DOpen = GadgetCoreAPI.LoadTexture2D(tileOpenImgPath);
  26. Texture2D texture2DItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  27. GameObject hostObject = new GameObject("door");
  28. hostObject.transform.localPosition = new Vector3(10f, 0, 0);
  29. {
  30. GameObject closedDoorObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  31. Renderer renderer = closedDoorObject.GetComponentInChildren<Renderer>();
  32. renderer.material = new Material(Shader.Find("Transparent/Diffuse"))
  33. {
  34. mainTexture = texture2D
  35. };
  36. closedDoorObject.transform.SetParent(hostObject.transform);
  37. closedDoorObject.SetActive(true);
  38. }
  39. {
  40. GameObject openDoorObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  41. Renderer renderer = openDoorObject.GetComponentInChildren<Renderer>();
  42. renderer.material = new Material(Shader.Find("Transparent/Diffuse"))
  43. {
  44. mainTexture = texture2DOpen
  45. };
  46. openDoorObject.transform.SetParent(hostObject.transform);
  47. openDoorObject.SetActive(false);
  48. }
  49. GameObject doorTriggerObject = new GameObject();
  50. doorTriggerObject.transform.localScale = new Vector3(4f, 4f, 5);
  51. doorTriggerObject.transform.localPosition = new Vector3(10f, 0, 0);
  52. doorTriggerObject.transform.SetParent(hostObject.transform);
  53. doorTriggerObject.layer = 0;
  54. BoxCollider doorTrigger = doorTriggerObject.AddComponent<BoxCollider>();
  55. doorTrigger.size = new Vector3(1, 1, 1);
  56. doorTrigger.isTrigger = true;
  57. AudioSource audio = doorTriggerObject.AddComponent<AudioSource>();
  58. var script = doorTrigger.gameObject.AddComponent<DoorColliderScript>();
  59. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", texture2DItem);
  60. itemInfo.Register(name);
  61. new TileInfo(TileType.NONSOLID, texture2D, hostObject, itemInfo).Register(name);
  62. Texture2D tex = new Texture2D(2, 2, TextureFormat.ARGB32, false, true);
  63. return itemInfo.GetID();
  64. }
  65. public static int CreateWallItem(string tileImgPath, string itemImgPath, string name)
  66. {
  67. Texture2D textureTile = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  68. Texture2D textureItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  69. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", textureItem);
  70. itemInfo.Register(name);
  71. new TileInfo(TileType.WALL, textureTile, null, itemInfo).Register(name);
  72. return itemInfo.GetID();
  73. }
  74. public static int CreateEngineItem(string tileImgPath, string itemImgPath, string componentName, string name, string description, string id)
  75. {
  76. Texture2D texture2D = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  77. Texture2D texture2D2 = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  78. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/ScrapYard/component/" + componentName));
  79. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, description, texture2D2);
  80. itemInfo.Register(id);
  81. new TileInfo(TileType.NONSOLID, texture2D, gameObject, itemInfo).Register(id);
  82. return itemInfo.GetID();
  83. }
  84. public static int CreateOverrideEngineItem(string tileImgPath, string itemImgPath, string componentName, string name, string description, string id)
  85. {
  86. Texture2D texture2D = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  87. Texture2D texture2D2 = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  88. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/ScrapYard/component/" + componentName));
  89. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, description, texture2D2);
  90. itemInfo.Register(id, 2400);
  91. new TileInfo(TileType.NONSOLID, texture2D, gameObject, itemInfo).Register(id, 2400);
  92. return itemInfo.GetID();
  93. }
  94. public static int CreateBlockItem(string tileImgPath, string itemImgPath, string name)
  95. {
  96. Texture2D textureTile = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  97. Texture2D textureItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  98. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", textureItem);
  99. itemInfo.Register(name);
  100. new TileInfo(TileType.SOLID, textureTile, null, itemInfo).Register(name);
  101. return itemInfo.GetID();
  102. }
  103. public static int CreatePlacableStairsItemL(string tileImgPath, string itemImgPath, string name, string registerName = null)
  104. {
  105. if (registerName == null)
  106. registerName = name;
  107. Texture2D texture2DTile = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  108. Texture2D texture2DItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  109. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  110. Renderer renderer = gameObject.GetComponentInChildren<Renderer>();
  111. renderer.material = new Material(Shader.Find("Transparent/Diffuse"))
  112. {
  113. mainTexture = texture2DTile
  114. };
  115. for (int i = 0; i < 14; i++)
  116. {
  117. GameObject colliderObject = new GameObject();
  118. colliderObject.transform.localScale = new Vector3(4f, 4f, 5);
  119. colliderObject.transform.localPosition = new Vector3(10f, -0.22f, 0);
  120. colliderObject.transform.SetParent(gameObject.transform);
  121. colliderObject.layer = 0;
  122. BoxCollider doorTrigger = colliderObject.AddComponent<BoxCollider>();
  123. doorTrigger.size = new Vector3(Mathf.Sqrt(2f), 0.2f, 1);
  124. doorTrigger.transform.rotation = Quaternion.Euler(0, 0, -45);
  125. }
  126. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", texture2DItem);
  127. itemInfo.Register(registerName);
  128. new TileInfo(TileType.NONSOLID, texture2DTile, gameObject, itemInfo).Register(registerName);
  129. return itemInfo.GetID();
  130. }
  131. public static int CreatePlacableStairsItemR(string tileImgPath, string itemImgPath, string name, string registerName = null)
  132. {
  133. if (registerName == null)
  134. registerName = name;
  135. Texture2D texture2DTile = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  136. Texture2D texture2DItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  137. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  138. Renderer renderer = gameObject.GetComponentInChildren<Renderer>();
  139. renderer.material = new Material(Shader.Find("Transparent/Diffuse"))
  140. {
  141. mainTexture = texture2DTile
  142. };
  143. for (int i = 0; i < 14; i++)
  144. {
  145. GameObject colliderObject = new GameObject();
  146. colliderObject.transform.localScale = new Vector3(4f, 4f, 5);
  147. colliderObject.transform.localPosition = new Vector3(10f, -0.22f, 0);
  148. colliderObject.transform.SetParent(gameObject.transform);
  149. colliderObject.layer = 0;
  150. BoxCollider doorTrigger = colliderObject.AddComponent<BoxCollider>();
  151. doorTrigger.size = new Vector3(Mathf.Sqrt(2f), 0.2f, 1);
  152. doorTrigger.transform.rotation = Quaternion.Euler(0, 0, 45);
  153. }
  154. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", texture2DItem);
  155. itemInfo.Register(registerName);
  156. new TileInfo(TileType.NONSOLID, texture2DTile, gameObject, itemInfo).Register(registerName);
  157. return itemInfo.GetID();
  158. }
  159. }
  160. }