コード例 #1
0
ファイル: SRC.play.cs プロジェクト: 7474/SRC
        // 陣営upartyのフェイズを実行
        public void StartTurn(string uparty)
        {
            // TODO Impl StartTurn
            Stage         = uparty;
            Sound.BossBGM = false;
            if (uparty == "味方")
            {
                do
                {
                    // 味方フェイズ
                    Stage = "味方";

                    // ターン数を進める
                    if (!Map.IsStatusView)
                    {
                        Turn      = Turn + 1;
                        TotalTurn = TotalTurn + 1;
                    }

                    // 状態回復
                    foreach (var currentUnit in UList.Items)
                    {
                        Commands.SelectedUnit = currentUnit;
                        switch (currentUnit.Status)
                        {
                        case "出撃":
                        case "格納":
                        {
                            if ((currentUnit.Party ?? "") == (uparty ?? ""))
                            {
                                if (Map.IsStatusView)
                                {
                                    currentUnit.UsedAction = 0;
                                }
                                else
                                {
                                    currentUnit.Rest();
                                }

                                if (IsScenarioFinished)
                                {
                                    GUI.UnlockGUI();
                                    return;
                                }
                            }
                            else
                            {
                                currentUnit.UsedAction = 0;
                            }

                            break;
                        }

                        case "旧主形態":
                        case "旧形態":
                        {
                            currentUnit.UsedAction = 0;
                            break;
                        }
                        }
                    }

                    // 味方が敵にかけたスペシャルパワーを解除
                    foreach (var currentU in UList.Items)
                    {
                        switch (currentU.Status)
                        {
                        case "出撃":
                        case "格納":
                        {
                            currentU.RemoveSpecialPowerInEffect("敵ターン");
                            break;
                        }
                        }
                    }

                    GUI.RedrawScreen();

                    // 味方フェイズ用BGMを演奏
                    if (!Map.IsStatusView)
                    {
                        var terrain = Map.Terrain(1, 1);
                        switch (terrain?.Class ?? "")
                        {
                        case "屋内":
                            Sound.StartBGM(Sound.BGMName("Map3"));
                            break;

                        case "宇宙":
                            Sound.StartBGM(Sound.BGMName("Map5"));
                            break;

                        default:
                            if (terrain?.Name == "壁")
                            {
                                Sound.StartBGM(Sound.BGMName("Map3"));
                            }
                            else
                            {
                                Sound.StartBGM(Sound.BGMName("Map1"));
                            }
                            break;
                        }
                    }

                    // ターンイベント
                    Event.IsUnitCenter = false;
                    Event.HandleEvent("ターン", Turn.ToString(), "味方");
                    if (IsScenarioFinished)
                    {
                        GUI.UnlockGUI();
                        return;
                    }

                    // 操作可能なユニットがいるかどうかチェック
                    if (UList.Items.Count(x => x.Party == "味方" && x.CanAction) > 0 ||
                        Expression.IsOptionDefined("味方フェイズ強制発動"))
                    {
                        break;
                    }

                    // CPUが操作するユニットがいるかどうかチェック
                    if (UList.Items.Count(x => x.Party != "味方" && x.Status == "出撃") > 0)
                    {
                        break;
                    }

                    // 敵フェイズ
                    StartTurn("敵");
                    if (IsScenarioFinished)
                    {
                        IsScenarioFinished = false;
                        return;
                    }

                    // 中立フェイズ
                    StartTurn("中立");
                    if (IsScenarioFinished)
                    {
                        IsScenarioFinished = false;
                        return;
                    }

                    // NPCフェイズ
                    StartTurn("NPC");
                    if (IsScenarioFinished)
                    {
                        IsScenarioFinished = false;
                        return;
                    }
                }while (true);
            }
            else
            {
                // 味方フェイズ以外

                // 状態回復
                foreach (var currentUnit in UList.Items)
                {
                    Commands.SelectedUnit = currentUnit;
                    switch (currentUnit.Status)
                    {
                    case "出撃":
                    case "格納":
                    {
                        if ((currentUnit.Party ?? "") == (uparty ?? ""))
                        {
                            currentUnit.Rest();
                            if (IsScenarioFinished)
                            {
                                GUI.UnlockGUI();
                                return;
                            }
                        }
                        else
                        {
                            currentUnit.UsedAction = 0;
                        }

                        break;
                    }

                    case "旧主形態":
                    case "旧形態":
                    {
                        currentUnit.UsedAction = 0;
                        break;
                    }
                    }
                }

                // 敵ユニットが味方にかけたスペシャルパワーを解除
                foreach (var currentUnit in UList.Items)
                {
                    switch (currentUnit.Status)
                    {
                    case "出撃":
                    case "格納":
                    {
                        currentUnit.RemoveSpecialPowerInEffect("敵ターン");
                        break;
                    }
                    }
                }

                GUI.RedrawScreen();

                // 敵(NPC)フェイズ用BGMを演奏
                var terrain = Map.Terrain(1, 1);
                if (Stage == "NPC")
                {
                    switch (terrain?.Class ?? "")
                    {
                    case "屋内":
                        Sound.StartBGM(Sound.BGMName("Map3"));
                        break;

                    case "宇宙":
                        Sound.StartBGM(Sound.BGMName("Map5"));
                        break;

                    default:
                        if (terrain?.Name == "壁")
                        {
                            Sound.StartBGM(Sound.BGMName("Map3"));
                        }
                        else
                        {
                            Sound.StartBGM(Sound.BGMName("Map1"));
                        }
                        break;
                    }
                }
                else
                {
                    switch (terrain?.Class ?? "")
                    {
                    case "屋内":
                        Sound.StartBGM(Sound.BGMName("Map4"));
                        break;

                    case "宇宙":
                        Sound.StartBGM(Sound.BGMName("Map6"));
                        break;

                    default:
                        if (terrain?.Name == "壁")
                        {
                            Sound.StartBGM(Sound.BGMName("Map4"));
                        }
                        else
                        {
                            Sound.StartBGM(Sound.BGMName("Map2"));
                        }
                        break;
                    }
                }

                // ターンイベント
                Event.HandleEvent("ターン", Turn.ToString(), uparty);
                if (IsScenarioFinished)
                {
                    GUI.UnlockGUI();
                    return;
                }
            }

            int  max_lv;
            Unit max_unit = null;

            if (uparty == "味方")
            {
                // 味方フェイズのプレイヤーによるユニット操作前の処理

                // ターン数を表示
                if (Turn > 1 && Expression.IsOptionDefined("デバッグ"))
                {
                    GUI.DisplayTelop("ターン" + SrcFormatter.Format(Turn));
                }

                // 通常のステージでは母艦ユニットまたはレベルがもっとも高い
                // ユニットを中央に配置
                if (!Map.IsStatusView && !Event.IsUnitCenter)
                {
                    foreach (Unit currentUnit in UList.Items)
                    {
                        if (currentUnit.Party == "味方" && currentUnit.Status == "出撃" && currentUnit.Action > 0)
                        {
                            if (currentUnit.IsFeatureAvailable("母艦"))
                            {
                                GUI.Center(currentUnit.x, currentUnit.y);
                                GUIStatus.DisplayUnitStatus(currentUnit);
                                GUI.RedrawScreen();
                                GUI.UnlockGUI();
                                return;
                            }
                        }
                    }

                    max_lv = 0;
                    foreach (Unit cuttentUnit in UList.Items)
                    {
                        if (cuttentUnit.Party == "味方" && cuttentUnit.Status == "出撃")
                        {
                            if (cuttentUnit.MainPilot().Level > max_lv)
                            {
                                max_unit = cuttentUnit;
                                max_lv   = cuttentUnit.MainPilot().Level;
                            }
                        }
                    }

                    if (max_unit != null)
                    {
                        GUI.Center(max_unit.x, max_unit.y);
                    }
                }

                // ステータスを表示
                if (!Map.IsStatusView)
                {
                    GUIStatus.DisplayGlobalStatus();
                }

                // プレイヤーによる味方ユニット操作に移行
                GUI.RedrawScreen();
                GUI.UnlockGUI();
                return;
            }

            GUI.LockGUI();

            CPUOperation(uparty);

            if (IsScenarioFinished)
            {
                return;
            }

            // ステータスウィンドウの表示を消去
            GUIStatus.ClearUnitStatus();
        }
