Esempio n. 1
0
        public void SpySettings_ToggleLanguage()
        {
            AppLanguageEnum oldLanguage = SpySettings.Language;

            //toggle to a different language
            SpySettings.Language = (oldLanguage == AppLanguageEnum.English) ? AppLanguageEnum.Chinese : AppLanguageEnum.English;

            SpySettings.SaveUserSettings();

            LPConfig.ReloadConfig();

            Assert.AreNotEqual(oldLanguage, SpySettings.Language, "The toggled the language value should be different");
        }
Esempio n. 2
0
        public void SpySettings_ToggleCaptureSnapshots()
        {
            bool captureSnapshots = SpySettings.CaptureSnapshots;

            //default should be true;
            Assert.AreEqual(true, captureSnapshots);

            //toggle to a different language
            SpySettings.CaptureSnapshots = !captureSnapshots;

            SpySettings.SaveUserSettings();

            LPConfig.ReloadConfig();

            Assert.AreNotEqual(captureSnapshots, SpySettings.CaptureSnapshots, "The toggled the CaptureSnapshots setting should be different");
        }
Esempio n. 3
0
        /// <summary>
        ///     テキストボックスのフォーカス移動後の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnRelationIntelligenceItemNumericUpDownValueChanged(object sender, EventArgs e)
        {
            // 選択項目がなければ何もしない
            Country selected = GetSelectedRelationCountry();
            if (selected == Country.None)
            {
                return;
            }
            Country target = GetTargetRelationCountry();
            if (target == Country.None)
            {
                return;
            }

            NumericUpDown control = sender as NumericUpDown;
            if (control == null)
            {
                return;
            }
            ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag;

            CountrySettings settings = Scenarios.GetCountrySettings(selected);
            SpySettings spy = Scenarios.GetCountryIntelligence(selected, target);

            // 初期値から変更されていなければ何もしない
            int val = (int) control.Value;
            object prev = _controller.GetItemValue(itemId, spy);
            if ((prev == null) && (val == 0))
            {
                return;
            }

            // 値に変化がなければ何もしない
            if ((prev != null) && (val == (int) prev))
            {
                return;
            }

            // 無効な値ならば値を戻す
            if (!_controller.IsItemValueValid(itemId, val))
            {
                _controller.UpdateItemValue(control, spy);
                return;
            }

            if (settings == null)
            {
                settings = Scenarios.CreateCountrySettings(selected);
            }

            if (spy == null)
            {
                spy = new SpySettings { Country = target };
                Scenarios.SetCountryIntelligence(selected, spy);
            }

            _controller.OutputItemValueChangedLog(itemId, val, selected, spy);

            // 項目値変更前の処理
            _controller.PreItemChanged(itemId, val, spy);

            // 値を更新する
            _controller.SetItemValue(itemId, val, spy);

            // 編集済みフラグを設定する
            _controller.SetItemDirty(itemId, spy, settings);

            // 文字色を変更する
            control.ForeColor = Color.Red;

            // 項目値変更後の処理
            _controller.PostItemChanged(itemId, val, spy);
        }
Esempio n. 4
0
        /// <summary>
        ///     諜報情報の編集項目を更新する
        /// </summary>
        /// <param name="spy">諜報設定</param>
        private void UpdateIntelligenceItems(SpySettings spy)
        {
            _controller.UpdateItemValue(spyNumNumericUpDown, spy);

            _controller.UpdateItemColor(spyNumNumericUpDown, spy);
        }
 /// <summary>
 ///     編集項目の値を更新する
 /// </summary>
 /// <param name="control">コントロール</param>
 /// <param name="spy">諜報設定</param>
 public void UpdateItemValue(NumericUpDown control, SpySettings spy)
 {
     ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag;
     control.Value = (int) GetItemValue(itemId, spy);
 }
