/// <summary>
        /// コンストラクタ
        /// <para>ユニット名の解析に失敗すると、ユニットにKMCustomUnit1c1dを使用します。</para>
        /// </summary>
        public SelectorOfFeatureGenerator(string unitName)
            : base()
        {
            UnitMember unit = UnitMember.KMCustomUnit1c1d;

            if (unitName == UnitMember.KMCustomUnit1c1d.ToString())
            {
                unit = UnitMember.KMCustomUnit1c1d;
            }
            if (unitName == UnitMember.KMCustomUnit2c1d.ToString())
            {
                unit = UnitMember.KMCustomUnit2c1d;
            }
            if (unitName == UnitMember.KMCustomUnit2c1dver2.ToString())
            {
                unit = UnitMember.KMCustomUnit2c1dver2;
            }
            if (unitName == UnitMember.KMCustomUnit3c1d.ToString())
            {
                unit = UnitMember.KMCustomUnit3c1d;
            }

            this.id         = unit;
            this.Log        = false;
            this.ReadAmount = (int)Signal.FrequencyAnalysis.FFTpoint.size1024;
            this.MatchOnlyAtDiscrimination = false;
            return;
        }
Exemple #2
0
        public async Task ChangeUnitLeaderAsync(
            [FromRoute] uint id,
            [FromBody] UnitMember newLeader)
        {
            if (newLeader == null)
            {
                ErrorCode.LackOfParameterError.Throw();
            }

            using (var repo = MainRepository.WithReadAndWrite())
            {
                var member = await repo.Unit.GetByMemberIdAsync(this.AuthData.CharacterId);

                var oldUnit = member.Unit.Data;
                if (member.Unit.HasData && member.Member.HasData)
                {
                    var unitMember = member.Member.Data;
                    if (unitMember.Post != UnitMemberPostType.Leader)
                    {
                        ErrorCode.NotPermissionError.Throw();
                    }
                    if (oldUnit.Id != id)
                    {
                        ErrorCode.NotPermissionError.Throw();
                    }
                }
                else
                {
                    ErrorCode.UnitNotFoundError.Throw();
                }

                var members = await repo.Unit.GetMembersAsync(id);

                var targetMember = members.FirstOrDefault(m => m.CharacterId == newLeader.CharacterId);
                if (targetMember == null)
                {
                    ErrorCode.InvalidOperationError.Throw();
                }
                if (targetMember.Post == UnitMemberPostType.Leader)
                {
                    ErrorCode.MeaninglessOperationError.Throw();
                }
                var targetChara = await repo.Character.GetByIdAsync(targetMember.CharacterId);

                if (!targetChara.HasData)
                {
                    ErrorCode.CharacterNotFoundError.Throw();
                }
                if (targetChara.Data.AiType != CharacterAiType.Human)
                {
                    ErrorCode.InvalidOperationError.Throw();
                }
                targetMember.Post       = UnitMemberPostType.Leader;
                member.Member.Data.Post = UnitMemberPostType.Normal;

                await repo.SaveChangesAsync();
            }
        }
Exemple #3
0
 public static async Task EntryAsync(MainRepository repo, uint unitId, uint charaId)
 {
     var member = new UnitMember
     {
         CharacterId = charaId,
         Post        = UnitMemberPostType.Normal,
         UnitId      = unitId,
     };
     await repo.Unit.SetMemberAsync(member);
 }
Exemple #4
0
        public static async Task CreateAndSaveAsync(MainRepository repo, Unit unit, uint leaderId)
        {
            await repo.Unit.AddAsync(unit);

            await repo.SaveChangesAsync();

            var member = new UnitMember
            {
                CharacterId = leaderId,
                Post        = UnitMemberPostType.Leader,
                UnitId      = unit.Id,
            };
            await repo.Unit.SetMemberAsync(member);

            await repo.SaveChangesAsync();
        }
