public void PlayerDeterministicIterateDequeueAndUpdateAndEnqueue(int loopCount, decimal spd)
        {
            var         sheets      = TableSheetsImporter.ImportSheets();
            TableSheets tableSheets = new TableSheets(sheets);

            Player[] players = new[]
            {
                new Player(
                    1,
                    tableSheets.CharacterSheet,
                    tableSheets.CharacterLevelSheet,
                    tableSheets.EquipmentItemSetEffectSheet),
                new Player(
                    2,
                    tableSheets.CharacterSheet,
                    tableSheets.CharacterLevelSheet,
                    tableSheets.EquipmentItemSetEffectSheet),
                new Player(
                    3,
                    tableSheets.CharacterSheet,
                    tableSheets.CharacterLevelSheet,
                    tableSheets.EquipmentItemSetEffectSheet),
            };

            List <Player> results1 = new List <Player>();
            List <Player> results2 = new List <Player>();

            for (int i = 0; i < 2; i++)
            {
                List <Player> targetResults = i == 0
                    ? results1
                    : results2;

                SimplePriorityQueue <Player, decimal> queue = new SimplePriorityQueue <Player, decimal>();
                for (int j = 0; j < players.Length; j++)
                {
                    queue.Enqueue(players[j], spd);
                }

                for (int j = 0; j < loopCount; j++)
                {
                    Assert.True(queue.TryDequeue(out Player player));
                    targetResults.Add(player);

                    foreach (Player otherPlayer in queue)
                    {
                        decimal priority = queue.GetPriority(otherPlayer);
                        queue.UpdatePriority(otherPlayer, priority);
                    }

                    queue.Enqueue(player, spd);
                }
            }

            Assert.Equal(results1, results2);
        }
Exemple #2
0
        public EnemyPlayerDigestTest()
        {
            _tableSheets = new TableSheets(TableSheetsImporter.ImportSheets());
            var avatarState = new AvatarState(
                new PrivateKey().ToAddress(),
                new PrivateKey().ToAddress(),
                1234,
                _tableSheets.GetAvatarSheets(),
                new GameConfigState(),
                new PrivateKey().ToAddress(),
                "test"
                );

            avatarState.hair = 2;
            avatarState.lens = 3;
            avatarState.ear  = 4;
            avatarState.tail = 5;

            var costumeRow = _tableSheets.CostumeStatSheet.Values.First(r => r.StatType == StatType.ATK);
            var costume    = (Costume)ItemFactory.CreateItem(_tableSheets.ItemSheet[costumeRow.CostumeId], new TestRandom());

            costume.equipped = true;
            avatarState.inventory.AddItem(costume);

            var costume2Row = _tableSheets.CostumeStatSheet.Values.First(r => r.StatType == StatType.DEF);
            var costume2    = (Costume)ItemFactory.CreateItem(_tableSheets.ItemSheet[costume2Row.CostumeId], new TestRandom());

            avatarState.inventory.AddItem(costume2);

            var weaponRow = _tableSheets.EquipmentItemSheet.Values.First(r => r.ItemSubType == ItemSubType.Weapon);
            var weapon    = (Weapon)ItemFactory.CreateItem(_tableSheets.ItemSheet[weaponRow.Id], new TestRandom());

            weapon.equipped = true;
            avatarState.inventory.AddItem(weapon);

            var armorRow =
                _tableSheets.EquipmentItemSheet.Values.First(
                    r => r.ItemSubType == ItemSubType.Armor);
            var armor = (Armor)ItemFactory.CreateItem(_tableSheets.ItemSheet[armorRow.Id], new TestRandom());

            avatarState.inventory.AddItem(armor);
            _avatarState = avatarState;
        }