FreeSkillSelect.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using wf;
  6. using Yotogis;
  7. public class FreeSkillSelect : MonoBehaviour
  8. {
  9. public void Awake()
  10. {
  11. if (this.update_obj_dic_ != null)
  12. {
  13. return;
  14. }
  15. this.update_obj_dic_ = new Dictionary<string, FreeSkillSelect.UpdateObject>();
  16. Func<GameObject, FreeSkillSelect.UpdateObject> func = delegate(GameObject top_obj)
  17. {
  18. GameObject childObject = UTY.GetChildObject(top_obj, "Content", false);
  19. FreeSkillSelect.UpdateObject updateObject = new FreeSkillSelect.UpdateObject();
  20. updateObject.storage_obj = UTY.GetChildObject(childObject, "StorageRoom", true);
  21. updateObject.arrow_obj = UTY.GetChildObject(top_obj, "Arrow", false);
  22. updateObject.ui_panel = childObject.GetComponent<UIPanel>();
  23. updateObject.scroll_view = childObject.GetComponent<UIScrollView>();
  24. updateObject.button_parent = UTY.GetChildObject(childObject, "GridParent", false);
  25. updateObject.ui_grid = updateObject.button_parent.GetComponent<UIGrid>();
  26. updateObject.tab_panel = updateObject.button_parent.GetComponent<UIWFTabPanel>();
  27. return updateObject;
  28. };
  29. string[] array = new string[]
  30. {
  31. "TypeCategoryViewer",
  32. "CategoryViewer",
  33. "SkillSelectViewer",
  34. "LevelViewer",
  35. "StageSelectViewer"
  36. };
  37. string[] array2 = new string[]
  38. {
  39. "タイプ",
  40. "カテゴリー",
  41. "スキル",
  42. "レベル",
  43. "ステージ"
  44. };
  45. for (int i = 0; i < array.Length; i++)
  46. {
  47. this.update_obj_dic_.Add(array2[i], func(UTY.GetChildObject(base.gameObject, array[i], false)));
  48. }
  49. this.select_stage_ = (this.user_request_stage = YotogiStage.GetAllDatas(true)[0]);
  50. }
  51. public void Start()
  52. {
  53. }
  54. public void SetMaid(Maid maid)
  55. {
  56. this.maid_ = maid;
  57. }
  58. public void SetYotogiManager(YotogiManager yotogi_mgr)
  59. {
  60. this.yotogi_mgr_ = yotogi_mgr;
  61. }
  62. public void CreateInstanceButton()
  63. {
  64. if (this.button_data_list_ != null)
  65. {
  66. return;
  67. }
  68. FreeSkillSelect.UpdateObject updateObject = this.update_obj_dic_["ステージ"];
  69. FreeSkillSelect.UpdateObject updateObject2 = this.update_obj_dic_["タイプ"];
  70. FreeSkillSelect.UpdateObject updateObject3 = this.update_obj_dic_["レベル"];
  71. foreach (KeyValuePair<string, FreeSkillSelect.UpdateObject> keyValuePair in this.update_obj_dic_)
  72. {
  73. FreeSkillSelect.UpdateObject value = keyValuePair.Value;
  74. value.Clear();
  75. value.Update();
  76. }
  77. int clubGrade = GameMain.Instance.CharacterMgr.status.clubGrade;
  78. HashSet<int> hashSet = new HashSet<int>();
  79. List<YotogiStage.Data> allDatas = YotogiStage.GetAllDatas(true);
  80. allDatas.Sort();
  81. foreach (YotogiStage.Data data in allDatas)
  82. {
  83. if (data.isYotogiPlayable(clubGrade, false))
  84. {
  85. string a = string.Empty;
  86. for (int i = 0; i < 2; i++)
  87. {
  88. if (!string.IsNullOrEmpty(data.prefabName[i]) && !(a == data.prefabName[i]))
  89. {
  90. GameObject gameObject = Utility.CreatePrefab(updateObject.button_parent, "SceneYotogi/StageSelect/Prefab/StageUnit", true);
  91. a = (gameObject.name = data.prefabName[0]);
  92. YotogiStageUnit component = gameObject.GetComponent<YotogiStageUnit>();
  93. component.SetStageData(data, true, i == 0);
  94. component.SetOnSelectEvent(new YotogiStageUnit.OnSelectEvent(this.OnClickStageEvent));
  95. component.is_change_bg = false;
  96. if (!hashSet.Contains(data.id))
  97. {
  98. hashSet.Add(data.id);
  99. }
  100. }
  101. }
  102. }
  103. }
  104. updateObject.Update();
  105. this.button_data_list_ = FreeSkillSelect.CreateButtonData(this.maid_, hashSet);
  106. GameObject button_parent = updateObject3.button_parent;
  107. for (int j = 0; j < 3; j++)
  108. {
  109. EventDelegate onclick_event = new EventDelegate(this, "OnClickLevelBtnEvent");
  110. UIWFTabButton uiwftabButton = this.CreateTypeAndCategoryButton(updateObject3, "Lv." + (j + 1).ToString(), true, onclick_event);
  111. uiwftabButton.name = (j + 1).ToString();
  112. }
  113. updateObject3.Update();
  114. List<Transform> childList = updateObject3.ui_grid.GetChildList();
  115. for (int k = 0; k < childList.Count; k++)
  116. {
  117. UIWFTabButton componentInChildren = childList[k].gameObject.GetComponentInChildren<UIWFTabButton>();
  118. if (!(componentInChildren == null) && componentInChildren.isEnabled)
  119. {
  120. updateObject3.tab_panel.Select(componentInChildren);
  121. break;
  122. }
  123. }
  124. GameObject button_parent2 = updateObject2.button_parent;
  125. for (int l = 0; l < this.button_data_list_.Count; l++)
  126. {
  127. FreeSkillSelect.ButtonData buttonData = this.button_data_list_[l];
  128. EventDelegate eventDelegate = new EventDelegate(this, "OnClickTypeBtnEvent");
  129. eventDelegate.parameters[0].value = buttonData;
  130. if (buttonData.children_list.Count != 0)
  131. {
  132. buttonData.tab_button_obj = this.CreateTypeAndCategoryButton(updateObject2, buttonData.name, 0 < this.button_data_list_[l].children_list.Count, eventDelegate);
  133. }
  134. }
  135. updateObject2.Update();
  136. childList = updateObject2.ui_grid.GetChildList();
  137. for (int m = 0; m < childList.Count; m++)
  138. {
  139. UIWFTabButton componentInChildren2 = childList[m].gameObject.GetComponentInChildren<UIWFTabButton>();
  140. if (!(componentInChildren2 == null) && componentInChildren2.isEnabled)
  141. {
  142. updateObject2.tab_panel.Select(componentInChildren2);
  143. break;
  144. }
  145. }
  146. }
  147. public void SelectSkill(Skill.Data skill, YotogiStage.Data stage_data)
  148. {
  149. if (skill == null)
  150. {
  151. return;
  152. }
  153. FreeSkillSelect.ButtonData buttonData = null;
  154. FreeSkillSelect.ButtonData buttonData2 = null;
  155. FreeSkillSelect.ButtonData buttonData3 = null;
  156. bool flag = true;
  157. int num = 0;
  158. while (num < this.button_data_list_.Count && flag)
  159. {
  160. buttonData = this.button_data_list_[num];
  161. int num2 = 0;
  162. while (num2 < buttonData.children_list.Count && flag)
  163. {
  164. buttonData2 = buttonData.children_list[num2];
  165. int num3 = 0;
  166. while (num3 < buttonData2.children_list.Count && flag)
  167. {
  168. buttonData3 = buttonData2.children_list[num3];
  169. if (buttonData3.skill_data == skill)
  170. {
  171. flag = false;
  172. }
  173. num3++;
  174. }
  175. num2++;
  176. }
  177. num++;
  178. }
  179. if (flag)
  180. {
  181. return;
  182. }
  183. if (!buttonData.tab_button_obj.isSelected)
  184. {
  185. this.update_obj_dic_["タイプ"].tab_panel.Select(buttonData.tab_button_obj);
  186. }
  187. if (!buttonData2.tab_button_obj.isSelected)
  188. {
  189. this.update_obj_dic_["カテゴリー"].tab_panel.Select(buttonData2.tab_button_obj);
  190. }
  191. this.user_request_stage = stage_data;
  192. if (!buttonData3.tab_button_obj.isSelected)
  193. {
  194. this.update_obj_dic_["スキル"].tab_panel.Select(buttonData3.tab_button_obj);
  195. }
  196. }
  197. public void FixSkill()
  198. {
  199. if (this.yotogi_mgr_ == null || this.yotogi_mgr_.maid == null)
  200. {
  201. return;
  202. }
  203. YotogiStageSelectManager.SelectStage(this.select_stage, this.is_day_time_);
  204. KeyValuePair<Skill.Data, bool>[] playSkillArray = new KeyValuePair<Skill.Data, bool>[]
  205. {
  206. new KeyValuePair<Skill.Data, bool>(this.select_skill, false)
  207. };
  208. this.yotogi_mgr_.SetPlaySkillArray(playSkillArray);
  209. }
  210. private void CreateCategory(FreeSkillSelect.ButtonData type_button_data)
  211. {
  212. FreeSkillSelect.UpdateObject updateObject = this.update_obj_dic_["カテゴリー"];
  213. updateObject.MoveStorageRoom(true);
  214. updateObject.Clear();
  215. GameObject button_parent = updateObject.button_parent;
  216. bool lockNTRPlay = GameMain.Instance.CharacterMgr.status.lockNTRPlay;
  217. int i = 0;
  218. while (i < type_button_data.children_list.Count)
  219. {
  220. FreeSkillSelect.ButtonData buttonData = type_button_data.children_list[i];
  221. if (!lockNTRPlay)
  222. {
  223. goto IL_87;
  224. }
  225. Yotogi.Category category = (Yotogi.Category)Enum.Parse(typeof(Yotogi.Category), buttonData.name);
  226. if (category != Yotogi.Category.交換 && category != Yotogi.Category.乱交)
  227. {
  228. goto IL_87;
  229. }
  230. IL_E7:
  231. i++;
  232. continue;
  233. IL_87:
  234. bool flag = buttonData.children_list != null && 0 < buttonData.children_list.Count;
  235. EventDelegate eventDelegate = null;
  236. if (flag)
  237. {
  238. eventDelegate = new EventDelegate(this, "OnClickCategoryBtnEvent");
  239. eventDelegate.parameters[0].value = buttonData;
  240. }
  241. buttonData.tab_button_obj = this.CreateTypeAndCategoryButton(updateObject, buttonData.name, flag, eventDelegate);
  242. goto IL_E7;
  243. }
  244. updateObject.Update();
  245. List<Transform> childList = updateObject.ui_grid.GetChildList();
  246. for (int j = 0; j < childList.Count; j++)
  247. {
  248. UIWFTabButton componentInChildren = childList[j].gameObject.GetComponentInChildren<UIWFTabButton>();
  249. if (!(componentInChildren == null) && componentInChildren.isEnabled)
  250. {
  251. updateObject.tab_panel.Select(componentInChildren);
  252. break;
  253. }
  254. }
  255. }
  256. private void CreateSkill(FreeSkillSelect.ButtonData skill_button_data)
  257. {
  258. FreeSkillSelect.UpdateObject updateObject = this.update_obj_dic_["スキル"];
  259. updateObject.MoveStorageRoom(true);
  260. updateObject.Clear();
  261. GameObject button_parent = updateObject.button_parent;
  262. for (int i = 0; i < skill_button_data.children_list.Count; i++)
  263. {
  264. FreeSkillSelect.ButtonData buttonData = skill_button_data.children_list[i];
  265. if (buttonData.skill_data != null)
  266. {
  267. EventDelegate eventDelegate = new EventDelegate(this, "OnClickSkillBtnEvent");
  268. eventDelegate.parameters[0].value = buttonData;
  269. buttonData.tab_button_obj = this.CreateSkillButton(buttonData.skill_data, eventDelegate);
  270. }
  271. }
  272. updateObject.Update();
  273. List<Transform> childList = updateObject.ui_grid.GetChildList();
  274. for (int j = 0; j < childList.Count; j++)
  275. {
  276. UIWFTabButton componentInChildren = childList[j].gameObject.GetComponentInChildren<UIWFTabButton>();
  277. if (!(componentInChildren == null) && componentInChildren.isEnabled)
  278. {
  279. updateObject.tab_panel.Select(componentInChildren);
  280. break;
  281. }
  282. }
  283. }
  284. private void CreateStage(Skill.Data skill_data)
  285. {
  286. FreeSkillSelect.UpdateObject updateObject = this.update_obj_dic_["ステージ"];
  287. YotogiStage.Data data = this.user_request_stage;
  288. UIWFTabButton uiwftabButton = null;
  289. updateObject.tab_panel.ResetSelect();
  290. List<Transform> childList = updateObject.ui_grid.GetChildList();
  291. for (int i = 0; i < childList.Count; i++)
  292. {
  293. YotogiStageUnit component = childList[i].gameObject.GetComponent<YotogiStageUnit>();
  294. UIWFTabButton componentInChildren = childList[i].gameObject.GetComponentInChildren<UIWFTabButton>();
  295. if (componentInChildren.isSelected)
  296. {
  297. componentInChildren.SetSelect(false);
  298. }
  299. if (componentInChildren.isEnabled != skill_data.IsExecStage(component.stage_data))
  300. {
  301. componentInChildren.isEnabled = skill_data.IsExecStage(component.stage_data);
  302. if (componentInChildren.isEnabled)
  303. {
  304. component.thumbnail_sprite.color = new Color(1f, 1f, 1f, 1f);
  305. }
  306. else
  307. {
  308. component.thumbnail_sprite.color = new Color(0.6f, 0.6f, 0.6f, 1f);
  309. }
  310. }
  311. if (data == component.stage_data && componentInChildren.isEnabled)
  312. {
  313. uiwftabButton = componentInChildren;
  314. }
  315. }
  316. if (uiwftabButton != null)
  317. {
  318. updateObject.tab_panel.Select(uiwftabButton);
  319. }
  320. else
  321. {
  322. for (int j = 0; j < childList.Count; j++)
  323. {
  324. UIWFTabButton componentInChildren2 = childList[j].gameObject.GetComponentInChildren<UIWFTabButton>();
  325. if (!(componentInChildren2 == null) && componentInChildren2.isEnabled)
  326. {
  327. updateObject.tab_panel.Select(componentInChildren2);
  328. break;
  329. }
  330. }
  331. this.user_request_stage = data;
  332. }
  333. }
  334. private UIWFTabButton CreateSkillButton(Skill.Data skill_data, EventDelegate onclick_event)
  335. {
  336. if (skill_data == null)
  337. {
  338. return null;
  339. }
  340. FreeSkillSelect.UpdateObject updateObject = this.update_obj_dic_["スキル"];
  341. GameObject gameObject = updateObject.MoveButtonParent();
  342. if (gameObject == null)
  343. {
  344. gameObject = Utility.CreatePrefab(updateObject.button_parent, "SceneYotogi/FreeMode/FreeSkillButton", true);
  345. }
  346. UTY.GetChildObject(gameObject, "title", false).GetComponent<UILabel>().text = skill_data.name;
  347. gameObject.name = skill_data.name;
  348. UIWFTabButton component = UTY.GetChildObject(gameObject, "BG", false).GetComponent<UIWFTabButton>();
  349. if (onclick_event != null)
  350. {
  351. component.onClick.Add(onclick_event);
  352. }
  353. return component;
  354. }
  355. private UIWFTabButton CreateTypeAndCategoryButton(FreeSkillSelect.UpdateObject update_obj, string name, bool enabled, EventDelegate onclick_event)
  356. {
  357. GameObject gameObject = update_obj.MoveButtonParent();
  358. if (gameObject == null)
  359. {
  360. gameObject = Utility.CreatePrefab(update_obj.button_parent, "SceneYotogi/SkillSelect/Prefab/CategoryBtn", true);
  361. }
  362. UTY.GetChildObject(gameObject, "Label", false).GetComponent<UILabel>().text = name;
  363. UIWFTabButton component = UTY.GetChildObject(gameObject, "Button", false).GetComponent<UIWFTabButton>();
  364. gameObject.name = name;
  365. component.isEnabled = enabled;
  366. if (enabled && onclick_event != null)
  367. {
  368. component.onClick.Add(onclick_event);
  369. }
  370. return component;
  371. }
  372. private void OnClickTypeBtnEvent(FreeSkillSelect.ButtonData type_btn_data)
  373. {
  374. this.update_obj_dic_["タイプ"].UpdateArrow(type_btn_data.tab_button_obj.gameObject);
  375. this.CreateCategory(type_btn_data);
  376. }
  377. private void OnClickCategoryBtnEvent(FreeSkillSelect.ButtonData categorybtn_data)
  378. {
  379. this.update_obj_dic_["カテゴリー"].UpdateArrow(categorybtn_data.tab_button_obj.gameObject);
  380. this.CreateSkill(categorybtn_data);
  381. }
  382. private void OnClickSkillBtnEvent(FreeSkillSelect.ButtonData skill_data)
  383. {
  384. this.update_obj_dic_["スキル"].UpdateArrow(skill_data.tab_button_obj.gameObject);
  385. this.select_skill_ = skill_data.skill_data;
  386. this.CreateStage(skill_data.skill_data);
  387. }
  388. private void OnClickLevelBtnEvent()
  389. {
  390. this.update_obj_dic_["レベル"].UpdateArrow(UIButton.current.gameObject);
  391. this.yotogi_mgr_.fix_skill_level = int.Parse(UIButton.current.gameObject.name);
  392. }
  393. private void OnClickStageEvent(YotogiStageUnit stage_unit)
  394. {
  395. this.select_stage_ = (this.user_request_stage = stage_unit.stage_data);
  396. this.is_day_time_ = stage_unit.is_daytime;
  397. this.FixSkill();
  398. }
  399. private static List<FreeSkillSelect.ButtonData> CreateButtonData(Maid maid, HashSet<int> selectableStageIds)
  400. {
  401. List<FreeSkillSelect.ButtonData> list = new List<FreeSkillSelect.ButtonData>();
  402. Dictionary<Skill.Data.SpecialConditionType, KeyValuePair<FreeSkillSelect.ButtonData, Dictionary<string, FreeSkillSelect.ButtonData>>> type_data_dic = new Dictionary<Skill.Data.SpecialConditionType, KeyValuePair<FreeSkillSelect.ButtonData, Dictionary<string, FreeSkillSelect.ButtonData>>>();
  403. List<KeyValuePair<Skill.Data.SpecialConditionType, string>> list2 = new List<KeyValuePair<Skill.Data.SpecialConditionType, string>>();
  404. list2.Add(new KeyValuePair<Skill.Data.SpecialConditionType, string>(Skill.Data.SpecialConditionType.Null, "通常"));
  405. list2.Add(new KeyValuePair<Skill.Data.SpecialConditionType, string>(Skill.Data.SpecialConditionType.Drunk, "酔い"));
  406. list2.Add(new KeyValuePair<Skill.Data.SpecialConditionType, string>(Skill.Data.SpecialConditionType.Mask, "目隠し"));
  407. list2.Add(new KeyValuePair<Skill.Data.SpecialConditionType, string>(Skill.Data.SpecialConditionType.Drug, "媚薬"));
  408. list2.Add(new KeyValuePair<Skill.Data.SpecialConditionType, string>(Skill.Data.SpecialConditionType.Confess, "告白"));
  409. list2.Add(new KeyValuePair<Skill.Data.SpecialConditionType, string>(Skill.Data.SpecialConditionType.Faint, "気絶"));
  410. list2.Add(new KeyValuePair<Skill.Data.SpecialConditionType, string>(Skill.Data.SpecialConditionType.NewType, "新夜伽"));
  411. for (int i = 0; i < list2.Count; i++)
  412. {
  413. FreeSkillSelect.ButtonData buttonData = new FreeSkillSelect.ButtonData();
  414. buttonData.children_list = new List<FreeSkillSelect.ButtonData>();
  415. buttonData.name = list2[i].Value;
  416. buttonData.condition_type = list2[i].Key;
  417. list.Add(buttonData);
  418. type_data_dic.Add(buttonData.condition_type, new KeyValuePair<FreeSkillSelect.ButtonData, Dictionary<string, FreeSkillSelect.ButtonData>>(buttonData, new Dictionary<string, FreeSkillSelect.ButtonData>()));
  419. }
  420. for (int j = 0; j < list.Count; j++)
  421. {
  422. for (int k = 0; k < 8; k++)
  423. {
  424. FreeSkillSelect.ButtonData buttonData2 = list[j];
  425. FreeSkillSelect.ButtonData buttonData3 = new FreeSkillSelect.ButtonData();
  426. buttonData3.children_list = new List<FreeSkillSelect.ButtonData>();
  427. FreeSkillSelect.ButtonData buttonData4 = buttonData3;
  428. Yotogi.Category category = (Yotogi.Category)k;
  429. buttonData4.name = category.ToString();
  430. buttonData3.parent = buttonData2;
  431. buttonData2.children_list.Add(buttonData3);
  432. type_data_dic[list[j].condition_type].Value.Add(buttonData3.name, buttonData3);
  433. }
  434. }
  435. CharacterMgr characterMgr = GameMain.Instance.CharacterMgr;
  436. int[] keyArray = maid.status.yotogiSkill.datas.GetKeyArray();
  437. Dictionary<int, List<Skill.Data>> dictionary = new Dictionary<int, List<Skill.Data>>();
  438. for (int l = 0; l < keyArray.Length; l++)
  439. {
  440. Skill.Data data = Skill.Get(keyArray[l]);
  441. bool flag = false;
  442. foreach (int item in data.playable_stageid_list)
  443. {
  444. flag = selectableStageIds.Contains(item);
  445. if (flag)
  446. {
  447. break;
  448. }
  449. }
  450. if (flag)
  451. {
  452. int category2 = (int)data.category;
  453. if (!dictionary.ContainsKey(category2))
  454. {
  455. dictionary.Add(category2, new List<Skill.Data>());
  456. }
  457. dictionary[category2].Add(data);
  458. }
  459. }
  460. foreach (KeyValuePair<int, List<Skill.Data>> keyValuePair in dictionary)
  461. {
  462. List<Skill.Data> value = keyValuePair.Value;
  463. value.Sort((Skill.Data a, Skill.Data b) => a.sortId - b.sortId);
  464. }
  465. List<Skill.Data> list3 = new List<Skill.Data>();
  466. foreach (KeyValuePair<int, List<Skill.Data>> keyValuePair2 in dictionary)
  467. {
  468. List<Skill.Data> value2 = keyValuePair2.Value;
  469. foreach (Skill.Data item2 in value2)
  470. {
  471. list3.Add(item2);
  472. }
  473. }
  474. foreach (Skill.Data data2 in list3)
  475. {
  476. if (1 < data2.player_num)
  477. {
  478. int num = 0;
  479. for (int m = 0; m < characterMgr.GetMaidCount(); m++)
  480. {
  481. if (!(characterMgr.GetMaid(m) != null))
  482. {
  483. break;
  484. }
  485. num++;
  486. }
  487. if (num < data2.player_num)
  488. {
  489. continue;
  490. }
  491. }
  492. if (data2.IsExecMaid(maid.status))
  493. {
  494. FreeSkillSelect.ButtonData buttonData5 = type_data_dic[data2.specialConditionType].Value[data2.category.ToString()];
  495. if (buttonData5 != null)
  496. {
  497. FreeSkillSelect.ButtonData buttonData6 = new FreeSkillSelect.ButtonData();
  498. buttonData6.parent = buttonData5;
  499. buttonData6.name = data2.name;
  500. buttonData6.skill_data = data2;
  501. buttonData5.children_list.Add(buttonData6);
  502. }
  503. }
  504. }
  505. Action<Skill.Data.SpecialConditionType> action = delegate(Skill.Data.SpecialConditionType type)
  506. {
  507. Dictionary<string, FreeSkillSelect.ButtonData> value3 = type_data_dic[type].Value;
  508. HashSet<string> hashSet = new HashSet<string>();
  509. List<FreeSkillSelect.ButtonData> list4 = new List<FreeSkillSelect.ButtonData>();
  510. foreach (KeyValuePair<string, FreeSkillSelect.ButtonData> keyValuePair3 in value3)
  511. {
  512. if (keyValuePair3.Value.children_list != null && 1 <= keyValuePair3.Value.children_list.Count && !hashSet.Contains(keyValuePair3.Key))
  513. {
  514. hashSet.Add(keyValuePair3.Key);
  515. list4.Add(keyValuePair3.Value);
  516. }
  517. }
  518. type_data_dic[type].Key.children_list = list4;
  519. };
  520. foreach (FreeSkillSelect.ButtonData buttonData7 in list)
  521. {
  522. if (buttonData7.condition_type != Skill.Data.SpecialConditionType.Null)
  523. {
  524. action(buttonData7.condition_type);
  525. }
  526. }
  527. return list;
  528. }
  529. private static FreeSkillSelect.ButtonData GetButtonData(List<FreeSkillSelect.ButtonData> check_list, string name)
  530. {
  531. FreeSkillSelect.ButtonData result = null;
  532. if (check_list == null || string.IsNullOrEmpty(name))
  533. {
  534. return result;
  535. }
  536. for (int i = 0; i < check_list.Count; i++)
  537. {
  538. if (check_list[i] != null)
  539. {
  540. if (!string.IsNullOrEmpty(check_list[i].name) && check_list[i].name == name)
  541. {
  542. result = check_list[i];
  543. break;
  544. }
  545. }
  546. }
  547. return result;
  548. }
  549. public YotogiStage.Data select_stage
  550. {
  551. get
  552. {
  553. return this.select_stage_;
  554. }
  555. }
  556. public Skill.Data select_skill
  557. {
  558. get
  559. {
  560. return this.select_skill_;
  561. }
  562. }
  563. private Maid maid_;
  564. private List<FreeSkillSelect.ButtonData> button_data_list_;
  565. private Dictionary<string, FreeSkillSelect.UpdateObject> update_obj_dic_;
  566. private YotogiManager yotogi_mgr_;
  567. private Skill.Data select_skill_;
  568. private YotogiStage.Data select_stage_;
  569. private bool is_day_time_ = true;
  570. private YotogiStage.Data user_request_stage;
  571. private class ButtonData
  572. {
  573. public UIWFTabButton tab_button_obj;
  574. public FreeSkillSelect.ButtonData parent;
  575. public List<FreeSkillSelect.ButtonData> children_list;
  576. public string name;
  577. public Skill.Data skill_data;
  578. public Skill.Data.SpecialConditionType condition_type;
  579. }
  580. private class UpdateObject
  581. {
  582. public void Update()
  583. {
  584. this.ui_grid.Reposition();
  585. this.tab_panel.UpdateChildren();
  586. this.scroll_view.ResetPosition();
  587. this.ui_panel.UpdateAnchors();
  588. }
  589. public void MoveStorageRoom(bool click_event_clear)
  590. {
  591. if (this.storage_obj == null)
  592. {
  593. return;
  594. }
  595. Transform transform = this.button_parent.transform;
  596. Transform transform2 = this.storage_obj.transform;
  597. while (0 < transform.childCount)
  598. {
  599. GameObject gameObject = transform.GetChild(0).gameObject;
  600. UIWFTabButton componentInChildren = gameObject.GetComponentInChildren<UIWFTabButton>();
  601. if (componentInChildren != null)
  602. {
  603. componentInChildren.SetSelect(false);
  604. if (click_event_clear)
  605. {
  606. componentInChildren.onClick.Clear();
  607. }
  608. }
  609. gameObject.transform.SetParent(transform2, false);
  610. gameObject.transform.localPosition = Vector3.zero;
  611. }
  612. transform.DetachChildren();
  613. }
  614. public GameObject MoveButtonParent()
  615. {
  616. if (this.storage_obj == null)
  617. {
  618. return null;
  619. }
  620. GameObject gameObject = null;
  621. Transform transform = this.button_parent.transform;
  622. Transform transform2 = this.storage_obj.transform;
  623. if (0 < transform2.childCount)
  624. {
  625. gameObject = transform2.GetChild(0).gameObject;
  626. gameObject.transform.SetParent(transform, false);
  627. }
  628. return gameObject;
  629. }
  630. public GameObject MoveButtonParent(string object_name)
  631. {
  632. if (this.storage_obj == null || string.IsNullOrEmpty(object_name))
  633. {
  634. return null;
  635. }
  636. GameObject gameObject = null;
  637. Transform transform = this.button_parent.transform;
  638. Transform transform2 = this.storage_obj.transform;
  639. for (int i = 0; i < transform2.childCount; i++)
  640. {
  641. if (transform2.GetChild(i).name == object_name)
  642. {
  643. gameObject = transform2.GetChild(i).gameObject;
  644. gameObject.transform.SetParent(transform, false);
  645. break;
  646. }
  647. }
  648. return gameObject;
  649. }
  650. public void UpdateArrow(GameObject target_obj)
  651. {
  652. if (this.arrow_obj == null || target_obj == null)
  653. {
  654. return;
  655. }
  656. Vector3 position = target_obj.transform.TransformPoint(new Vector3(0f, 0f, 0f));
  657. Vector3 local_pos = this.arrow_obj.transform.parent.InverseTransformPoint(position);
  658. local_pos.x = this.arrow_obj.transform.localPosition.x;
  659. local_pos.y += 18f;
  660. Hashtable args = TweenHash.EaseOutQuint(TweenHash.Type.Position, local_pos, 0.3f);
  661. iTween.MoveTo(this.arrow_obj, args);
  662. }
  663. public void Clear()
  664. {
  665. Transform transform = this.button_parent.transform;
  666. for (int i = 0; i < transform.childCount; i++)
  667. {
  668. UnityEngine.Object.Destroy(transform.GetChild(i).gameObject);
  669. }
  670. transform.DetachChildren();
  671. }
  672. public GameObject button_parent;
  673. public UIGrid ui_grid;
  674. public UIWFTabPanel tab_panel;
  675. public UIScrollView scroll_view;
  676. public UIPanel ui_panel;
  677. public GameObject arrow_obj;
  678. public GameObject storage_obj;
  679. }
  680. }