コード例 #2
0
ファイル: SRC.save.cs プロジェクト: 7474/SRC
        // 一時中断用データをロード
        public void RestoreData(Stream stream, SRCSaveKind saveKind)
        {
            var quick_load = saveKind == SRCSaveKind.Quik || saveKind == SRCSaveKind.Restart;

            try
            {
                // マウスカーソルを砂時計に
                GUI.ChangeStatus(GuiStatus.WaitCursor);
                if (quick_load)
                {
                    if (Expression.IsOptionDefined("デバッグ"))
                    {
                        Event.LoadEventData(ScenarioFileName, "クイックロード");
                    }
                }
                if (!quick_load)
                {
                    GUI.OpenNowLoadingForm();
                }

                // XXX Version プロパティだけのオブジェクトでバージョンチェックなど
                var data = JsonConvert.DeserializeObject <SRCSuspendData>((new StreamReader(stream).ReadToEnd()));
                //SaveDataVersion = Conversions.ToInteger(fname2);
                var scenario_file_is_different = !FileSystem.RelativePathEuqals(ScenarioPath, ScenarioFileName, data.ScenarioFileName);
                if (scenario_file_is_different)
                {
                    // TODO Impl ウィンドウのタイトルを設定
                    // ウィンドウのタイトルを設定
                    //GUI.MainFormText = "SRC - " + Strings.Left(fname2, Strings.Len(fname2) - 4);
                }
                Titles    = data.Titles;
                TotalTurn = data.TotalTurn;
                Money     = data.Money;
                Event.GlobalVariableList = data.GlobalVariableList;
                PList = data.PList;
                UList = data.UList;
                IList = data.IList;
                //
                ScenarioFileName        = FileSystem.ToAbsolutePath(ScenarioPath, data.ScenarioFileName);
                Turn                    = data.Turn;
                Event.LocalVariableList = data.LocalVariableList;

                // 使用するデータをロード
                if (!quick_load)
                {
                    GUI.SetLoadImageSize(data.Titles.Count * 2 + 5);
                    foreach (var title in Titles)
                    {
                        IncludeData(title);
                    }

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\alias.txt"))
                    //{
                    //    ALDList.Load(ScenarioPath + @"Data\alias.txt");
                    //}

                    //bool localFileExists() { string argfname = ScenarioPath + @"Data\mind.txt"; var ret = SRC.FileSystem.FileExists(argfname); return ret; }

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\sp.txt"))
                    //{
                    //    SPDList.Load(ScenarioPath + @"Data\sp.txt");
                    //}
                    //else if (localFileExists())
                    //{
                    //    SPDList.Load(ScenarioPath + @"Data\mind.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\pilot.txt"))
                    //{
                    //    PDList.Load(ScenarioPath + @"Data\pilot.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\non_pilot.txt"))
                    //{
                    //    NPDList.Load(ScenarioPath + @"Data\non_pilot.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\robot.txt"))
                    //{
                    //    UDList.Load(ScenarioPath + @"Data\robot.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\unit.txt"))
                    //{
                    //    UDList.Load(ScenarioPath + @"Data\unit.txt");
                    //}

                    //GUI.DisplayLoadingProgress();
                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\pilot_message.txt"))
                    //{
                    //    MDList.Load(ScenarioPath + @"Data\pilot_message.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\pilot_dialog.txt"))
                    //{
                    //    DDList.Load(ScenarioPath + @"Data\pilot_dialog.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\effect.txt"))
                    //{
                    //    EDList.Load(ScenarioPath + @"Data\effect.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\animation.txt"))
                    //{
                    //    ADList.Load(ScenarioPath + @"Data\animation.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\ext_animation.txt"))
                    //{
                    //    EADList.Load(ScenarioPath + @"Data\ext_animation.txt");
                    //}

                    //if (SRC.FileSystem.FileExists(ScenarioPath + @"Data\item.txt"))
                    //{
                    //    IDList.Load(ScenarioPath + @"Data\item.txt");
                    //}

                    GUI.DisplayLoadingProgress();
                    IsLocalDataLoaded = true;
                    Event.LoadEventData(ScenarioFileName, "リストア");
                    GUI.DisplayLoadingProgress();
                }
                else
                {
                    if (scenario_file_is_different)
                    {
                        Event.LoadEventData(ScenarioFileName, "リストア");
                    }
                }

                Event.Restore(data);
                PList.Restore(this);
                UList.Restore(this);
                IList.Restore(this);
                Map.Restore(data);

                // XXX 仮処理
                UList.Items.ToList().ForEach(x => x.Update());
                PList.Items.ToList().ForEach(x => x.Update());

                // BGM関連の設定を復元
                // TODO パスの正規化
                var bgmFile = Sound.SearchMidiFile("(" + Path.GetFileName(data.BGMFileName) + ")");
                if (!string.IsNullOrEmpty(bgmFile))
                {
                    // BGMが必ず切り替わる状態で変更してから関連設定を復元する
                    Sound.KeepBGM = false;
                    Sound.BossBGM = false;
                    Sound.ChangeBGM(bgmFile);
                }
                else
                {
                    Sound.StopBGM();
                }
                Sound.RepeatMode = data.RepeatMode;
                Sound.KeepBGM    = data.KeepBGM;
                Sound.BossBGM    = data.BossBGM;

                //    // 乱数系列を復元
                //    if (!Expression.IsOptionDefined("デバッグ") && !Expression.IsOptionDefined("乱数系列非保存") && !FileSystem.EOF(SaveDataFileNumber))
                //    {
                //        FileSystem.Input(SaveDataFileNumber, GeneralLib.RndSeed);
                //        GeneralLib.RndReset();
                //        FileSystem.Input(SaveDataFileNumber, GeneralLib.RndIndex);
                //    }

                if (!quick_load)
                {
                    GUI.DisplayLoadingProgress();
                }

                //    // リンクデータを処理するため、セーブファイルを一旦閉じてから再度読み込み
                //    Event.SkipEventData();
                //    PList.RestoreLinkInfo();
                //    IList.RestoreLinkInfo();
                //    UList.RestoreLinkInfo();
                //    FileSystem.FileClose(SaveDataFileNumber);

                //    // パラメータ情報を処理するため、セーブファイルを一旦閉じてから再度読み込み。
                //    // 霊力やHP、ENといったパラメータは最大値が特殊能力で変動するため、
                //    // 特殊能力の設定が終わってから改めて設定してやる必要がある。

                //    Event.SkipEventData();
                //    PList.RestoreParameter();
                //    IList.RestoreParameter();
                //    UList.RestoreParameter();
                //    PList.UpdateSupportMod();

                // 背景書き換え
                // XXX 常に書き換えでない理由何かある?
                //if (Map.IsMapDirty)
                //{
                int map_x, map_y;
                map_x = GUI.MapX;
                map_y = GUI.MapY;
                GUI.SetupBackground(Map.MapDrawMode, "非同期");
                GUI.MapX = map_x;
                GUI.MapY = map_y;

                // 再開イベントによるマップ画像の書き換え処理を行う
                Event.HandleEvent("再開");
                Map.IsMapDirty = false;
                //}

                Commands.SelectedUnit   = null;
                Commands.SelectedTarget = null;

                // 画面更新
                GUI.Center(GUI.MapX, GUI.MapY);
                if (!quick_load)
                {
                    GUI.DisplayLoadingProgress();
                }

                if (!quick_load)
                {
                    GUI.CloseNowLoadingForm();
                }

                if (!quick_load)
                {
                    GUI.MainFormShow();
                }

                // マウスカーソルを元に戻す
                GUI.ChangeStatus(GuiStatus.Default);
                GUIStatus.ClearUnitStatus();
                if (!GUI.MainFormVisible)
                {
                    GUI.MainFormShow();
                    GUI.RefreshScreen();
                }

                GUI.RedrawScreen();
                if (Turn == 0)
                {
                    Event.HandleEvent("スタート");

                    // スタートイベントから次のステージが開始された場合、StartTurnが上のHandleEventで
                    // 実行されてしまう。
                    // 味方ターンの処理が2重起動されるのを防ぐため、Turnをチェックしてから起動する
                    if (Turn == 0)
                    {
                        StartTurn("味方");
                    }
                }
                else
                {
                    Commands.CommandState = "ユニット選択";
                    Stage = "味方";
                }
                if (saveKind == SRCSaveKind.Restart)
                {
                    IsRestartSaveDataAvailable = true;
                }
                else if (saveKind == SRCSaveKind.Quik)
                {
                    IsQuickSaveDataAvailable = true;
                }
            }
            catch
            {
                GUI.ErrorMessage("ロード中にエラーが発生しました");
                TerminateSRC();
            }
        }
