/// <summary> /// 選択ステータスを設定 /// </summary> /// <param name="startTile"></param> /// <param name="monster"></param> /// <param name="movableTileList"></param> private void SetSelectedStatus(BattleMapTile startTile, BattleMapMonster monster, List <BattleMapTile> movableTileList) { // ステータスを設定 BattleMapMoveStatus moveStatus = new BattleMapMoveStatus(); moveStatus.BattleMapMoveStatusType = BattleMapMoveStatusType.SELECTED; moveStatus.TargetMonster = monster; moveStatus.MapTileMovableList = movableTileList; moveStatus.StartMapTile = startTile; holder.BattleMapStatus.BattleMapMoveStatus = moveStatus; }
/// <summary> /// 移動のキャンセル /// </summary> public void CancelMove() { BattleMapMoveStatus moveStatus = holder.BattleMapStatus.BattleMapMoveStatus; BattleMapMonster monster = moveStatus.TargetMonster; // 回転を止める iconController.UnHighlightMarker(monster); // 枠とパスを削除 ClearFlameAndPath(); // ステータスを削除 holder.BattleMapStatus.BattleMapMoveStatus = null; }
public override string ToString() { string str = ""; str += "status[" + BattleMapStatusType + "] commandId[" + SelectedCommandId + "]\n"; if (BattleMapStatusType == BattleMapStatusType.MOVE && BattleMapMoveStatus != null) { str += BattleMapMoveStatus.ToString(); } else if (BattleMapStatusType == BattleMapStatusType.ACTION && BattleMapActionStatus != null) { str += BattleMapActionStatus.ToString(); } return(str); }
/// <summary> /// 確認ステータスを設定 /// </summary> /// <param name="fastPath"></param> private void SetConfirmStatus(MapTilePathInfo fastPath) { // ステータスを設定 BattleMapMoveStatus moveStatus = holder.BattleMapStatus.BattleMapMoveStatus; moveStatus.BattleMapMoveStatusType = BattleMapMoveStatusType.MOVE_CONFIRM; // パス情報をタイルに変換 List <BattleMapTile> list = new List <BattleMapTile>(); foreach (string path in fastPath.Path) { string[] xy = path.Split(','); BattleMapTile bmt = holder.BattleMap.BattleMapTiles[int.Parse(xy[0]), int.Parse(xy[1])]; list.Add(bmt); } // 反転させる list.Reverse(); moveStatus.MapTilePathList = list; }
/// <summary> /// 移動処理 /// </summary> /// <param name="bmt"></param> public void Move(BattleMapTile bmt) { // 移動中は受け付けない if (monsterMover != null) { return; } BattleMapMoveProcessor moveProcessor = new BattleMapMoveProcessor(holder, iconGenerator, iconController); // モードごと BattleMapMoveStatus moveStatus = holder.BattleMapStatus.BattleMapMoveStatus; // 選択前 if (moveStatus == null) { BattleMapMonster target = holder.BattleMapMonsters.GetMonster(bmt.X, bmt.Y); // いなければなにもしない if (target == null) { return; } // 移動可能範囲の表示 moveProcessor.ShowMovable(target); // ステータスの表示 statusGenerator.ShowStatus(target); } else { BattleMapMoveStatusType statusType = moveStatus.BattleMapMoveStatusType; // 選択中か確認中 if (statusType == BattleMapMoveStatusType.SELECTED || statusType == BattleMapMoveStatusType.MOVE_CONFIRM) { BattleMapTile startTile = moveStatus.StartMapTile; // 自身ならキャンセル if (startTile.X == bmt.X && startTile.Y == bmt.Y) { moveProcessor.CancelMove(); // ステータスの非表示 statusGenerator.HideStatus(); return; } // 確認中かつ終端なら確定 if (statusType == BattleMapMoveStatusType.MOVE_CONFIRM) { BattleMapTile endTile = moveStatus.GetEndMapTile(); if (endTile.X == bmt.X && endTile.Y == bmt.Y) { monsterMover = new BattleMapMonsterMover( holder, moveProcessor, iconGenerator, monsterGenerator); return; } } // 移動範囲内なら移動確認 bool isRange = moveStatus.MapTileMovableList.Contains(bmt); if (isRange) { moveProcessor.ConfirmMove(bmt); } } } }