Exemple #1
0
        void OnGUI()
        {
            GUIManager.reset();

            /*
             * Window:
             * 0: 初期状態
             *      1: タイトル
             *      2: タイトル>設定
             * 3: タイトル>設定>クレジット
             *
             *      10: タイトル>ゲームを始める
             * 11: マップ生成
             * 19: タイトル>ゲームを始める>マップロード中...
             *
             * 30: ゲーム中
             * 31: ポーズメニュー
             * 32: ポーズメニュー>タイトルへ戻る
             * 33: ポーズメニュー>タイトルへ戻る>最後に一言
             */
            Cursor.visible = window != 30;
            if (playercamera == null)
            {
                GUIManager.background();
            }
            switch (window)
            {
            case 0:
                window = 1;
                break;

            case 1:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.logo_big();
                GUIManager.label("ver: " + ver, GUIManager.Position.LeftBottom);
                if (statusinfo)
                {
                    GUIManager.label("初回起動: " + firststart, GUIManager.Position.LeftBottom);
                    GUIManager.label("初回起動時刻: " + TimeManager.convpoint(new DateTime(TimeManager.firstplay), TimeManager.ConvPointType.day), GUIManager.Position.LeftBottom);
                    GUIManager.label("起動時間: " + TimeManager.convinterval(new TimeSpan((long)(Time.fixedTime * 1000 * 1000 * 10))), GUIManager.Position.LeftBottom);
                    GUIManager.label("総計起動時間: " + TimeManager.convinterval(new TimeSpan(TimeManager.totalplaytime)), GUIManager.Position.LeftBottom);
                }
                if (firststart)
                {
                    GUIManager.label(welcomemsg, GUIManager.Position.TitleBar);
                }
                else
                {
                    GUIManager.label("tips: " + gettips(), GUIManager.Position.TitleBar);
                }
                MenuTextField _0username = new MenuTextField("プレイヤー名(2~16文字)", "プレイヤー名を入力して下さい", username);
                MenuItem[]    _1menu     = new MenuItem[] { _0username, new MenuButton("ゲームを始める"), new MenuButton("公式サイトへ"), new MenuItem(new MenuItem[] { new MenuButton("設定"), new MenuButton("ゲームを終了") }) };
                GUIManager.menu_center(_1menu);
                PlayerPrefs.SetString("username", username = _0username.enter);
                if (_1menu[1].clicked)
                {
                    playSound(ac_click);
                    if (username.Length < 2 || 16 < username.Length)
                    {
                        GUIManager.setmsg("プレイヤー名を正しく入力して下さい");
                    }
                    else
                    {
                        window   = 10;
                        window_1 = 10;
                    }
                }
                else if (_1menu[2].clicked)
                {
                    playSound(ac_click);
                    Application.OpenURL("https://denyakicreate.github.io/blockcity/");
                }
                else if (_1menu[3].initems[0].clicked)
                {
                    playSound(ac_click);
                    window = 2;
                }
                else if (_1menu[3].initems[1].clicked)
                {
                    playSound(ac_click);
                    Application.Quit();
                }
                break;

            case 2:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.label("設定", GUIManager.Position.TitleBar);
                MenuSlider _2audiovolume = new MenuSlider("音量", 0, 1, audiovolume);
                MenuItem[] _2menu        = new MenuItem[] { _2audiovolume, new MenuItem(new MenuItem[] { new MenuButton("キャンセル"), new MenuButton("音声再生"), new MenuButton("決定") }), new MenuButton("スクリーンショットフォルダを開く"), new MenuButton("クレジット") };
                GUIManager.menu_center(_2menu);
                PlayerPrefs.SetFloat("volume", audiosource.volume = (menusource.volume = (audiovolume = _2audiovolume.value)));
                if (_2menu[1].initems[0].clicked)
                {
                    playSound(ac_click);
                    if (MapManager.playingmap != null)
                    {
                        window = 31;
                    }
                    else
                    {
                        window = 1;
                    }
                }
                else if (_2menu[1].initems[1].clicked)
                {
                    switch (UnityEngine.Random.Range(0, 2))
                    {
                    case 1:
                        playSound(ac_msg);
                        break;

                    default:
                        playSound(ac_click);
                        break;
                    }
                }
                else if (_2menu[1].initems[2].clicked)
                {
                    playSound(ac_click);
                    if (MapManager.playingmap != null)
                    {
                        window = 31;
                    }
                    else
                    {
                        window = 1;
                    }
                }
                else if (_2menu[2].clicked)
                {
                    playSound(ac_click);
                    Process.Start(ssdirpath);
                }
                else if (_2menu[3].clicked)
                {
                    playSound(ac_click);
                    window = 3;
                }
                break;

            case 3:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.label("設定>クレジット", GUIManager.Position.TitleBar);
                MenuItem[] _3menu = new MenuItem[] { new MenuButton("thank you for playing!") };
                GUIManager.menu_center(new MenuItem[] { new MenuItem("Block Cityはまちづくりサンドボックスゲームです。"), new MenuItem(""), new MenuItem("プログラマー: "), new MenuItem("電車君"), new MenuItem(""), new MenuItem("画像作成: "), new MenuItem("電車君"), new MenuItem("yakiniki"), new MenuItem(""), new MenuItem("フォント: "), new MenuItem("M+ FONTS"), new MenuItem("") });
                GUIManager.menu_bottom(_3menu);
                GUIManager.label("フリー効果音素材 くらげ工匠", GUIManager.Position.RightBottom);
                GUIManager.label("©効果音ラボ", GUIManager.Position.RightBottom);
                GUIManager.label("音楽・効果音: ", GUIManager.Position.RightBottom);
                if (_3menu[0].clicked)
                {
                    playSound(ac_click);
                    window = 1;
                }
                break;

            case 10:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.label("ゲームを始める", GUIManager.Position.TitleBar);
                MenuList   _10mapselect = new MenuList("マップ選択", MapManager.getMapList(), mapselect);
                MenuItem[] _10menu      = new MenuItem[] { _10mapselect, new MenuItem(new MenuItem[] { new MenuButton("戻る"), new MenuButton("マップ生成") }), new MenuItem(new MenuItem[] { new MenuButton("フォルダを開く"), new MenuButton("始める") }) };
                GUIManager.menu_center(_10menu);
                mapselect = _10mapselect.select;
                if (_10menu[1].initems[0].clicked)
                {
                    playSound(ac_click);
                    window = 1;
                }
                else if (_10menu[1].initems[1].clicked)
                {
                    playSound(ac_click);
                    MapManager.RandomMapNameChange();
                    mapnameenter = MapManager.RandomMapName();
                    window       = 11;
                }
                else if (_10menu[2].initems[0].clicked)
                {
                    playSound(ac_click);
                    Process.Start(MapManager.dir);
                }
                else if (_10menu[2].initems[1].clicked)
                {
                    playSound(ac_click);
                    window = 19;
                }
                break;

            case 11:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.label("マップ生成", GUIManager.Position.TitleBar);
                MenuTextField _11mapname = new MenuTextField("マップ名", "", mapnameenter);
                MenuItem[]    _11menu    = new MenuItem[] { _11mapname, new MenuItem(new MenuItem[] { new MenuButton("戻る"), new MenuButton("生成") }) };
                GUIManager.menu_center(_11menu);
                mapnameenter = _11mapname.enter;
                if (_11menu[1].initems[0].clicked)
                {
                    playSound(ac_click);
                    window = window_1;
                }
                else if (_11menu[1].initems[1].clicked)
                {
                    playSound(ac_click);
                    if (MapManager.createNewMap(mapnameenter))
                    {
                        GUIManager.setmsg("マップ\"" + mapnameenter + "\"を生成しました");
                        window = window_1;
                    }
                    else
                    {
                        GUIManager.setmsg("マップ\"" + mapnameenter + "\"はすでに存在します", GUIManager.MessageType.CAUTION);
                    }
                }
                break;

            case 19:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.label("マップロード中...", GUIManager.Position.TitleBar);
                GUIManager.menu_center(new string[] { gettips() });
                if (MapManager.getMapList().Length <= mapselect)
                {
                    GUIManager.setmsg("マップがありません");
                    window = 10;
                }
                else
                {
                    MapManager.openMap(MapManager.getMapList()[mapselect]);
                    playercamera = new GameObject("PlayerCamera").AddComponent <PlayerCamera>();
                    window       = 30;
                }
                break;

            case 30:
                GUIManager.titlebardark();
                GUIManager.label("所持金: " + MapManager.getMoneyString(MapManager.playingmap.money), GUIManager.Position.TitleBar);
                GUIManager.label("マップの時間: " + TimeManager.convpoint(new DateTime(MapManager.playingmap.time), TimeManager.ConvPointType.sec), GUIManager.Position.RightTop);
                MenuItem[] _30menu = new MenuItem[] { new MenuItem(new MenuItem[] { new MenuButton("<color=" + (playercamera.getTool() == PlayerCamera.Tool.road ? "yellow" : "white") + ">道路</color>"), new MenuButton("<color=" + (playercamera.getTool() == PlayerCamera.Tool.destroy ? "yellow" : "white") + ">撤去</color>") }) };
                GUIManager.menu_bottom(_30menu);
                if (_30menu[0].initems[0].clicked)
                {
                    playSound(ac_click);
                    playercamera.setTool(playercamera.getTool() == PlayerCamera.Tool.road ? PlayerCamera.Tool.none : PlayerCamera.Tool.road);
                }
                else if (_30menu[0].initems[1].clicked)
                {
                    playSound(ac_click);
                    playercamera.setTool(playercamera.getTool() == PlayerCamera.Tool.destroy ? PlayerCamera.Tool.none : PlayerCamera.Tool.destroy);
                }
                GUI.DrawTexture(new Rect(Input.mousePosition.x - AssetsManager.center.width / 2, Screen.height - Input.mousePosition.y - AssetsManager.center.height / 2, AssetsManager.center.width, AssetsManager.center.height), AssetsManager.center);
                break;

            case 31:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.label("tips: " + gettips(), GUIManager.Position.LeftBottom);
                if (MapManager.playingmap != null)
                {
                    GUIManager.label("マップの時間: " + TimeManager.convpoint(new DateTime(MapManager.playingmap.time), TimeManager.ConvPointType.sec), GUIManager.Position.RightTop);
                    GUIManager.label("所持金: " + MapManager.getMoneyString(MapManager.playingmap.money), GUIManager.Position.RightTop);
                    GUIManager.label("マップの開始時間: " + TimeManager.convpoint(new DateTime(MapManager.playingmap.starttime), TimeManager.ConvPointType.sec), GUIManager.Position.RightBottom);
                    GUIManager.label("マップのプレイ時間: " + TimeManager.convinterval(new TimeSpan(MapManager.playingmap.playtime)), GUIManager.Position.RightBottom);
                }
                GUIManager.label("ポーズメニュー", GUIManager.Position.TitleBar);
                MenuItem[] _31menu = new MenuItem[] { new MenuButton("設定"), new MenuButton("保存"), new MenuButton("タイトルへ戻る") };
                GUIManager.menu_center(_31menu);
                if (_31menu[0].clicked)
                {
                    playSound(ac_click);
                    window = 2;
                }
                else if (_31menu[1].clicked)
                {
                    playSound(ac_click);
                    MapManager.saveMap(MapManager.playingmap);
                    window = 30;
                    GUIManager.setmsg("セーブしました");
                }
                else if (_31menu[2].clicked)
                {
                    playSound(ac_click);
                    window = 32;
                }
                break;

            case 32:
                GUIManager.dark();
                GUIManager.titlebardark();
                GUIManager.label("ポーズメニュー>タイトルへ戻る", GUIManager.Position.TitleBar);
                MenuItem[] _33menu = new MenuItem[] { new MenuItem("セーブされてない情報は削除されます"), new MenuItem(new MenuItem[] { new MenuButton("はい"), new MenuButton("いいえ") }) };
                GUIManager.menu_center(_33menu);
                if (_33menu[1].initems[0].clicked)
                {
                    playSound(ac_click);
                    Destroy(playercamera.gameObject);
                    MapManager.closeMap();
                    lastmsgtime = 3;
                    window      = 33;
                }
                else if (_33menu[1].initems[1].clicked)
                {
                    playSound(ac_click);
                    window = 31;
                }
                break;

            case 33:
                GUIManager.dark();
                GUIManager.titlebardark();
                string text = "終了しています...";
                if (Time.smoothDeltaTime >= 30 * 60)
                {
                    text = "お疲れ様でした。";
                }
                GUIManager.menu_center(new MenuItem[] { new MenuItem(text) });
                if (lastmsgtime <= 0)
                {
                    window = 1;
                }
                else
                {
                    lastmsgtime -= Time.deltaTime;
                }
                break;

            default:
                break;
            }
            if (statusinfo)
            {
                GUIManager.label("FPS: " + 1 / Time.smoothDeltaTime, GUIManager.Position.LeftTop);
                GUIManager.label("Window: " + window, GUIManager.Position.LeftTop);
            }
            GUIManager.flush();
            if (tipstime < 10)
            {
                tipstime += Time.deltaTime;
            }
            else
            {
                tipstime = 0;
                if ((tipsindex += 1) >= tips.Length)
                {
                    tipsindex = 0;
                }
            }
        }