Exemple #5
0
        public void GetUnits()
        {
            var client    = new Client("knoema.com");
            var unitsList = client.GetUnits().GetAwaiter().GetResult();

            Assert.IsFalse(unitsList.Count() == 0);
            var unit = new UnitMember
            {
                Key  = 1000230,
                Name = "Percent of potential GDP"
            };

            Assert.AreEqual("Unit(s)", unitsList.ElementAt(0).Name);
            var memberKey = unitsList.FirstOrDefault(m => m.Name == unit.Name).Key;

            Assert.AreEqual(unit.Key, memberKey);
        }
        /// <summary>
        /// コンストラクタ
        /// <para>ユニット名の解析に失敗すると、ユニットにKMCustomUnit1c1dを使用します。</para>
        /// </summary>
        public SelectorOfFeatureGenerator(string unitName)
            : base()
        {
            UnitMember unit = UnitMember.KMCustomUnit1c1d;
            if (unitName == UnitMember.KMCustomUnit1c1d.ToString()) unit = UnitMember.KMCustomUnit1c1d;
            if (unitName == UnitMember.KMCustomUnit2c1d.ToString()) unit = UnitMember.KMCustomUnit2c1d;
            if (unitName == UnitMember.KMCustomUnit2c1dver2.ToString()) unit = UnitMember.KMCustomUnit2c1dver2;
            if (unitName == UnitMember.KMCustomUnit3c1d.ToString()) unit = UnitMember.KMCustomUnit3c1d;

            this.id = unit;
            this.Log = false;
            this.ReadAmount = (int)Signal.FrequencyAnalysis.FFTpoint.size1024;
            this.MatchOnlyAtDiscrimination = false;
            return;
        }
        public override async Task ExecuteAsync(MainRepository repo, Character character, IEnumerable <CharacterCommandParameter> options, CommandSystemData game)
        {
            var idParam     = options.FirstOrDefault(p => p.Type == 1);
            var unitIdParam = options.FirstOrDefault(p => p.Type == 2);

            if (idParam == null || unitIdParam == null)
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、コマンドパラメータが足りません。<emerge>管理者に連絡してください</emerge>");

                return;
            }
            var id     = (uint)idParam.NumberValue;
            var unitId = (uint)unitIdParam.NumberValue;

            var secretaryOptional = await repo.Character.GetByIdAsync(id);

            if (!secretaryOptional.HasData || secretaryOptional.Data.HasRemoved)
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、指定した政務官は存在しないか、すでに削除されています");

                return;
            }
            if (secretaryOptional.Data.CountryId != character.CountryId)
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、指定された政務官はあなたの国のものではありません");

                return;
            }
            if (!secretaryOptional.Data.AiType.IsSecretary())
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、指定された武将は政務官ではありません");

                return;
            }
            if (secretaryOptional.Data.AiType == CharacterAiType.SecretaryUnitLeader)
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、部隊長は部隊を変更できません");

                return;
            }

            var countryOptional = await repo.Country.GetByIdAsync(character.CountryId);

            if (!countryOptional.HasData)
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、あなたの国はすでに滅亡しているか無所属です");

                return;
            }
            var country = countryOptional.Data;

            var unitOptional = await repo.Unit.GetByIdAsync(unitId);

            if (!unitOptional.HasData)
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、指定された部隊は存在しません");

                return;
            }
            var unit = unitOptional.Data;

            if (unit.CountryId != country.Id)
            {
                await game.CharacterLogAsync($"政務官を配属または転属しようとしましたが、指定された部隊はあなたの国のものではありません");

                return;
            }

            var unitMember = new UnitMember
            {
                CharacterId = id,
                UnitId      = unitId,
                Post        = secretaryOptional.Data.AiType == CharacterAiType.SecretaryUnitGather ? UnitMemberPostType.Helper : UnitMemberPostType.Normal,
            };
            await repo.Unit.SetMemberAsync(unitMember);

            character.Contribution += 30;
            character.AddLeadershipEx(50);
            character.SkillPoint++;
            await game.CharacterLogAsync($"政務官 <character>{secretaryOptional.Data.Name}</character> を部隊 {unit.Name} に配属しました");
        }