DailyCtrl.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. using System;
  2. using System.Collections.Generic;
  3. using com.workman.cm3d2.button;
  4. using MaidStatus;
  5. using PlayerStatus;
  6. using PrivateMaidMode;
  7. using Schedule;
  8. using scoutmode;
  9. using UnityEngine;
  10. using wf;
  11. public class DailyCtrl : MonoBehaviour
  12. {
  13. public void Init(DailyMgr mgr, GameObject goPanel)
  14. {
  15. this.m_mgr = mgr;
  16. this.m_goPanel = goPanel;
  17. }
  18. public void DisplayViewer(DailyMgr.Daily daily)
  19. {
  20. if (!this.m_bInit)
  21. {
  22. this.m_bInit = true;
  23. foreach (DailyCtrl.ButtonData buttonData in this.menuButtons)
  24. {
  25. EventDelegate.Add(buttonData.button.onClick, new EventDelegate.Callback(this.m_mgr.OnClickMenuButton));
  26. }
  27. }
  28. foreach (DailyCtrl.ButtonData buttonData2 in this.menuButtons)
  29. {
  30. buttonData2.active = true;
  31. }
  32. DailyCtrl.ButtonType[] array3;
  33. if (daily == DailyMgr.Daily.Daytime)
  34. {
  35. if (DailyMgr.IsLegacy)
  36. {
  37. array3 = new DailyCtrl.ButtonType[]
  38. {
  39. DailyCtrl.ButtonType.Dance,
  40. DailyCtrl.ButtonType.FacilityManagement,
  41. DailyCtrl.ButtonType.Casino,
  42. DailyCtrl.ButtonType.Trophy,
  43. DailyCtrl.ButtonType.PhotoMode,
  44. DailyCtrl.ButtonType.DeskCustomize,
  45. DailyCtrl.ButtonType.MyRoomCustom,
  46. DailyCtrl.ButtonType.Casino,
  47. DailyCtrl.ButtonType.Shop,
  48. DailyCtrl.ButtonType.FacilityManagement,
  49. DailyCtrl.ButtonType.LegacyMode,
  50. DailyCtrl.ButtonType.Karaoke,
  51. DailyCtrl.ButtonType.EventScenario,
  52. DailyCtrl.ButtonType.ManEdit,
  53. DailyCtrl.ButtonType.Credit,
  54. DailyCtrl.ButtonType.NPCEdit,
  55. DailyCtrl.ButtonType.PrivateMaidModeSetting,
  56. DailyCtrl.ButtonType.ScoutMode
  57. };
  58. }
  59. else
  60. {
  61. array3 = new DailyCtrl.ButtonType[]
  62. {
  63. DailyCtrl.ButtonType.Dance,
  64. DailyCtrl.ButtonType.Casino,
  65. DailyCtrl.ButtonType.CompetitiveShow
  66. };
  67. }
  68. }
  69. else if (DailyMgr.IsLegacy)
  70. {
  71. array3 = new DailyCtrl.ButtonType[]
  72. {
  73. DailyCtrl.ButtonType.Schedule,
  74. DailyCtrl.ButtonType.CompetitiveShow,
  75. DailyCtrl.ButtonType.Trophy,
  76. DailyCtrl.ButtonType.PhotoMode,
  77. DailyCtrl.ButtonType.DeskCustomize,
  78. DailyCtrl.ButtonType.MyRoomCustom,
  79. DailyCtrl.ButtonType.Casino,
  80. DailyCtrl.ButtonType.Shop,
  81. DailyCtrl.ButtonType.FacilityManagement,
  82. DailyCtrl.ButtonType.LegacyMode,
  83. DailyCtrl.ButtonType.Karaoke,
  84. DailyCtrl.ButtonType.EventScenario,
  85. DailyCtrl.ButtonType.ManEdit,
  86. DailyCtrl.ButtonType.Credit,
  87. DailyCtrl.ButtonType.Dance,
  88. DailyCtrl.ButtonType.NPCEdit,
  89. DailyCtrl.ButtonType.PrivateMaidModeSetting,
  90. DailyCtrl.ButtonType.ScoutMode
  91. };
  92. }
  93. else
  94. {
  95. array3 = new DailyCtrl.ButtonType[]
  96. {
  97. DailyCtrl.ButtonType.Schedule,
  98. DailyCtrl.ButtonType.CompetitiveShow,
  99. DailyCtrl.ButtonType.LegacyMode
  100. };
  101. }
  102. this.GetMenuButton(DailyCtrl.ButtonType.NPCEdit).active = (!Product.isPublic && PluginData.IsEnabled("GP001"));
  103. this.GetMenuButton(DailyCtrl.ButtonType.PrivateMaidModeSetting).active = PluginData.IsEnabled("GP002");
  104. this.GetMenuButton(DailyCtrl.ButtonType.ScoutMode).active = ScoutManager.isModeEnabled;
  105. foreach (DailyCtrl.ButtonType type in array3)
  106. {
  107. this.GetMenuButton(type).active = false;
  108. }
  109. PlayerStatus.Status status = GameMain.Instance.CharacterMgr.status;
  110. if (!status.isAvailableDance)
  111. {
  112. this.GetMenuButton(DailyCtrl.ButtonType.Dance).active = false;
  113. }
  114. if (!status.isAvailableCompetitiveShow)
  115. {
  116. this.GetMenuButton(DailyCtrl.ButtonType.CompetitiveShow).active = false;
  117. }
  118. if (!status.isAvailableShop)
  119. {
  120. this.GetMenuButton(DailyCtrl.ButtonType.Shop).active = false;
  121. }
  122. if (!KaraokeDataManager.IsExistKaraokeData(false))
  123. {
  124. this.GetMenuButton(DailyCtrl.ButtonType.Karaoke).active = false;
  125. }
  126. this.m_goPanel.SetActive(true);
  127. this.SetAllButtonEnable(true);
  128. if (!CasinoDataMgr.Instance.GetCasinoFacility(true) && !CasinoDataMgr.Instance.GetCasinoFacility(false))
  129. {
  130. this.GetMenuButton(DailyCtrl.ButtonType.Casino).button.isEnabled = false;
  131. }
  132. if (!DailyMgr.IsLegacy && daily == DailyMgr.Daily.Daytime)
  133. {
  134. UIButton button = this.GetMenuButton(DailyCtrl.ButtonType.LegacyMode).button;
  135. if (GameUty.IsEnabledCompatibilityMode && PluginData.IsEnabled("Legacy"))
  136. {
  137. EventDelegate.Add(button.onClick, new EventDelegate.Callback(this.BackUpScheduleSlot));
  138. this.GetMenuButton(DailyCtrl.ButtonType.LegacyMode).button.isEnabled = this.IsEnabledLegacyMode();
  139. }
  140. else
  141. {
  142. this.GetMenuButton(DailyCtrl.ButtonType.LegacyMode).active = false;
  143. }
  144. }
  145. this.GetMenuButton(DailyCtrl.ButtonType.DeskCustomize).button.isEnabled = (PrivateModeMgr.Instance.PrivateMaid == null);
  146. foreach (UITable table in this.m_goPanel.GetComponentsInChildren<UITable>())
  147. {
  148. Utility.ResetNGUI(table);
  149. }
  150. foreach (UIGrid grid in this.m_goPanel.GetComponentsInChildren<UIGrid>())
  151. {
  152. Utility.ResetNGUI(grid);
  153. }
  154. StatusViewer component = UTY.GetChildObject(this.m_goPanel, "StatusViewer", false).GetComponent<StatusViewer>();
  155. component.isEnabledClubNameChangeButton = true;
  156. component.isEnabledMainBusinessChangeButton = false;
  157. if (daily == DailyMgr.Daily.Daytime && !DailyMgr.IsLegacy && (PluginData.IsEnabled("GP001") || PluginData.IsEnabled("GP002")))
  158. {
  159. component.isEnabledGameModeChangeButton = true;
  160. }
  161. else
  162. {
  163. component.isEnabledGameModeChangeButton = false;
  164. }
  165. }
  166. public DailyCtrl.ButtonData GetMenuButton(DailyCtrl.ButtonType type)
  167. {
  168. foreach (DailyCtrl.ButtonData buttonData in this.menuButtons)
  169. {
  170. if (buttonData.type == type)
  171. {
  172. return buttonData;
  173. }
  174. }
  175. return new DailyCtrl.ButtonData
  176. {
  177. button = null,
  178. type = type
  179. };
  180. }
  181. public DailyCtrl.ButtonData GetMenuButton(UIButton button)
  182. {
  183. foreach (DailyCtrl.ButtonData buttonData in this.menuButtons)
  184. {
  185. if (buttonData.button == button)
  186. {
  187. return buttonData;
  188. }
  189. }
  190. return new DailyCtrl.ButtonData
  191. {
  192. button = null,
  193. type = DailyCtrl.ButtonType.Next
  194. };
  195. }
  196. private bool IsEnabledCompetitiveShow()
  197. {
  198. return this.m_mgr.GetCurrentDaily() == DailyMgr.Daily.Daytime && GameMain.Instance.CharacterMgr.status.isAvailableCompetitiveShow;
  199. }
  200. private bool IsEnabledShop()
  201. {
  202. return GameMain.Instance.CharacterMgr.status.isAvailableShop;
  203. }
  204. private bool IsEnabledDance()
  205. {
  206. return this.m_mgr.GetCurrentDaily() == DailyMgr.Daily.Night && GameMain.Instance.CharacterMgr.status.isAvailableDance;
  207. }
  208. private bool IsEnabledVRCom()
  209. {
  210. return this.m_mgr.GetCurrentDaily() == DailyMgr.Daily.Daytime && false;
  211. }
  212. private bool IsEnabledLegacyMode()
  213. {
  214. List<Maid> stockMaidList = GameMain.Instance.CharacterMgr.GetStockMaidList();
  215. bool result = false;
  216. foreach (Maid maid in stockMaidList)
  217. {
  218. if (maid != null && maid.status.heroineType == HeroineType.Transfer && maid.status.personal.compatible)
  219. {
  220. result = true;
  221. }
  222. }
  223. return result;
  224. }
  225. public void SetAllButtonEnable(bool enable)
  226. {
  227. foreach (DailyCtrl.ButtonData buttonData in this.menuButtons)
  228. {
  229. if (buttonData.button.gameObject.activeSelf)
  230. {
  231. buttonData.button.isEnabled = enable;
  232. }
  233. }
  234. }
  235. public void BackUpScheduleSlot()
  236. {
  237. ScheduleAPI.BackUpScheduleSlot();
  238. }
  239. [SerializeField]
  240. private DailyCtrl.ButtonData[] menuButtons;
  241. private DailyMgr m_mgr;
  242. private Dictionary<DailyCtrl.ButtonType, GameObject> m_dicRank;
  243. private GameObject m_goPanel;
  244. private ButtonEnable m_btnEnable;
  245. private bool m_bInit;
  246. public enum ButtonType
  247. {
  248. Dance,
  249. Schedule,
  250. MaidManagement,
  251. EventScenario,
  252. Shop,
  253. FacilityManagement,
  254. CompetitiveShow,
  255. Casino,
  256. Save,
  257. Load,
  258. Trophy,
  259. FreeMode,
  260. PhotoMode,
  261. DeskCustomize,
  262. ManEdit,
  263. LegacyMode,
  264. Karaoke,
  265. Credit,
  266. Next,
  267. MyRoomCustom,
  268. NPCEdit,
  269. PrivateMaidModeSetting,
  270. ScoutMode
  271. }
  272. [Serializable]
  273. public class ButtonData
  274. {
  275. public bool active
  276. {
  277. get
  278. {
  279. return this.button.gameObject.activeSelf;
  280. }
  281. set
  282. {
  283. this.button.gameObject.SetActive(value);
  284. }
  285. }
  286. [SerializeField]
  287. public DailyCtrl.ButtonType type;
  288. [SerializeField]
  289. public UIButton button;
  290. }
  291. }