Beispiel #1
0
 /// <summary>
 ///     編集済みフラグを設定する
 /// </summary>
 /// <param name="id">項目ID</param>
 public static void SetDirty(MiscItemId id)
 {
     DirtyFlags[(int) id] = true;
     _dirtyFlag = true;
 }
Beispiel #2
0
 /// <summary>
 ///     項目の値を設定する
 /// </summary>
 /// <param name="id">項目ID</param>
 /// <param name="o">項目の値</param>
 public static void SetItem(MiscItemId id, object o)
 {
     _items[(int) id] = o;
 }
Beispiel #3
0
 /// <summary>
 ///     項目が編集済みかどうかを取得する
 /// </summary>
 /// <param name="id">項目ID</param>
 /// <returns>編集済みならばtrueを返す</returns>
 public static bool IsDirty(MiscItemId id)
 {
     return DirtyFlags[(int) id];
 }
Beispiel #4
0
 /// <summary>
 ///     項目の空白文字/コメントを設定する
 /// </summary>
 /// <param name="id">項目ID</param>
 /// <param name="s">設定する文字列</param>
 public static void SetComment(MiscItemId id, string s)
 {
     _comments[(int) id] = s;
 }
Beispiel #5
0
 /// <summary>
 ///     項目のツールチップ文字列を取得する
 /// </summary>
 /// <param name="id">項目ID</param>
 /// <returns>ツールチップ文字列</returns>
 public static string GetItemToolTip(MiscItemId id)
 {
     return HoI2EditorController.GetResourceString("MiscToolTip" + ItemNames[(int) id]);
 }
Beispiel #6
0
        /// <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;
        }
Beispiel #7
0
 /// <summary>
 ///     項目の値を取得する
 /// </summary>
 /// <param name="id">項目ID</param>
 /// <returns>項目の値</returns>
 public static object GetItem(MiscItemId id)
 {
     return _items[(int) id];
 }
Beispiel #8
0
 /// <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);
 }
Beispiel #9
0
        /// <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;
        }
Beispiel #10
0
        /// <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;
        }
Beispiel #11
0
 /// <summary>
 ///     項目の空白文字/コメントを取得する
 /// </summary>
 /// <param name="id">項目ID</param>
 /// <returns>項目の空白文字/コメント</returns>
 public static string GetComment(MiscItemId id)
 {
     return _comments[(int) id];
 }
Beispiel #12
0
        /// <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;
        }
Beispiel #13
0
        /// <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;
            }
        }