/// <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); }
/// <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); } } }