using System; using System.Collections.Generic; using MaidStatus; using Yotogis; public class YotogiSubCharacterSelectManager : WfScreenChildren { public int GetPlayerSelectNum() { if (this.yotogi_mgr_ == null) { return 0; } if (this.yotogi_mgr_.is_free_mode) { Maid maid = GameMain.Instance.CharacterMgr.GetMaid(0); int num = 1; int[] keyArray = maid.status.yotogiSkill.datas.GetKeyArray(); for (int i = 0; i < keyArray.Length; i++) { Skill.Data data = Skill.Get(keyArray[i]); if (PersonalEventBlocker.IsEnabledYotodiSkill(maid.status.personal, data.id)) { num = Math.Max(num, data.player_num); } } return ((this.yotogi_mgr_.GetPlayPossibleMaidCount() >= num) ? num : this.yotogi_mgr_.GetPlayPossibleMaidCount()) - 1; } if (this.yotogi_mgr_.play_skill_array == null) { return 0; } int num2 = 0; for (int j = 0; j < this.yotogi_mgr_.play_skill_array.Length; j++) { if (this.yotogi_mgr_.play_skill_array[j] != null && this.yotogi_mgr_.play_skill_array[j].skill_pair.base_data != null) { if (num2 < this.yotogi_mgr_.play_skill_array[j].skill_pair.base_data.player_num) { num2 = this.yotogi_mgr_.play_skill_array[j].skill_pair.base_data.player_num; } } } return ((this.yotogi_mgr_.GetPlayPossibleMaidCount() >= num2) ? num2 : this.yotogi_mgr_.GetPlayPossibleMaidCount()) - 1; } public override void Awake() { base.Awake(); this.yotogi_mgr_ = base.GetComponentInParent(); this.chara_select_ = base.root_obj.GetComponentInChildren(); this.ok_btn_ = UTY.GetChildObject(base.root_obj, "Ok", false).GetComponent(); this.ok_btn_.onClick.Add(new EventDelegate(this, "OnClickOK")); if (UTY.GetChildObject(base.root_obj, "Cancel", true) != null) { UIButton component = UTY.GetChildObject(base.root_obj, "Cancel", false).GetComponent(); component.onClick.Add(new EventDelegate(this, "OnClickCancel")); } } protected override void OnCall() { CharacterMgr characterMgr = GameMain.Instance.CharacterMgr; this.maid_ = this.yotogi_mgr_.maid; if (UTY.GetChildObject(base.root_obj, "Cancel", true) != null) { UTY.GetChildObject(base.root_obj, "Cancel", false).SetActive(!string.IsNullOrEmpty(this.cancel_label)); } for (int i = 0; i < characterMgr.GetMaidCount(); i++) { Maid maid = characterMgr.GetMaid(i); if (maid != null && maid.Visible) { maid.Visible = false; } } for (int j = 0; j < characterMgr.GetManCount(); j++) { Maid man = characterMgr.GetMan(j); if (man != null && man.Visible) { man.Visible = false; } } this.ok_btn_.isEnabled = false; this.loded_chara_ = false; this.loaded_check_maid_.Clear(); int select_chara_num = this.GetPlayerSelectNum(); this.chara_select_.SetCallBackMaidList(new CharacterSelectManager.CallBackMaidList(this.yotogi_mgr_.GetSubMaidList)); if (1 < select_chara_num || select_chara_num == 0) { CharacterSelectManager.CallBackOnMultiSelect callBackOnMultiSelect = delegate(Maid[] maid_array) { int select_chara_num = select_chara_num; int num = 0; this.loaded_check_maid_.Clear(); for (int k = 0; k < maid_array.Length; k++) { if (maid_array[k] != null) { this.loaded_check_maid_.Add(maid_array[k]); num++; } } if (0 < select_chara_num) { this.ok_btn_.isEnabled = (select_chara_num == num); } }; this.chara_select_.SetCallBackOnMultiSelect(callBackOnMultiSelect); if (select_chara_num == 0) { this.chara_select_.Create(CharacterSelectManager.Type.Multiple, 3, true); } else { this.chara_select_.Create(CharacterSelectManager.Type.Multiple, select_chara_num, true); } } else { CharacterSelectManager.CallBackOnSelect callBackCallBackOnSelect = delegate(Maid select_maid) { this.loaded_check_maid_.Clear(); this.loaded_check_maid_.Add(select_maid); }; this.chara_select_.SetCallBackCallBackOnSelect(callBackCallBackOnSelect); this.chara_select_.Create(CharacterSelectManager.Type.Select, 3, true); this.ok_btn_.isEnabled = true; } } protected override bool IsCallFadeIn() { if (this.maid_.IsBusy) { return false; } this.maid_.FaceAnime("通常", 0f, 0); this.maid_.FaceBlend("無し"); return true; } private void OnClickOK() { if (this.loaded_check_maid_.Count <= 0) { return; } this.loded_chara_ = true; this.Finish(); } private void OnClickCancel() { if (string.IsNullOrEmpty(this.cancel_label)) { return; } this.yotogi_mgr_.null_mgr.SetNextLabel(this.cancel_label); this.Finish(); } protected override void OnFinish() { if (!this.loded_chara_) { return; } CharacterMgr characterMgr = GameMain.Instance.CharacterMgr; int num = 1; for (int i = 0; i < this.loaded_check_maid_.Count; i++) { if (!(this.loaded_check_maid_[i] == null)) { characterMgr.SetActiveMaid(this.loaded_check_maid_[i], num++); this.loaded_check_maid_[i].Visible = true; this.loaded_check_maid_[i].AllProcPropSeqStart(); } } } protected override void OnFadeEnd() { if (this.loaded_check_maid_.Count == 0 || !this.loded_chara_) { if (this.yotogi_mgr_.null_mgr.IsExistNextLabel()) { this.yotogi_mgr_.CallScreen(YotogiManager.CallScreenType.Null.ToString()); } else { this.yotogi_mgr_.CallScreen(YotogiManager.CallScreenType.SkillSelect.ToString()); } } bool flag = true; for (int i = 0; i < this.loaded_check_maid_.Count; i++) { if (!(this.loaded_check_maid_[i] == null)) { if (this.loaded_check_maid_[i].IsBusy) { flag = false; break; } } } if (flag) { this.loaded_check_maid_.Clear(); if (this.yotogi_mgr_.null_mgr.IsExistNextLabel()) { this.yotogi_mgr_.CallScreen(YotogiManager.CallScreenType.Null.ToString()); } else { this.yotogi_mgr_.CallScreen(YotogiManager.CallScreenType.SkillSelect.ToString()); } } } public string cancel_label { get { return this.cancel_label_; } set { this.cancel_label_ = value; } } private Maid maid_; private YotogiManager yotogi_mgr_; private CharacterSelectManager chara_select_; private UIButton ok_btn_; private List loaded_check_maid_ = new List(); private string cancel_label_ = string.Empty; private bool loded_chara_; }