/************************************************************************/ /* アクセサ */ /************************************************************************/ /// <summary> /// 参加メンバー情報の設定 /// </summary> /// <param name="iJoinMemberInfo">参加メンバー情報</param> public void SetJoinMemberInfo(BattleManager.SBattleJoinInfo iJoinMemberInfo) { //テキスト系設定 MemberNoTextBlock.Text = string.Format("参加No.{0:D2}", iJoinMemberInfo.mJoinID + 1); MemberNameTextBlock.Text = MemberManager.GetInstance().GetMemberInfo(iJoinMemberInfo.mMemberID).mName; //アイコン設定 bool set_Valid_Use_Character_ID_Flg = (iJoinMemberInfo.mUserCharacterID != -1); if (set_Valid_Use_Character_ID_Flg) { try { UseCharacterImage.Source = PresetManager.GetInstance().GetCharacterInfo(iJoinMemberInfo.mUserCharacterID).mIconImage; } catch (System.Exception) { set_Valid_Use_Character_ID_Flg = false; } } if (!set_Valid_Use_Character_ID_Flg) { UseCharacterImage.Source = PresetManager.GetInstance().GetUnknownCharacterIcon(); } }
/************************************************************************/ /* 内部処理 */ /************************************************************************/ //============================================================================ //! プロジェクトファイルのロード private bool _LoadProjectFile(string iFilePath) { try { //ファイルが無ければ無視 if (!System.IO.File.Exists(iFilePath)) { return(false); } //必要なマネージャの初期化 SaveManager.GetInstance().ProjectFilePath = iFilePath; DataManager.GetInstance().ReadData(iFilePath); MemberManager.GetInstance().LoadMemberData(); BattleManager.GetInstance().LoadBattleData(); PresetManager.GetInstance().LoadPreset(); SystemManager.GetInstance().LoadSystemData(); return(true); } catch (System.Exception) { return(false); } }
/************************************************************************/ /* 内部処理 */ /************************************************************************/ //============================================================================ //! メンバーリストの更新 private void _RefreshMemberList() { //まだ無視 if (NormalDisplayRadioButton == null) { return; } //メンバーリスト作成 var member_List = MemberManager.GetInstance().GetMemberList((MemberManager.ESortKind)SortMemberComboBox.SelectedIndex); //現在のメンバー全てを設定 MemberStackPanel.Children.Clear(); var set_Width = MemberScrollViewer.Width; int index = 0; var color_List = new Brush[2] { new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555")) }; //通常表示 if (NormalDisplayRadioButton.IsChecked == true) { foreach (var iMember in member_List) { var control = new MemberListControl(); control.Width = set_Width; control.Background = color_List[index % 2]; control.EditButton.TabIndex = iMember.mID; control.EditButton.Click += _ClickEditMember; control.SetMemberInfo(iMember); MemberStackPanel.Children.Add(control); ++index; } } else { foreach (var iMember in member_List) { var control = new MemberMinListControl(); control.Width = set_Width; control.Background = color_List[index % 2]; control.EditButton.TabIndex = iMember.mID; control.EditButton.Click += _ClickEditMember; control.SetMemberInfo(iMember); MemberStackPanel.Children.Add(control); ++index; } } //追加コントロール var add_Contrl = new MemberAddControl(); add_Contrl.AddButton.Click += _ClickAddMember; MemberStackPanel.Children.Add(add_Contrl); }
//============================================================================ //! 選択していないメンバーリストの更新 private void _RefreshNonSelectMemberList() { NonSelectMemberStackPanel.Children.Clear(); var set_Width = NonSelectMemberScrollViewer.Width; int color_Index = 0; var color_List = new Brush[2] { new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555")) }; //メンバーリスト作成 var member_List = MemberManager.GetInstance().GetMemberList((MemberManager.ESortKind)SortMemberComboBox.SelectedIndex); //検索情報 string search_member_name = ""; int search_character_id = -1; if (IsOpenSearchWindow()) { search_member_name = mSearchWindow.GetSearchMemberName(); search_character_id = mSearchWindow.GetSearchCharacterID(); } //作成 foreach (var iMember in member_List) { if (!_IsJoinMember(iMember.mID)) { //サーチチェック if (search_member_name.Length > 0 && iMember.mName.IndexOf(search_member_name) == -1) { continue; } if (search_character_id != -1 && search_character_id != iMember.mDefaultCharacterID) { continue; } var control = new NonSelectMemberControl(); control.Width = set_Width; control.EntryButton.Tag = iMember; control.EntryButton.Click += _ClickJoin; control.Background = color_List[color_Index % 2]; control.SetMemberInfo(iMember); NonSelectMemberStackPanel.Children.Add(control); ++color_Index; } } }
/************************************************************************/ /* コールバック処理 */ /************************************************************************/ //============================================================================ //! オートセーブの実行 private void _AutoSave(object iSender, EventArgs iArgs) { mTimer.Stop(); try { DataManager.GetInstance().SetData(mMemberInfoKey, MemberManager.GetInstance().GetMemberList().ToArray()); DataManager.GetInstance().SetData(mBattleInfoKey, BattleManager.GetInstance().GetBattleList().ToArray()); DataManager.GetInstance().SetData(mSystemInfoKey, SystemManager.GetInstance().GetSystemInfo()); DataManager.GetInstance().WriteData(new string[] { mMemberInfoKey, mBattleInfoKey, mPresetInfoKey, mSystemInfoKey }, mProjectFilePath); } catch (System.Exception) {} mSaveWindow.Close(); mSaveWindow = null; }
/************************************************************************/ /* アクセサ */ /************************************************************************/ /// <summary> /// 表示情報設定 /// </summary> /// <param name="iInfoIndex">表示情報番号</param> public void SetInfo(int iInfoIndex) { string top_Name = ""; int character_Index = -1; //チーム戦の場合 if (BattleOperatorManager.GetInstance().IsTeamBattleFlg()) { var team_Info = BattleOperatorManager.GetInstance().GetTeamInfo(iInfoIndex); top_Name = team_Info.mTeamName; var join_Info = new BattleManager.SBattleJoinInfo(); BattleOperatorManager.GetInstance().GetJoinInfo(ref join_Info, team_Info.mJoinIDList[0]); character_Index = join_Info.mUserCharacterID; } //シングル戦の場合 else { var join_Info = new BattleManager.SBattleJoinInfo(); BattleOperatorManager.GetInstance().GetJoinInfo(ref join_Info, iInfoIndex); top_Name = MemberManager.GetInstance().GetMemberInfo(join_Info.mMemberID).mName; character_Index = join_Info.mUserCharacterID; } //設定 TopTextBlock.Text = top_Name; bool set_Valid_Use_Character_ID_Flg = (character_Index != -1); if (set_Valid_Use_Character_ID_Flg) { try { TopCharacterImage.Source = PresetManager.GetInstance().GetCharacterInfo(character_Index).mIconImage; } catch (System.Exception) { set_Valid_Use_Character_ID_Flg = false; } } if (!set_Valid_Use_Character_ID_Flg) { TopCharacterImage.Source = PresetManager.GetInstance().GetUnknownCharacterIcon(); } TopCharacterImage.Visibility = Visibility.Visible; mInfoIndex = iInfoIndex; }
//============================================================================ //! メンバーの追加ボタンが押された時の処理 private void _ClickAddMember(object iSender, RoutedEventArgs iArgs) { //無かった場合はゲームプリセットを選択させる var window = new MemberAddWindow(); //追加ボタンが押されたときの重複チェック window.AddButton.Click += (iClickSender, iClickArgs) => { //既に名前がある場合は無効 string name = window.MemberNameTextBox.Text; foreach (var iInfo in MemberManager.GetInstance().GetMemberList()) { if (name.Length > 14) { iClickArgs.Handled = true; SystemUtility.DisplayErrorDialog("メンバー名は14文字以内で入力してください"); return; } else if (iInfo.mName == name) { iClickArgs.Handled = true; string txt = string.Format("既に「{0}」という名前は存在します\n別の名前にして下さい", name); SystemUtility.DisplayErrorDialog(txt); break; } } }; window.SettingCallback(); //追加が押されて全ての条件を満たした時に追加 window.AddButton.Click += (iClickSender, iClickArgs) => { //追加 var info = new MemberManager.SMemberInfo(); info.mName = window.MemberNameTextBox.Text; info.mDefaultCharacterID = window.GetSelectCharacterIndex(); MemberManager.GetInstance().AddMember(info); //メンバーリストの更新 _RefreshMemberList(); MemberScrollViewer.ScrollToEnd(); }; window.ShowDialog(); }
//============================================================================ //! 新しいプロジェクトの作成ボタンが押された private void _ClickNewProject(object iSender, RoutedEventArgs iArgs) { //プリセットデータを選択させて一旦保存してから開始 var window = new SelectPresetWindow(); window.ShowDialog(); string preset_name = window.GetPresetName(); if (preset_name == null) { return; } //プロジェクトの保管先の設定 SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "FCあどみぃ!プロジェクトファイル(*.pjb)|*.pjb|すべてのファイル(*.*)|*.*"; dialog.Title = "プロジェクトファイルを選択してください"; dialog.RestoreDirectory = true; dialog.InitialDirectory = SystemUtility.GetSystemPath(); if (dialog.ShowDialog() == true) { //データの設定 DataManager.GetInstance().SetData(SaveManager.GetInstance().PresetInfoKey, preset_name); //一旦状態保存 var info = new SSerialData(); info.mLastRefFilePath = dialog.FileName; DataManager.GetInstance().SetData(SystemUtility.GetSceneName(this), info); SaveManager.GetInstance().ProjectFilePath = dialog.FileName; SaveManager.GetInstance().SaveProject(); SaveManager.GetInstance().SaveContentData(); //必要なマネージャの初期化 MemberManager.GetInstance().LoadMemberData(); BattleManager.GetInstance().LoadBattleData(); PresetManager.GetInstance().LoadPreset(); SystemManager.GetInstance().LoadSystemData(); _StartUpTool(); } }
/************************************************************************/ /* 基本処理 */ /************************************************************************/ /// <summary> /// コンストラクタ /// </summary> /// <param name="iMemberID">メンバーID</param> public MenberDetailWindow(int iMemberID) { InitializeComponent(); //メンバー情報登録 var member_manager = MemberManager.GetInstance(); var member_info = member_manager.GetMemberInfo(iMemberID); Title = member_info.mName + "の詳細"; RegistTextBlock.Text = string.Format("登録番号No.{0:D3}", iMemberID); RegistDateTextBlock.Text = "登録日時 " + member_info.mResistDate; MemberNameTextBlock.Text = member_info.mName; MemberNameShadowTextBlock.Text = member_info.mName; //アイコン設定 bool set_Valid_Use_Character_ID_Flg = (member_info.mDefaultCharacterID != -1); if (set_Valid_Use_Character_ID_Flg) { try { CharacterIcon.Source = PresetManager.GetInstance().GetCharacterInfo(member_info.mDefaultCharacterID).mIconImage; } catch (System.Exception) { set_Valid_Use_Character_ID_Flg = false; } } if (!set_Valid_Use_Character_ID_Flg) { CharacterIcon.Source = PresetManager.GetInstance().GetUnknownCharacterIcon(); } //大会情報登録 _CreateBattleTable(iMemberID); }
//============================================================================ //! 選択済みのメンバーリストの更新 private void _RefreshSelectMemberList() { SelectMemberStackPanel.Children.Clear(); var set_Width = SelectMemberScrollViewer.Width; var member_Manager = MemberManager.GetInstance(); var color_Index = 0; var color_List = new Brush[2] { new SolidColorBrush(SystemUtility.StringToColor("#55000000")), new SolidColorBrush(SystemUtility.StringToColor("#55555555")) }; foreach (var iJoinMember in mJoinMemberList) { var control = new SelectMemberControl(); control.Width = set_Width; control.RemoveEntryButton.Tag = iJoinMember; control.RemoveEntryButton.Click += _ClickJoinRemove; control.CollideRectangle.PreviewMouseLeftButtonDown += _ClickJoinMember; control.Background = color_List[color_Index % 2]; control.SetMemberInfo(iJoinMember.mJoinID, member_Manager.GetMemberInfo(iJoinMember.mMemberID).mName, iJoinMember.mUseCharacterID); control.TabIndex = SelectMemberStackPanel.Children.Count; SelectMemberStackPanel.Children.Add(control); ++color_Index; } }
/************************************************************************/ /* コールバック処理 */ /************************************************************************/ //============================================================================ //! ロード時の処理 private void _Loaded(object iSender, RoutedEventArgs iArgs) { //シーンの初期化 var scene_Manager = SceneManager.GetInstance(); scene_Manager.SetControls(ContentControl, LeftFilterImage, RightFilterImage); LeftFilterImage.Margin = RightFilterImage.Margin = new Thickness(); //ロードコンテンツを設定する #if DL_DEBUG //ライセンス作成 if (true) { SystemUtility.CreateLicenseFiles(1); return; } bool test = true; if (test) { //データの設定 DataManager.GetInstance().SetData(SaveManager.GetInstance().PresetInfoKey, "BLAZBLUE CHRONOPHANTASMA"); //プロジェクトデータ設定 SaveManager.GetInstance().ProjectFilePath = @"C:\FCあどみぃ!\FCあどみぃ!\System\デバッグプロジェクト.pjb"; DataManager.GetInstance().ReadData(SaveManager.GetInstance().ProjectFilePath); //必要なマネージャの初期化 MemberManager.GetInstance().LoadMemberData(); BattleManager.GetInstance().LoadBattleData(); PresetManager.GetInstance().LoadPreset(); SystemManager.GetInstance().LoadSystemData(); //大会設定 var btl_Op_Manager = BattleOperatorManager.GetInstance(); btl_Op_Manager.BeginBattle(BattleManager.EBattleKind.BATTLE_SIMPLE_TOURNAMENT); btl_Op_Manager.SetBattleName("デバッグ大会!"); btl_Op_Manager.SetBattleObject(new SimpleTournamentObject()); //メンバー設定 //scene_Manager.AdvanceScene(SceneManager.EScene.SCENE_MEMBER_SELECT); foreach (var iIndex in System.Linq.Enumerable.Range(0, 32)) { btl_Op_Manager.AddMember(iIndex); } btl_Op_Manager.SetLockJoinMember(true); //チーム設定 var team_Val = 16; if (BattleOperatorManager.GetInstance().GetJoinMemberVal() % team_Val != 0) { throw new System.Exception(); } var in_Member_Val = BattleOperatorManager.GetInstance().GetJoinMemberVal() / team_Val; foreach (var iIndex in System.Linq.Enumerable.Range(0, team_Val)) { var info = new BattleManager.SBattleTeamInfo(); info.mTeamID = iIndex; info.mTeamName = string.Format("Team{0}", iIndex); info.mJoinIDList = new List <int>(); foreach (var iMemberIndex in System.Linq.Enumerable.Range(0, in_Member_Val)) { info.mJoinIDList.Add((iIndex * in_Member_Val) + iMemberIndex); } btl_Op_Manager.AddTeam(info); } btl_Op_Manager.SetLockTeam(true); //scene_Manager.AdvanceScene(SceneManager.EScene.SCENE_TEAM_SELECT); scene_Manager.AdvanceScene(SceneManager.EScene.SCENE_BATTLE_SIMPLE_TOURNAMENT); /*紅白戦 * var team = (TeamSelectScene)scene_Manager.AdvanceScene(SceneManager.EScene.SCENE_TEAM_SELECT); * team.AddTeam("紅組"); * team.AddTeam("白組"); * team.SetTeamOperateFlg(false);*/ //scene_Manager.AdvanceScene(SceneManager.EScene.SCENE_MEMBER_SELECT); } else #endif { var load_Scene = new LoadScene(); LoadContent.Content = load_Scene; } }
//============================================================================ //! チームの編集ボタンが押された時の処理 private void _ClickEditTeam(object iSender, RoutedEventArgs iArgs) { //チェック var button = iSender as Button; if (button == null) { return; } //ウィンドウ表示準備 var window = new TeamAddWindow(); window.Title = "チーム編集"; var index = button.TabIndex; string current_Name = mTeamList[index].mTeamName; window.TeamNameTextBox.Text = current_Name; window.AddButton.Content = "決定"; //追加ボタンが押されたときの重複チェック window.AddButton.Click += (iClickSender, iClickArgs) => { //既に名前がある場合は無効 string name = window.TeamNameTextBox.Text; foreach (var iInfo in MemberManager.GetInstance().GetMemberList()) { if (iInfo.mName == name) { //現在の自分の物の場合は無視 if (current_Name != name) { iClickArgs.Handled = true; string txt = string.Format("既に「{0}」というチームは存在します\n別の名前にして下さい", name); SystemUtility.DisplayErrorDialog(txt); break; } } } }; window.SettingCallback(); //決定が押されて全ての条件を満たした時に追加 window.AddButton.Click += (iClickSender, iClickArgs) => { if (current_Name != window.TeamNameTextBox.Text) { try { var info = mTeamList[index]; info.mTeamName = window.TeamNameTextBox.Text; mTeamList[index] = info; _Refresh(); } catch (System.Exception) { } } }; window.ShowDialog(); }
//============================================================================ //! メンバーの編集ボタンが押された時の処理 private void _ClickEditMember(object iSender, RoutedEventArgs iArgs) { //チェック var button = iSender as Button; if (button == null) { return; } //押されたボタンのメンバー情報取得 int id = button.TabIndex; var member_Info = MemberManager.GetInstance().GetMemberInfo(id); //選択されているセルが無かった場合は無視 var window = new MemberAddWindow(); window.Title = "メンバー編集"; int index = 1; foreach (var iInfo in PresetManager.GetInstance().GetCharacterList()) { if (iInfo.mIndex == member_Info.mDefaultCharacterID) { window.CharacterComboBox.SelectedIndex = index; break; } ++index; } string current_Name = member_Info.mName; window.MemberNameTextBox.Text = current_Name; window.AddButton.Content = "決定"; //追加ボタンが押されたときの重複チェック window.AddButton.Click += (iClickSender, iClickArgs) => { //既に名前がある場合は無効 string name = window.MemberNameTextBox.Text; foreach (var iInfo in MemberManager.GetInstance().GetMemberList()) { if (iInfo.mName == name) { //現在の自分の物の場合は無視 if (current_Name != name) { iClickArgs.Handled = true; string txt = string.Format("既に「{0}」という名前は存在します\n別の名前にして下さい", name); SystemUtility.DisplayErrorDialog(txt); break; } } } }; window.SettingCallback(); //追加が押されて全ての条件を満たした時に追加 window.AddButton.Click += (iClickSender, iClickArgs) => { if (current_Name != window.MemberNameTextBox.Text || member_Info.mDefaultCharacterID != window.GetSelectCharacterIndex()) { try { member_Info.mName = window.MemberNameTextBox.Text; member_Info.mDefaultCharacterID = window.GetSelectCharacterIndex(); MemberManager.GetInstance().SetMemberInfo(id, member_Info); _RefreshMemberList(); } catch (System.Exception) { } } }; window.ShowDialog(); }
/************************************************************************/ /* 内部定義 */ /************************************************************************/ //============================================================================ //! テーブルの初期化 private void _InitializeTable() { //メンバー全員を入れる var member_manager = MemberManager.GetInstance(); var battle_manager = BattleManager.GetInstance(); foreach (var iMember in member_manager.GetMemberList()) { //基本情報 var data = new MemberDetailsData(); data.ID = iMember.mID; data.IDString = string.Format("{0:D3}", iMember.mID); data.Name = iMember.mName; data.DefaultCharaID = iMember.mDefaultCharacterID; var split = iMember.mResistDate.Split(' '); data.RegistaDate = (split.Length == 2) ? split[0] + "\n" + split[1] : iMember.mResistDate; //大会情報 var result_list = battle_manager.GetMemberBattleResultList(iMember.mID, true); data.JoinTournamentVal = result_list.Count; if (data.JoinTournamentVal == 0) { data.LastJoinTournamentDate = "---"; } else { int battle_index = result_list[0].mIndex; data.LastJoinTournamentDate += battle_manager.GetBattle(result_list[0].mIndex).mDate; for (var index = 1; index < result_list.Count; ++index) { var date = battle_manager.GetBattle(result_list[index].mIndex).mDate; if (data.LastJoinTournamentDate.CompareTo(date) < 0) { data.LastJoinTournamentDate = date; battle_index = result_list[index].mIndex; } } data.LastJoinTournamentDate = battle_manager.GetBattle(battle_index).mName + "\n" + data.LastJoinTournamentDate; } //アイコン設定 bool set_Valid_Use_Character_ID_Flg = (iMember.mDefaultCharacterID != -1); if (set_Valid_Use_Character_ID_Flg) { try { data.Icon = PresetManager.GetInstance().GetCharacterInfo(iMember.mDefaultCharacterID).mIconImage; } catch (System.Exception) { set_Valid_Use_Character_ID_Flg = false; } } if (!set_Valid_Use_Character_ID_Flg) { data.Icon = PresetManager.GetInstance().GetUnknownCharacterIcon(); } mMemberGridTable.Add(data); } //バインド MemberDataGrid.ItemsSource = mMemberGridTable; }
/************************************************************************/ /* 参加メンバー系アクセサ */ /************************************************************************/ /// <summary> /// 参加するメンバーを追加(ほぼデバッグ用になる?) /// </summary> /// <param name="iMemberID">メンバーID</param> public void AddMember(int iMemberID) { var info = MemberManager.GetInstance().GetMemberInfo(iMemberID); AddMember(iMemberID, info.mDefaultCharacterID); }