Exemple #1
0
        /// <summary>
        /// 非好戦的な移動を行います
        /// </summary>
        /// <returns>移動量</returns>
        /// <param name="useSkill">使用するスキル</param>
        private int recession(MoveSkill useSkill)
        {
            Debug.Log("reacession");
            //エリア危険性レベルを取得
            Dictionary <FieldPosition, int> areaDangerLevelTable    = BattleManager.getInstance().getAreaDangerLevelTableInRange(user, useSkill.getMove(user));
            Dictionary <int, int>           dangerLevelIntegerTable = new Dictionary <int, int>();
            var keys           = areaDangerLevelTable.Keys;
            int sumDangerLevel = 0;

            foreach (FieldPosition pos in keys)
            {
                sumDangerLevel += areaDangerLevelTable[pos];
                dangerLevelIntegerTable.Add((int)pos, areaDangerLevelTable[pos]);
            }

            //最終判定:レベルが低いところへ
            FieldPosition nowPos = BattleManager.getInstance().searchCharacter(user);
            int           move   = MathHelper.getRandomKeyLowerOrderProbality(dangerLevelIntegerTable) - (int)nowPos;

            //move = move = BattleManager.getInstance().restructionPositionValue(nowPos, move);
            return(move);
        }
Exemple #2
0
        /// <summary>
        /// 好戦的な移動を行います
        /// </summary>
        /// <returns>移動量</returns>
        /// <param name="useSkill">使用するスキル</param>
        private int advance(MoveSkill useSkill)
        {
            //エリア危険性レベルを取得
            Dictionary <FieldPosition, int> areaDangerLevelTable = BattleManager.getInstance().getAreaDangerLevelTableInRange(user, useSkill.getMove(user));
            var keys           = areaDangerLevelTable.Keys;
            int sumDangerLevel = 0;

            foreach (FieldPosition pos in keys)
            {
                sumDangerLevel += areaDangerLevelTable[pos];
            }
            //最終判定:レベルが高いところへ
            int rand = UnityEngine.Random.Range(0, sumDangerLevel) + 1;

            foreach (FieldPosition pos in keys)
            {
                if (areaDangerLevelTable[pos] >= rand)
                {
                    FieldPosition nowPos = BattleManager.getInstance().searchCharacter(user);
                    int           move   = pos - nowPos;

                    return(move);
                }
                else
                {
                    rand -= areaDangerLevelTable[pos];
                }
            }
            throw new InvalidOperationException("cannot dicide advance move");
        }