コード例 #3
0
ファイル: SRC.play.cs プロジェクト: 7474/SRC
        // イベントファイルfnameを実行
        public void StartScenario(string fname)
        {
            // ファイルを検索
            if (!Path.IsPathRooted(fname))
            {
                fname = new string[]
                {
                    FileSystem.PathCombine(ScenarioPath, fname),
                    FileSystem.PathCombine(AppPath, fname),
                }.FirstOrDefault(x => FileSystem.FileExists(x)) ?? fname;
            }

            if (!FileSystem.FileExists(fname))
            {
                GUI.ErrorMessage(fname + "が見つかりません");
                TerminateSRC();
            }

            //// ウィンドウのタイトルを設定
            //if (My.MyProject.Application.Info.Version.Minor % 2 == 0)
            //{
            //    GUI.MainForm.Text = "SRC";
            //}
            //else
            //{
            //    GUI.MainForm.Text = "SRC開発版";
            //}

            ScenarioFileName = fname;
            //if (!IsSubStage)
            //{
            //    // UPGRADE_WARNING: Dir に新しい動作が指定されています。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' をクリックしてください。
            //    if (Strings.Len(FileSystem.Dir(ScenarioPath + "Date", FileAttribute.Directory)) > 0)
            //    {
            //        GUI.ErrorMessage("シナリオ側のDataフォルダ名がDateになっています。" + Constants.vbCr + Constants.vbLf + ScenarioPath + "Date" + Constants.vbCr + Constants.vbLf + "フォルダ名をDataに直してください。");
            //        TerminateSRC();
            //    }
            //    // UPGRADE_WARNING: Dir に新しい動作が指定されています。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' をクリックしてください。
            //    if (Strings.Len(FileSystem.Dir(ScenarioPath + "Data", FileAttribute.Directory)) > 0)
            //    {
            //        GUI.ErrorMessage("シナリオ側のDataフォルダ名が全角文字になっています。" + Constants.vbCr + Constants.vbLf + ScenarioPath + "Data" + Constants.vbCr + Constants.vbLf + "フォルダ名を半角文字に直してください。");
            //        TerminateSRC();
            //    }
            //    // UPGRADE_WARNING: Dir に新しい動作が指定されています。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' をクリックしてください。
            //    if (Strings.Len(FileSystem.Dir(ScenarioPath + "Bitmap", FileAttribute.Directory)) > 0)
            //    {
            //        GUI.ErrorMessage("シナリオ側のBitmapフォルダ名が全角文字になっています。" + Constants.vbCr + Constants.vbLf + ScenarioPath + "Bitmap" + Constants.vbCr + Constants.vbLf + "フォルダ名を半角文字に直してください。");
            //        TerminateSRC();
            //    }
            //    // UPGRADE_WARNING: Dir に新しい動作が指定されています。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' をクリックしてください。
            //    if (Strings.Len(FileSystem.Dir(ScenarioPath + "Lib", FileAttribute.Directory)) > 0)
            //    {
            //        GUI.ErrorMessage("シナリオ側のLibフォルダ名が全角文字になっています。" + Constants.vbCr + Constants.vbLf + ScenarioPath + "Lib" + Constants.vbCr + Constants.vbLf + "フォルダ名を半角文字に直してください。");
            //        TerminateSRC();
            //    }
            //    // UPGRADE_WARNING: Dir に新しい動作が指定されています。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' をクリックしてください。
            //    if (Strings.Len(FileSystem.Dir(ScenarioPath + "Midi", FileAttribute.Directory)) > 0)
            //    {
            //        GUI.ErrorMessage("シナリオ側のMidiフォルダ名が全角文字になっています。" + Constants.vbCr + Constants.vbLf + ScenarioPath + "Midi" + Constants.vbCr + Constants.vbLf + "フォルダ名を半角文字に直してください。");
            //        TerminateSRC();
            //    }
            //    // UPGRADE_WARNING: Dir に新しい動作が指定されています。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' をクリックしてください。
            //    if (Strings.Len(FileSystem.Dir(ScenarioPath + "Sound", FileAttribute.Directory)) > 0)
            //    {
            //        GUI.ErrorMessage("シナリオ側のSoundフォルダ名が全角文字になっています。" + Constants.vbCr + Constants.vbLf + ScenarioPath + "Sound" + Constants.vbCr + Constants.vbLf + "フォルダ名を半角文字に直してください。");
            //        TerminateSRC();
            //    }

            //    // 読み込むイベントファイル名に合わせて各種システム変数を設定
            //    if (!Expression.IsGlobalVariableDefined("次ステージ"))
            //    {
            //        Expression.DefineGlobalVariable("次ステージ");
            //    }

            //    Expression.SetVariableAsString("次ステージ", "");
            //    var loopTo = Strings.Len(fname);
            //    for (i = 1; i <= loopTo; i++)
            //    {
            //        if (Strings.Mid(fname, Strings.Len(fname) - i + 1, 1) == @"\")
            //        {
            //            break;
            //        }
            //    }

            //    Expression.SetVariableAsString("ステージ", Strings.Mid(fname, Strings.Len(fname) - i + 2));
            //    if (!Expression.IsGlobalVariableDefined("セーブデータファイル名"))
            //    {
            //        Expression.DefineGlobalVariable("セーブデータファイル名");
            //    }

            //    Expression.SetVariableAsString("セーブデータファイル名", Strings.Mid(fname, Strings.Len(fname) - i + 2, i - 5) + "までクリア.src");

            //    // ウィンドウのタイトルにシナリオファイル名を表示
            //    GUI.MainForm.Text = GUI.MainForm.Text + " - " + Strings.Mid(fname, Strings.Len(fname) - i + 2, i - 5);
            //}

            // 画面をクリアしておく
            GUI.ClearScrean();

            // イベントデータの読み込み
            Event.LoadEventData(fname, "");

            // 各種変数の初期化
            Turn = 0;
            IsScenarioFinished         = false;
            GUI.IsPictureVisible       = false;
            GUI.IsCursorVisible        = false;
            LastSaveDataFileName       = "";
            IsRestartSaveDataAvailable = false;
            IsQuickSaveDataAvailable   = false;
            Commands.CommandState      = "ユニット選択";
            //Commands.SelectedPartners.Clear();

            //// フォント設定をデフォルトに戻す
            //{
            //    var withBlock1 = GUI.MainForm.picMain(0);
            //    withBlock1.ForeColor = Information.RGB(255, 255, 255);
            //    if (withBlock1.Font.Name != "MS P明朝")
            //    {
            //        sf = (Font)Control.DefaultFont.Clone();
            //        sf = SrcFormatter.FontChangeName(sf, "MS P明朝");
            //        withBlock1.Font = sf;
            //    }
            //    withBlock1.Font.Size = 16;
            //    withBlock1.Font.Bold = true;
            //    withBlock1.Font.Italic = false;
            //    GUI.PermanentStringMode = false;
            //    GUI.KeepStringMode = false;
            //}

            //// 描画の基準座標位置をリセット
            //Event.ResetBasePoint();

            //// メモリを消費し過ぎないようにユニット画像をクリア
            //if (!IsSubStage)
            //{
            //    UList.ClearUnitBitmap();
            //}

            GUI.LockGUI();
            //if (Map.MapWidth == 1)
            //{
            //    Map.SetMapSize(15, 15);
            //}

            // プロローグ
            Stage = "プロローグ";
            if (!IsSubStage && Event.IsEventDefined("プロローグ", true))
            {
                Sound.StopBGM();
                Sound.StartBGM(Sound.BGMName("Briefing"), true);
            }

            Event.HandleEvent("プロローグ");
            if (IsScenarioFinished)
            {
                IsScenarioFinished = false;
                GUI.UnlockGUI();
                return;
            }

            if (!Event.IsEventDefined("スタート"))
            {
                GUI.ErrorMessage("スタートイベントが定義されていません");
                TerminateSRC();
            }

            GUI.IsPictureVisible = false;
            GUI.IsCursorVisible  = false;
            Stage = "味方";
            Sound.StopBGM();

            // リスタート用にデータをセーブ
            // XXX パスセパレータマッチ
            if (Strings.InStr(fname, @"\Lib\ユニットステータス表示.eve") == 0 &&
                Strings.InStr(fname, @"\Lib\パイロットステータス表示.eve") == 0)
            {
                DumpData(Path.Combine(ScenarioPath, "_リスタート.srcq"), SRCSaveKind.Restart);
            }

            // スタートイベントが始まった場合は通常のステージとみなす
            IsSubStage = false;
            GUIStatus.ClearUnitStatus();
            if (!GUI.MainFormVisible)
            {
                GUI.MainFormShow();
                //GUI.MainForm.Refresh();
            }

            GUI.RedrawScreen();

            // スタートイベント
            Event.HandleEvent("スタート");
            if (IsScenarioFinished)
            {
                IsScenarioFinished = false;
                GUI.UnlockGUI();
                return;
            }

            GUI.IsPictureVisible = false;
            GUI.IsCursorVisible  = false;

            // クイックロードを無効にする
            IsQuickSaveDataAvailable = false;
            StartTurn("味方");
        }