/// <summary> /// 対象を指定された量移動させます /// </summary> /// <param name="bal">移動させるキャラクター</param> /// <param name="moveness">移動させる量</param> public void moveCommand(IBattleable bal, int moveness) { if (!isBattleing) { throw new InvalidOperationException("battle isn't started"); } field.deleteCharacterPos(bal); //引数に渡されたIBattleableキャラの位置を検索 FieldPosition nowPos = searchCharacter(bal); //値が適切か判断 if (Enum.GetNames(typeof(FieldPosition)).Length < (int)(nowPos + moveness)) { throw new ArgumentException("invalid moveness"); } int movePosValue = restructionPositionValue(nowPos, moveness); FieldPosition movePos = (FieldPosition)movePosValue; //移動処理 joinedCharacter [nowPos].Remove(bal); joinedCharacter [movePos].Add(bal); bal.syncronizePositioin(field.getObjectPosition(movePos, bal)); }
/// <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); }