示例#1
0
 internal static KeyValuePair <List <int>, List <int> > CalculateHealing(LUA.LuaAbilityInfo labii)
 {
     return(new KeyValuePair <List <int>, List <int> >(new List <int> {
         labii.minDmg, labii.maxDmg
     }, new List <int> {
         0, 0
     }));
 }
        public void GenerateTurn(BaseCharacter bs, MapZone zone, List <BasicTile> bt)
        {
            bAttackedThisCT = false;
            abiUsedInfo     = null;
            character       = bs;
            turns.Clear();
            characterArea.Clear();
            int temp     = bs.trueSTATChart().currentPassiveStats[(int)STATChart.PASSIVESTATS.AP];
            int maxMoves = bs.trueSTATChart().currentPassiveStats[(int)STATChart.PASSIVESTATS.MOB];

            for (int i = 1; i < temp; i++)
            {
                turns.Add(new TurnInfo(maxMoves));
                characterArea.Add(MapListUtility.returnMapRadius((i - 1) * maxMoves, i * maxMoves, bt, bs));
            }
        }
        /// <summary>
        /// For enemy radius preview
        /// </summary>
        /// <param name="bt"></param>
        public void ReGenerateTurn2(List <BasicTile> bt)
        {
            bAttackedThisCT = false;
            abiUsedInfo     = null;
            turns.Clear();
            characterArea.Clear();
            int temp     = character.trueSTATChart().currentPassiveStats[(int)STATChart.PASSIVESTATS.AP];
            int maxMoves = character.trueSTATChart().currentPassiveStats[(int)STATChart.PASSIVESTATS.MOB];

            for (int i = 1; i < temp + 1; i++)
            {
                turns.Add(new TurnInfo(maxMoves));
                if (i > 1)
                {
                    for (int j = 1; j < 2; j++)
                    {
                        List <BasicTile> list = MapListUtility.returnValidMapRadius2((i - 1) * maxMoves + maxMoves, bt, character.position).Except(characterArea[i - 1 - j]).ToList();
                        characterArea.Add(list);
                    }
                }
                else
                {
                    characterArea.Add(MapListUtility.returnValidMapRadius2((i - 1) * maxMoves + maxMoves, bt, character.position));
                }
            }



            try
            {
                var tempT = bt.Find(t => t.positionGrid.ToPoint() == (character.position / 64).ToPoint());
                if (tempT != null && !characterArea[0].Contains(tempT))
                {
                    characterArea[0].Add(tempT);
                }

                if (characterArea[0].Count == 0)
                {
                    characterArea[0].Add(bt.Find(t => t.mapPosition.Location.ToVector2() == character.position));
                }
            }
            catch
            {
            }
        }
        public void ReGenerateTurn(List <BasicTile> bt)
        {
            bAttackedThisCT = false;
            abiUsedInfo     = null;
            turns.Clear();
            characterArea.Clear();
            int temp     = character.trueSTATChart().currentPassiveStats[(int)STATChart.PASSIVESTATS.AP];
            int maxMoves = character.trueSTATChart().currentPassiveStats[(int)STATChart.PASSIVESTATS.MOB];

            for (int i = 1; i < temp + 1; i++)
            {
                turns.Add(new TurnInfo(maxMoves));
                if (i > 1)
                {
                    for (int j = 1; j < 2; j++)
                    {
                        List <BasicTile> list = MapListUtility.returnValidMapRadius((i - 1) * maxMoves + maxMoves, bt, character.position).Except(characterArea[i - 1 - j]).ToList();
                        characterArea.Add(list);
                    }
                }
                else
                {
                    characterArea.Add(MapListUtility.returnValidMapRadius((i - 1) * maxMoves + maxMoves, bt, character.position));
                }
            }



            try
            {
                var tempT = bt.Find(t => t.positionGrid.ToPoint() == (character.position / 64).ToPoint());
                if (tempT != null && !characterArea[0].Contains(tempT))
                {
                    characterArea[0].Add(tempT);
                }

                if (characterArea[0].Count == 0)
                {
                    characterArea[0].Add(bt.Find(t => t.mapPosition.Location.ToVector2() == character.position));
                }
            }
            catch
            {
            }

            bool bStuffToAdjust = false;
            List <KeyValuePair <BasicTile, int> > allUniqueTiles = new List <KeyValuePair <BasicTile, int> >();
            List <KeyValuePair <BasicTile, int> > duplicates     = new List <KeyValuePair <BasicTile, int> >();

            for (int i = 0; i < characterArea.Count; i++)
            {
                for (int j = 0; j < characterArea[i].Count; j++)
                {
                    if (allUniqueTiles.Find(t => t.Key == characterArea[i][j]).Equals(default(KeyValuePair <BasicTile, int>)))
                    {
                        allUniqueTiles.Add(new KeyValuePair <BasicTile, int>(characterArea[i][j], i));
                    }
                    else
                    {
                        bStuffToAdjust = true;
                        duplicates.Add(new KeyValuePair <BasicTile, int>(characterArea[i][j], i));
                    }
                }
            }

            if (bStuffToAdjust)
            {
                for (int i = 0; i < duplicates.Count; i++)
                {
                    characterArea[duplicates[i].Value].Remove(duplicates[i].Key);
                }
            }
        }