ItemUtil.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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 CreateBlockItem(string tileImgPath, string itemImgPath, string name)
  75. {
  76. Texture2D textureTile = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  77. Texture2D textureItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  78. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", textureItem);
  79. itemInfo.Register(name);
  80. new TileInfo(TileType.SOLID, textureTile, null, itemInfo).Register(name);
  81. return itemInfo.GetID();
  82. }
  83. public static int CreatePlacableStairsItemL(string tileImgPath, string itemImgPath, string name)
  84. {
  85. Texture2D texture2DTile = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  86. Texture2D texture2DItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  87. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  88. Renderer renderer = gameObject.GetComponentInChildren<Renderer>();
  89. renderer.material = new Material(Shader.Find("Transparent/Diffuse"))
  90. {
  91. mainTexture = texture2DTile
  92. };
  93. for (int i = 0; i < 14; i++)
  94. {
  95. GameObject colliderObject = new GameObject();
  96. colliderObject.transform.localScale = new Vector3(4f, 4f, 5);
  97. colliderObject.transform.localPosition = new Vector3(10f, -0.22f, 0);
  98. colliderObject.transform.SetParent(gameObject.transform);
  99. colliderObject.layer = 0;
  100. BoxCollider doorTrigger = colliderObject.AddComponent<BoxCollider>();
  101. doorTrigger.size = new Vector3(Mathf.Sqrt(2f), 0.2f, 1);
  102. doorTrigger.transform.rotation = Quaternion.Euler(0, 0, -45);
  103. }
  104. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", texture2DItem);
  105. itemInfo.Register(name);
  106. new TileInfo(TileType.NONSOLID, texture2DTile, gameObject, itemInfo).Register(name);
  107. return itemInfo.GetID();
  108. }
  109. public static int CreatePlacableStairsItemR(string tileImgPath, string itemImgPath, string name)
  110. {
  111. Texture2D texture2DTile = GadgetCoreAPI.LoadTexture2D(tileImgPath);
  112. Texture2D texture2DItem = GadgetCoreAPI.LoadTexture2D(itemImgPath);
  113. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  114. Renderer renderer = gameObject.GetComponentInChildren<Renderer>();
  115. renderer.material = new Material(Shader.Find("Transparent/Diffuse"))
  116. {
  117. mainTexture = texture2DTile
  118. };
  119. for (int i = 0; i < 14; i++)
  120. {
  121. GameObject colliderObject = new GameObject();
  122. colliderObject.transform.localScale = new Vector3(4f, 4f, 5);
  123. colliderObject.transform.localPosition = new Vector3(10f, -0.22f, 0);
  124. colliderObject.transform.SetParent(gameObject.transform);
  125. colliderObject.layer = 0;
  126. BoxCollider doorTrigger = colliderObject.AddComponent<BoxCollider>();
  127. doorTrigger.size = new Vector3(Mathf.Sqrt(2f), 0.2f, 1);
  128. doorTrigger.transform.rotation = Quaternion.Euler(0, 0, 45);
  129. }
  130. ItemInfo itemInfo = new ItemInfo(ItemType.GENERIC, name, "", texture2DItem);
  131. itemInfo.Register(name);
  132. new TileInfo(TileType.NONSOLID, texture2DTile, gameObject, itemInfo).Register(name);
  133. return itemInfo.GetID();
  134. }
  135. }
  136. }