Exemple #2
0
 void Update()
 {
     PlayerPrefs.SetString("time-totalplaytime", (TimeManager.totalplaytime += (long)(Time.deltaTime * 1000 * 10000)).ToString());
     if (MapManager.playingmap != null)
     {
         MapManager.playingmap.playtime += (long)(Time.deltaTime * 1000 * 10000);
         if (window == 30)
         {
             MapManager.playingmap.time += (long)(Time.deltaTime * 1000 * 10000);
         }
     }
     if (Input.GetKeyDown(KeyCode.F1))
     {
         statusinfo = !statusinfo;
     }
     else if (Input.GetKeyDown(KeyCode.F2))
     {
         Directory.CreateDirectory(ssdirpath);
         Application.CaptureScreenshot(Path.Combine(ssdirpath, DateTime.Now.Ticks.ToString()) + ".png");
     }
     if (Input.GetKeyDown(KeyCode.Escape))
     {
         if (window == 1)
         {
             Application.Quit();
         }
         else if (window == 2)
         {
             if (MapManager.playingmap != null)
             {
                 window = 31;
             }
             else
             {
                 window = 1;
             }
         }
         else if (window == 3)
         {
             window = 1;
         }
         else if (window == 10)
         {
             window = 1;
         }
         else if (window == 11)
         {
             window = window_1;
         }
         else if (window == 30)
         {
             window = 31;
         }
         else if (window == 31)
         {
             window = 30;
         }
         else if (window == 32)
         {
             window = 31;
         }
         else if (window == 33)
         {
             window = 1;
         }
     }
     if (menucamera.enabled = MapManager.playingmap == null)
     {
         playercamera = null;
         audiosource  = menusource;
         menusource.GetComponent <AudioListener>().enabled = true;
         menusource.enabled = true;
     }
     else if (playercamera != null)
     {
         menusource.GetComponent <AudioListener>().enabled = false;
         menusource.enabled = false;
         (audiosource = playercamera.GetComponent <AudioSource>()).volume = audiovolume;
         if (playercamera.GetComponent <AudioListener>() == null)
         {
             playercamera.gameObject.AddComponent <AudioListener>();
         }
         if (window == 30)
         {
             if (Input.GetKeyDown(KeyCode.B))
             {
                 playSound(ac_click);
                 playercamera.setTool(playercamera.getTool() == PlayerCamera.Tool.destroy ? PlayerCamera.Tool.none : PlayerCamera.Tool.destroy);
             }
             else if (Input.GetKeyDown(KeyCode.R))
             {
                 playSound(ac_click);
                 playercamera.setTool(playercamera.getTool() == PlayerCamera.Tool.road ? PlayerCamera.Tool.none : PlayerCamera.Tool.road);
             }
         }
     }
 }