using System; using System.Collections.Generic; using System.IO; using I2.Loc; using UnityEngine; public static class GameModeManager { public static GameModeManager.Data GetData(GameModeManager.Type gameMode) { NDebug.Assert(GameModeManager.DataDic.ContainsKey(gameMode), "ゲームの進行モードに不正な値が入りました"); return GameModeManager.DataDic[gameMode]; } public static GameModeManager.Data GetData() { return GameModeManager.GetData(GameModeManager.nowGameMode); } public static GameModeManager.Type nowGameMode { get { return GameModeManager.m_NowGameModeType; } set { GameModeManager.m_NowGameModeType = value; } } public static bool Serialize(BinaryWriter brWrite) { brWrite.Write("CM3D21_GAME_MODE_MGR"); brWrite.Write(1430); brWrite.Write(1); brWrite.Write((int)GameModeManager.m_NowGameModeType); return true; } public static bool Deserialize(BinaryReader brRead) { GameModeManager.Reset(); if (brRead.BaseStream.Length <= brRead.BaseStream.Position + 1L) { Debug.Log("GameModeManager\nこれ以上は読めない"); return false; } long position = brRead.BaseStream.Position; string text = brRead.ReadString(); if (text != "CM3D21_GAME_MODE_MGR") { Debug.Log("GameModeManager\nヘッダー取得に失敗しました。\n" + text); brRead.BaseStream.Seek(position, SeekOrigin.Begin); return false; } int num = brRead.ReadInt32(); position = brRead.BaseStream.Position; int num2 = brRead.ReadInt32(); int value = brRead.ReadInt32(); try { GameModeManager.nowGameMode = (GameModeManager.Type)Enum.ToObject(typeof(GameModeManager.Type), value); } catch (Exception e) { NDebug.AssertParseError("GameModeManager.Type", e); } return true; } private static void Reset() { GameModeManager.nowGameMode = GameModeManager.Type.Normal; } public static readonly Dictionary DataDic = new Dictionary { { GameModeManager.Type.Normal, new GameModeManager.Data(GameModeManager.Type.Normal, "main_banner_um", "従来のモード\nメイドのスケジュールを設定することで、仕事、育成、夜伽を行う事のできる従来のモード\u3000", "SceneDaily/モード説明1") }, { GameModeManager.Type.LifeMode, new GameModeManager.Data(GameModeManager.Type.LifeMode, "main_banner_elm", "ライフモード\nメイド達が普段どのような風に\n生活、仕事をしているのかを見ることが出来るモード\n普段は見ることのできない一面や、メイド同士の珍しいやり取りが見れるかも?", "SceneDaily/モード説明2") } }; private static GameModeManager.Type m_NowGameModeType; private const string STR_LOG_HEAD = "GameModeManager\n"; private const string STR_GAME_MODE_SERIALIZE_HEADER = "CM3D21_GAME_MODE_MGR"; private const int GAME_MODE_SERIALIZE_VER = 1; public enum Type { Normal, LifeMode } public class Data { public Data(GameModeManager.Type mode, string strBannerImageName, string strDescription, string termDescription) { this.strBannerImageName = strBannerImageName; this.strDescription = strDescription; this.termDescription = termDescription; if (Product.supportMultiLanguage) { string term = string.Empty; if (mode == GameModeManager.Type.Normal) { term = "SceneDaily/スプライト/モードバナー_通常"; } else { term = "SceneDaily/スプライト/モードバナー_ライフモード"; } this.strBannerImageName = LocalizationManager.GetTranslation(term, true, 0, true, false, null, Product.EnumConvert.ToI2LocalizeLanguageName(Product.defaultLanguage)); } } public readonly GameModeManager.Type gameMode; public readonly string strBannerImageName; public readonly string strDescription; public readonly string termDescription; } }