Esempio n. 6
0
        /// <summary>
        ///     諜報設定を構文解析する
        /// </summary>
        /// <param name="lexer">字句解析器</param>
        /// <returns>諜報設定</returns>
        private static SpySettings ParseSpyInfo(TextLexer lexer)
        {
            // =
            Token token = lexer.GetToken();
            if (token.Type != TokenType.Equal)
            {
                Log.InvalidToken(LogCategory, token, lexer);
                return null;
            }

            // {
            token = lexer.GetToken();
            if (token.Type != TokenType.OpenBrace)
            {
                Log.InvalidToken(LogCategory, token, lexer);
                return null;
            }

            SpySettings spy = new SpySettings();
            int lastLineNo = -1;
            while (true)
            {
                token = lexer.GetToken();

                // ファイルの終端
                if (token == null)
                {
                    break;
                }

                // } (セクション終端)
                if (token.Type == TokenType.CloseBrace)
                {
                    break;
                }

                // 無効なトークン
                if (token.Type != TokenType.Identifier)
                {
                    Log.InvalidToken(LogCategory, token, lexer);
                    lexer.SkipLine();
                    continue;
                }

                string keyword = token.Value as string;
                if (string.IsNullOrEmpty(keyword))
                {
                    continue;
                }
                keyword = keyword.ToLower();

                // country
                if (keyword.Equals("country"))
                {
                    Country? tag = ParseTag(lexer);
                    if (!tag.HasValue)
                    {
                        Log.InvalidClause(LogCategory, "country", lexer);
                        continue;
                    }

                    // 国タグ
                    spy.Country = (Country) tag;

                    // 最終解釈行を覚えておく
                    lastLineNo = lexer.LineNo;
                    continue;
                }

                // numberofspies
                if (keyword.Equals("numberofspies"))
                {
                    int? n = ParseInt(lexer);
                    if (!n.HasValue)
                    {
                        Log.InvalidClause(LogCategory, "numberofspies", lexer);
                        continue;
                    }

                    // スパイの数
                    spy.Spies = (int) n;

                    // 最終解釈行を覚えておく
                    lastLineNo = lexer.LineNo;
                    continue;
                }

                // 無効なトークン
                Log.InvalidToken(LogCategory, token, lexer);
                if (lexer.LineNo != lastLineNo)
                {
                    // 現在行が最終解釈行と異なる場合、閉じ括弧が不足しているものと見なす
                    lexer.ReserveToken(token);
                    break;
                }
                lexer.SkipLine();
            }

            return spy;
        }
 /// <summary>
 ///     編集項目の値を設定する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="val">編集項目の値</param>
 /// <param name="spy">諜報設定</param>
 public void SetItemValue(ScenarioEditorItemId itemId, object val, SpySettings spy)
 {
     switch (itemId)
     {
         case ScenarioEditorItemId.IntelligenceSpies:
             spy.Spies = (int) val;
             break;
     }
 }
 /// <summary>
 ///     編集項目の色を更新する
 /// </summary>
 /// <param name="control">コントロール</param>
 /// <param name="spy">諜報設定</param>
 public void UpdateItemColor(Control control, SpySettings spy)
 {
     ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag;
     control.ForeColor = IsItemDirty(itemId, spy) ? Color.Red : SystemColors.WindowText;
 }
 /// <summary>
 ///     項目値変更前の処理
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="val">編集項目の値</param>
 /// <param name="spy">諜報設定</param>
 public void PreItemChanged(ScenarioEditorItemId itemId, object val, SpySettings spy)
 {
     // 何もしない
 }
 /// <summary>
 ///     編集項目の編集済みフラグを設定する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="spy">諜報設定</param>
 /// <param name="settings">国家設定</param>
 public void SetItemDirty(ScenarioEditorItemId itemId, SpySettings spy, CountrySettings settings)
 {
     spy.SetDirty((SpySettings.ItemId) ItemDirtyFlags[(int) itemId]);
     settings.SetDirty();
     Scenarios.SetDirty();
 }
 /// <summary>
 ///     項目値変更後の処理
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="val">編集項目の値</param>
 /// <param name="spy">諜報設定</param>
 public void PostItemChanged(ScenarioEditorItemId itemId, object val, SpySettings spy)
 {
     switch (itemId)
     {
         case ScenarioEditorItemId.IntelligenceSpies:
             _form.SetRelationListItemText(8, ObjectHelper.ToString(val));
             break;
     }
 }
 /// <summary>
 ///     編集項目の値変更時のログを出力する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="val">編集項目の値</param>
 /// <param name="country">選択国</param>
 /// <param name="spy">諜報設定</param>
 public void OutputItemValueChangedLog(ScenarioEditorItemId itemId, object val, Country country, SpySettings spy)
 {
     Log.Info("[Scenario] {0}: {1} -> {2} ({3}=>{4})", ItemStrings[(int) itemId],
         ObjectHelper.ToString(GetItemValue(itemId, spy)), ObjectHelper.ToString(val),
         Countries.Strings[(int) country], Countries.Strings[(int) spy.Country]);
 }
 /// <summary>
 ///     編集項目の編集済みフラグを取得する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="spy">諜報設定</param>
 /// <returns>編集済みフラグ</returns>
 public bool IsItemDirty(ScenarioEditorItemId itemId, SpySettings spy)
 {
     return (spy != null) && spy.IsDirty((SpySettings.ItemId) ItemDirtyFlags[(int) itemId]);
 }
        /// <summary>
        ///     編集項目の値を取得する
        /// </summary>
        /// <param name="itemId">項目ID</param>
        /// <param name="spy">諜報設定</param>
        /// <returns>編集項目の値</returns>
        public object GetItemValue(ScenarioEditorItemId itemId, SpySettings spy)
        {
            switch (itemId)
            {
                case ScenarioEditorItemId.IntelligenceSpies:
                    return spy?.Spies ?? 0;
            }

            return null;
        }
Esempio n. 15
0
 /// <summary>
 ///     諜報設定を設定する
 /// </summary>
 /// <param name="country">対象国</param>
 /// <param name="spy">諜報設定</param>
 public static void SetCountryIntelligence(Country country, SpySettings spy)
 {
     if (!SpyTable.ContainsKey(country))
     {
         SpyTable.Add(country, new Dictionary<Country, SpySettings>());
     }
     SpyTable[country][spy.Country] = spy;
 }