/// <summary> /// 編集済みフラグを設定する /// </summary> /// <param name="id">項目ID</param> public static void SetDirty(MiscItemId id) { DirtyFlags[(int) id] = true; _dirtyFlag = true; }
/// <summary> /// 項目の値を設定する /// </summary> /// <param name="id">項目ID</param> /// <param name="o">項目の値</param> public static void SetItem(MiscItemId id, object o) { _items[(int) id] = o; }
/// <summary> /// 項目が編集済みかどうかを取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>編集済みならばtrueを返す</returns> public static bool IsDirty(MiscItemId id) { return DirtyFlags[(int) id]; }
/// <summary> /// 項目の空白文字/コメントを設定する /// </summary> /// <param name="id">項目ID</param> /// <param name="s">設定する文字列</param> public static void SetComment(MiscItemId id, string s) { _comments[(int) id] = s; }
/// <summary> /// 項目のツールチップ文字列を取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>ツールチップ文字列</returns> public static string GetItemToolTip(MiscItemId id) { return HoI2EditorController.GetResourceString("MiscToolTip" + ItemNames[(int) id]); }
/// <summary> /// 項目の文字列を取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>文字列</returns> /// <remarks>Bool/Enumの項目は整数で表現する</remarks> public static string GetString(MiscItemId id) { switch (ItemTypes[(int) id]) { case MiscItemType.Bool: return GetBool(id) ? "1" : "0"; case MiscItemType.Enum: case MiscItemType.Int: case MiscItemType.PosInt: case MiscItemType.NonNegInt: case MiscItemType.NonPosInt: case MiscItemType.NonNegIntMinusOne: case MiscItemType.RangedInt: case MiscItemType.RangedPosInt: case MiscItemType.RangedIntMinusOne: case MiscItemType.RangedIntMinusThree: return IntHelper.ToString0(GetInt(id)); case MiscItemType.NonNegInt1: return IntHelper.ToString1(GetInt(id)); case MiscItemType.Dbl: case MiscItemType.PosDbl: case MiscItemType.NonNegDbl: case MiscItemType.NonPosDbl: case MiscItemType.NonNegDblMinusOne1: case MiscItemType.RangedDbl: case MiscItemType.RangedDblMinusOne1: return DoubleHelper.ToString1(GetDouble(id)); case MiscItemType.NonNegDbl0: case MiscItemType.NonPosDbl0: case MiscItemType.RangedDbl0: return DoubleHelper.ToString0(GetDouble(id)); case MiscItemType.NonNegDbl2: case MiscItemType.NonPosDbl2: return DoubleHelper.ToString2(GetDouble(id)); case MiscItemType.NonNegDbl5: return DoubleHelper.ToString5(GetDouble(id)); case MiscItemType.NonNegDblMinusOne: case MiscItemType.RangedDblMinusOne: return GetDbl1MinusOneString(GetDouble(id)); case MiscItemType.NonNegDbl2AoD: return GetDbl1AoD2String(GetDouble(id)); case MiscItemType.NonNegDbl4Dda13: return GetDbl1Dda134String(GetDouble(id)); case MiscItemType.NonNegDbl2Dh103Full: return GetDbl1Range2String(GetDouble(id), 0, 0.1000005); case MiscItemType.NonNegDbl2Dh103Full1: return GetDbl2Range1String(GetDouble(id), 0, 0.2000005); case MiscItemType.NonNegDbl2Dh103Full2: return GetDbl1Range2String(GetDouble(id), 0, 1); case MiscItemType.NonPosDbl5AoD: return GetDbl1AoD5String(GetDouble(id)); case MiscItemType.NonPosDbl2Dh103Full: return GetDbl1Range2String(GetDouble(id), -0.1000005, 0); case MiscItemType.NonNegIntNegDbl: return GetNonNegIntNegDblString(GetDouble(id)); } return string.Empty; }
/// <summary> /// 項目の値を取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>項目の値</returns> public static object GetItem(MiscItemId id) { return _items[(int) id]; }
/// <summary> /// 項目の選択肢の文字列を取得する /// </summary> /// <param name="id">項目ID</param> /// <param name="index">選択肢のインデックス</param> /// <returns>選択肢の文字列</returns> public static string GetItemChoice(MiscItemId id, int index) { string s = IntHelper.ToString(index); return s + ": " + HoI2EditorController.GetResourceString("MiscEnum" + ItemNames[(int) id] + s); }
/// <summary> /// 項目の値を整数値として取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>項目の値</returns> public static int GetInt(MiscItemId id) { object item = GetItem(id); int n = 0; if (item is int) { n = (int) item; } else if (item is double) { n = (int) (double) item; } // 列挙型の場合最小値と最大値の間になければ値を丸める if (ItemTypes[(int) id] != MiscItemType.Enum) { if (IntMinValues.ContainsKey(id) && n < IntMinValues[id]) { n = IntMinValues[id]; } else if (IntMaxValues.ContainsKey(id) && n > IntMaxValues[id]) { n = IntMaxValues[id]; } } return n; }
/// <summary> /// 項目の値を実数値として取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>項目の値</returns> public static double GetDouble(MiscItemId id) { object item = GetItem(id); double d = 0; if (item is double) { d = (double) item; } else if (item is int) { d = (int) item; } return d; }
/// <summary> /// 項目の空白文字/コメントを取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>項目の空白文字/コメント</returns> public static string GetComment(MiscItemId id) { return _comments[(int) id]; }
/// <summary> /// 項目の値を真偽値として取得する /// </summary> /// <param name="id">項目ID</param> /// <returns>項目の値</returns> public static bool GetBool(MiscItemId id) { object item = GetItem(id); if (item is bool) { return (bool) item; } return false; }
/// <summary> /// 他のフォームに更新を通知する /// </summary> /// <param name="id">項目ID</param> private void NotifyItemChange(MiscItemId id) { switch (id) { case MiscItemId.TpMaxAttach: // 輸送艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.Transport].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.SsMaxAttach: // 潜水艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.Submarine].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.SsnMaxAttach: // 原子力潜水艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.NuclearSubmarine].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.DdMaxAttach: // 駆逐艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.Destroyer].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.ClMaxAttach: // 軽巡洋艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.LightCruiser].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.CaMaxAttach: // 重巡洋艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.HeavyCruiser].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.BcMaxAttach: // 巡洋戦艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.BattleCruiser].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.BbMaxAttach: // 戦艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.BattleShip].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.CvlMaxAttach: // 軽空母最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.EscortCarrier].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.CvMaxAttach: // 空母最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int) UnitType.Carrier].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; } }