Ejemplo n.º 1
0
        /// <summary>
        /// 引数に渡したキャラクターをバトルに参加させます
        /// </summary>
        /// <param name="bal">参加させるキャラクター</param>
        /// <param name="pos">参加させる位置</param>
        /// <param name="ai">キャラクターのAI</param>
        public void joinBattle(IBattleable bal, FieldPosition pos, IEnemyAI ai)
        {
            if (!isBattleing)
            {
                throw new InvalidOperationException("battle isn't started");
            }

            loadContainer(bal);
            bal.setIsBattling(true);
            joinedCharacter[pos].Add(bal);
            bal.syncronizePositioin(field.getObjectPosition(pos, bal));

            AIBattleTaskManager manager = MonoBehaviour.Instantiate((GameObject)Resources.Load("Prefabs/AIBattleManager")).GetComponent <AIBattleTaskManager>();

            manager.transform.SetParent(bal.getContainer().transform);
            manager.setCharacter(bal, ai);
            joinedManager.Add(bal.getUniqueId(), manager);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 対象はバトルから離脱します
        /// </summary>
        /// <param name="bal">離脱するキャラクター</param>
        public void escapeCommand(IBattleable bal)
        {
            if (!isBattleing)
            {
                throw new InvalidOperationException("battle isn't started");
            }

            removeBalFromJoinedCharacter(bal);
            bal.setIsBattling(false);

            if (isContinuingBattle())
            {
                finishBattle();
            }
            else
            {
                var keys = joinedManager.Keys;
                foreach (long id in keys)
                {
                    IBattleTaskManager taskManager = joinedManager[id];
                    taskManager.deleteTaskFromTarget(bal);
                }
            }
        }