/// <summary> /// オートセーブ /// </summary> public void AutoSaveProject() { if (SystemManager.GetInstance().GetSystemInfo().mAutoSaveFlg) { SaveProject(); } }
/// <summary> /// コンストラクタ /// </summary> public LoadScene() { InitializeComponent(); ContentBorder.IsEnabled = false; //前に読み込んだファイルが存在しない場合はクリック出来ない var get_Obj = DataManager.GetInstance().GetData(SystemUtility.GetSceneName(this)); if (get_Obj == null) { RefPrevFileButton.IsEnabled = false; } else { var info = (SSerialData)get_Obj; if (System.IO.File.Exists(info.mLastRefFilePath)) { RefPrevFileButton.IsEnabled = true; } } //情報設定 var version = Version.CurrentVersion; InfoTextBlock.Text = string.Format("FCあどみぃ! Ver{0} -{1}-", version, SystemManager.GetInstance().GetUserName()); }
/************************************************************************/ /* 内部処理 */ /************************************************************************/ //============================================================================ //! プロジェクトファイルのロード 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); } }
/// <summary> /// 指定シーンを作成して進む /// </summary> /// <param name="iScene">シーン番号</param> /// <returns>シーンインスタンス</returns> public SceneInterface AdvanceScene(EScene iScene) { //コールバック初期化 SystemManager.GetInstance().SetCloseCheckCallback(null); SystemManager.GetInstance().SetInputKeyDelegate(null); //シーンの作成と追加 var scene = mCreateSceneDelegateList[(int)iScene](); var user_Control = (UserControl)scene; user_Control.TabIndex = (int)iScene; mSceneStack.Add(scene); //シーン変更演出の開始(ルートシーンの場合は開けるところから if (mSceneStack.Count == 1) { _WrapWindowFilter(null, null); } else { _BeginChangeScene(); } return(scene); }
//============================================================================ //! OKボタンが押された private void _ClickOKButton(object iSender, RoutedEventArgs iArgs) { //チェック var tweet = TweetTextBox.Text.Trim(); if (tweet.Length == 0) { System.Media.SystemSounds.Hand.Play(); MessageBox.Show("ツイートが入力されて居ません", "エラー", MessageBoxButton.OK, MessageBoxImage.Error); return; } tweet += "\n\n#FCあどみぃ!"; //ツイート try { var manager = SystemManager.GetInstance(); var service = new TweetSharp.TwitterService(manager.GetTwitterAPICKey(), manager.GetTwitterAPICSecret()); var info = manager.GetSystemInfo(); service.AuthenticateWith(info.mAccessToken.mToken, info.mAccessToken.mTokenSecret); var responce = service.SendTweet(new TweetSharp.SendTweetOptions { Status = tweet }); System.Media.SystemSounds.Asterisk.Play(); MessageBox.Show("ツイートに成功しました!", "確認", MessageBoxButton.OK, MessageBoxImage.Information); } catch (System.Exception iException) { SystemUtility.DisplayErrorDialog("ツイートに失敗しました\n\n" + iException.Message); } Close(); }
/************************************************************************/ /* 内部処理 */ /************************************************************************/ //============================================================================ //! 入力されている項目をマネージャに保存 private void _UpdateInfo() { var info = SystemManager.GetInstance().GetSystemInfo(); info.mAutoSaveFlg = (AutoSaveCheckBox.IsChecked == true); SystemManager.GetInstance().SetSystemInfo(info); }
//============================================================================ //! デフォルトツイート設定ボタンが押された private void _ClickDefaultTweetButton(object iSender, RoutedEventArgs iArgs) { //ウィンドウを表示する var manager = SystemManager.GetInstance(); var info = manager.GetSystemInfo(); var window = new DefaultTweetInputWindow(); if (info.mDefaultTweetStyle == null || info.mDefaultTweetStyle.Trim().Length == 0) { window.SetDefaultText(); } else { window.SetText(info.mDefaultTweetStyle); } window.Closing += (iClosingSender, iClosingArgs) => { //成功した時のみ if (window.IsSuccess()) { info.mDefaultTweetStyle = window.GetDefaultTweet(); manager.SetSystemInfo(info); SaveManager.GetInstance().SaveProject(); } }; window.ShowDialog(); }
//============================================================================ //! ツイッター連携解除ボタンが押された private void _ClickRemoveTwitterAccountButton(object iSender, RoutedEventArgs iArgs) { var manager = SystemManager.GetInstance(); var info = manager.GetSystemInfo(); info.mAccessToken = new SystemManager.STwitterAccessToken(); manager.SetSystemInfo(info); _Refresh(); }
/// <summary> /// コンストラクタ /// </summary> public TournamentControl() { InitializeComponent(); BackgroundImage.Source = PresetManager.GetInstance().GetBackGroundImage(); SystemManager.GetInstance().SetCloseCheckCallback(_CheckClose); SystemManager.GetInstance().SetInputKeyDelegate(_InputKey); TeamDetailsControl.Visibility = Visibility.Hidden; MainControl.SetTeamDisplay(TeamDetailsControl); }
/************************************************************************/ /* 公開処理 */ /************************************************************************/ /// <summary> /// コンストラクタ /// </summary> public MemberSelectScene() { InitializeComponent(); //初期設定 SystemManager.GetInstance().SetInputKeyDelegate(_InputKey); SystemManager.GetInstance().SetCloseCheckCallback(_CheckClose); //更新 _RefreshMemberList(); }
/************************************************************************/ /* 基本処理 */ /************************************************************************/ /// <summary> /// コンストラクタ /// </summary> public TwitterSettingWindow() { InitializeComponent(); //認証画面を出す var manager = SystemManager.GetInstance(); mService = new TwitterService(manager.GetTwitterAPICKey(), manager.GetTwitterAPICSecret()); mRequestToken = mService.GetRequestToken(); string authorize_Url = "https://api.twitter.com/oauth/authorize?" + "oauth_token=" + mRequestToken.Token + "&oauth_token_secret=" + mRequestToken.TokenSecret; //Uri uri = mService.GetAuthenticationUrl(mRequestToken); TwitterWebBrowser.Source = new Uri(authorize_Url); }
/************************************************************************/ /* 内部処理 */ /************************************************************************/ //============================================================================ //! システム情報の初期化 private void _InitializeSystem() { //ラムダ式で解決 SourceInitialized += (iSender, iArgs) => { //ウィンドウ位置の読み込み var get_obj = DataManager.GetInstance().GetData("MainWindow"); if (get_obj != null) { var point = (Point)get_obj; Left = point.X; Top = point.Y; } }; //閉じる直前 Closing += (iSender, iArgs) => { //閉じていいかチェック if (!SystemManager.GetInstance().IsWindowCheckClose()) { iArgs.Cancel = true; return; } DataManager.GetInstance().SetData("MainWindow", new Point(Left, Top)); }; //キー入力があった KeyDown += (iSender, iArgs) => { SystemManager.GetInstance().KeyInput(iArgs); }; //閉じた後 Closed += (iSender, iArgs) => { //コンテンツ情報を保存して終了 SaveManager.GetInstance().SaveContentData(); }; //コンテンツデータがある場合は読み込み string content_Path = SaveManager.GetInstance().ContentFilePath; if (System.IO.File.Exists(content_Path)) { DataManager.GetInstance().ReadData(content_Path); } }
/// <summary> /// 一つ前のシーンに戻る /// </summary> public void ReturnBackScene() { //コールバック初期化 SystemManager.GetInstance().SetCloseCheckCallback(null); SystemManager.GetInstance().SetInputKeyDelegate(null); //一つ削除 mSceneStack.RemoveAt(mSceneStack.Count - 1); //初期化 mSceneStack[mSceneStack.Count - 1].SceneBack(); //演出 _BeginChangeScene(); }
/************************************************************************/ /* コールバック処理 */ /************************************************************************/ //============================================================================ //! オートセーブの実行 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; }
//============================================================================ //! 新しいプロジェクトの作成ボタンが押された 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="iFilePath">ファイルパス</param> /// <param name="iControl">追加コントロール</param> public void CreateMemberScreenShot(string iFilePath, UserControl iControl) { BeginScreenShot(); //追加コントロールを結合する var grid = SystemManager.GetInstance().GetScreenShotGrid(); var stock_Margin = iControl.Margin; var current_Size = new Size(grid.Width, grid.Height); if (grid.Width < grid.Height) { //サイズ調整 grid.Width += iControl.Width; if (grid.Height < iControl.Height) { grid.Height = iControl.Height; } //結合 var margin = new Thickness(current_Size.Width, 0, 0, 0); iControl.Margin = margin; } else { //サイズ調整 grid.Height += iControl.Height; if (grid.Width < iControl.Width) { grid.Width = iControl.Width; } //結合 var margin = new Thickness(0, current_Size.Height, 0, 0); iControl.Margin = margin; } grid.Children.Add(iControl); SystemUtility.OutputCaptureControl(iFilePath, grid); grid.Children.Remove(iControl); grid.Children.Clear(); iControl.Margin = stock_Margin; }
//============================================================================ //! ツイッター連携ボタンが押された private void _ClickRegistTwitterAccountButton(object iSender, RoutedEventArgs iArgs) { //ウィンドウを表示する var window = new TwitterSettingWindow(); window.Closing += (iClosingSender, iClosingArgs) => { //成功した時のみ if (window.IsAccess()) { var manager = SystemManager.GetInstance(); var info = manager.GetSystemInfo(); info.mAccessToken = window.GetAccessToken(); manager.SetSystemInfo(info); _Refresh(); SaveManager.GetInstance().SaveProject(); } }; window.ShowDialog(); }
//============================================================================ //! 画面更新 private void _Refresh() { var info = SystemManager.GetInstance().GetSystemInfo(); if (info.mAccessToken.mToken == null) { AccountRegistButton.IsEnabled = true; AccountRemoveButton.IsEnabled = false; TweetDefaultSettingButton.IsEnabled = false; IDTextBlock.Text = ""; NameTextBlock.Text = ""; } else { AccountRegistButton.IsEnabled = false; AccountRemoveButton.IsEnabled = true; TweetDefaultSettingButton.IsEnabled = true; IDTextBlock.Text = "TwitterID : " + info.mAccessToken.mUserId; NameTextBlock.Text = "TwitterName : " + info.mAccessToken.mScreenName; } AutoSaveCheckBox.IsChecked = info.mAutoSaveFlg; }
/************************************************************************/ /* 基本処理 */ /************************************************************************/ /// <summary> /// コンストラクタ /// </summary> public MainWindow() { //ライセンスチェック #if DL_DEBUG SystemManager.GetInstance().SetUserName("デバッグ起動"); #else //ライセンスチェック var path = SystemUtility.GetSystemPath() + "FCAdmy.lic"; try { var user_Name = SystemUtility.GetLicenseUserName(path); SystemManager.GetInstance().SetUserName(user_Name); } catch (System.Exception) { Environment.Exit(1); } #endif InitializeComponent(); _InitializeSystem(); SystemManager.GetInstance().SetScreenShotGrid(ScreenShotGrid); }
/// <summary> /// デフォルトで表示されるツイート情報を取得 /// </summary> /// <param name="iImageFilePath">イメージファイルパス</param> /// <returns>ツイート</returns> public string GetDefaultTweet(string iImageFilePath) { //デフォルト設定から全て置換掛けていくよ string tweet = SystemManager.GetInstance().GetSystemInfo().mDefaultTweetStyle; //大会名 tweet = tweet.Replace("{TournamentName}", mCurrentBattleInfo.mName); //開始日時(全部) tweet = tweet.Replace("{TournamentData}", mCurrentBattleInfo.mDate); //開始日時(日にちだけ) var sep_list = mCurrentBattleInfo.mDate.Split(' '); tweet = tweet.Replace("{TournamentDay}", sep_list[0]); //開始日時(時間だけ) tweet = tweet.Replace("{TournamentTime}", sep_list[1]); //画像 tweet = tweet.Replace("{ImageUrl}", iImageFilePath); return(tweet); }
/************************************************************************/ /* コールバック処理 */ /************************************************************************/ //============================================================================ //! ロード時の処理 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 _ClickUploadScreenShot(object iSender, RoutedEventArgs iArgs) { //まずは画像の生成 var item = iSender as MenuItem; var path = ""; var file_name = ""; if (item != null) { var kind = (EScreenShotKind)item.TabIndex; path = mCreateScreenShotDelegate(kind); switch (kind) { case EScreenShotKind.SCREEN_SHOT_MEMBER: file_name = "メンバー表"; break; case EScreenShotKind.SCREEN_SHOT_TOURNAMENT: file_name = "トーナメント表"; break; case EScreenShotKind.SCREEN_SHOT_ALL: file_name = "メンバー表+トーナメント表"; break; } } //生成に失敗 if (path.Length == 0) { return; } try { System.Media.SystemSounds.Asterisk.Play(); MessageBox.Show("画像のアップロード中画面が止まりますが\nそのままでお待ちください", "確認", MessageBoxButton.OK, MessageBoxImage.Information); //アップロードする string url = DL.UploaderUtility.Upload(path); //エラー if (url == null || url.Length == 0) { throw new System.Exception("ファイルのアップロードに失敗しました"); } //アップロード結果からメニューにアイテムを追加 var index = mUploadURLList.Count; var diplay = string.Format("{0}({1})", file_name, DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); mUploadURLList.Add(url); //初追加の場合はセパレータも追加 if (index == 0) { UploadItem.Items.Add(new Separator()); } //アイテム作成 var new_item = new MenuItem(); new_item.Header = diplay; new_item.TabIndex = index; UploadItem.Items.Add(new_item); //ツイッター認証してるかどうかでサブアイテム作るか決める var system_info = SystemManager.GetInstance().GetSystemInfo(); if (system_info.mAccessToken.mScreenName == null || system_info.mAccessToken.mScreenName.Length == 0 || system_info.mAccessToken.mToken == null || system_info.mAccessToken.mToken.Length == 0 || system_info.mAccessToken.mTokenSecret == null || system_info.mAccessToken.mTokenSecret.Length == 0) { //連携なし new_item.Click += _OpenUploadPhotoPage; } else { //連携有 var sub_item = new MenuItem(); sub_item.Header = "表示"; sub_item.TabIndex = index; sub_item.Click += _OpenUploadPhotoPage; new_item.Items.Add(sub_item); sub_item = new MenuItem(); sub_item.Header = "ツイート"; sub_item.TabIndex = index; sub_item.Click += _ClickTweetButton; new_item.Items.Add(sub_item); } System.Media.SystemSounds.Asterisk.Play(); MessageBox.Show("画像のアップロードに成功しました\n\n" + url, "確認", MessageBoxButton.OK, MessageBoxImage.Information); } catch (System.Exception iException) { System.Media.SystemSounds.Hand.Play(); MessageBox.Show("画像のアップロードに失敗しました\n\n" + iException.Message, "エラー", MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary> /// スクリーンショットを撮る準備(チーム画像をスクリーンショットグリッドに入れておく) /// </summary> public void BeginScreenShot() { //必要なコントロールを作成 var control_List = new List <TeamDisplay>(); var manager = BattleOperatorManager.GetInstance(); var team_Val = manager.GetTeamVal(); foreach (var iTeamIndex in System.Linq.Enumerable.Range(0, team_Val)) { var team_Info = manager.GetTeamInfo(iTeamIndex); var list = new List <BattleManager.SBattleJoinInfo>(); foreach (var iJoinMemberID in team_Info.mJoinIDList) { var info = new BattleManager.SBattleJoinInfo(); manager.GetJoinInfo(ref info, iJoinMemberID); list.Add(info); } var control = new TeamDisplay(); control.TeamNameTextBlock.Text = team_Info.mTeamName; control.SetJoinMemberList(list); control_List.Add(control); } //正方形にできるだけなるように敷き詰める数を取得 var val = 1; while (true) { var check = Math.Pow(2, (double)val); if (team_Val < check) { break; } ++val; } //グリッドに挿入 var margin = new Thickness(); var grid = SystemManager.GetInstance().GetScreenShotGrid(); var sum_Height = 0.0; while (control_List.Count > 0) { //横方向への挿入 margin.Left = 0; var max_Height = 0.0; var sum_Width = 0.0; foreach (var iIndex in System.Linq.Enumerable.Range(0, val)) { var control = control_List[0]; control.Margin = margin; grid.Children.Add(control); //横へずらす margin.Left += control.Width; sum_Width += control.Width; //縦の最大サイズ取得 if (max_Height < control.Height) { max_Height = control.Height; } //先頭を削除して無くなったら終わり control_List.RemoveAt(0); if (control_List.Count == 0) { break; } } //横方向へサイズ変更チェック if (grid.Width < sum_Width) { grid.Width = sum_Width; } //縦移動 margin.Top += max_Height; sum_Height += max_Height; } //縦方向へサイズ変更チェック if (grid.Height < sum_Height) { grid.Height = sum_Height; } }
/// <summary> /// メンバーのスクリーンショットを生成 /// </summary> /// <param name="iFilePath">ファイルパス</param> public void CreateMemberScreenShot(string iFilePath) { BeginScreenShot(); SystemUtility.OutputCaptureControl(iFilePath, SystemManager.GetInstance().GetScreenShotGrid()); SystemManager.GetInstance().GetScreenShotGrid().Children.Clear(); }