コード例 #1
0
    /// <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;
    }
コード例 #2
0
    /// <summary>
    /// 移動のキャンセル
    /// </summary>
    public void CancelMove()
    {
        BattleMapMoveStatus moveStatus = holder.BattleMapStatus.BattleMapMoveStatus;
        BattleMapMonster    monster    = moveStatus.TargetMonster;

        // 回転を止める
        iconController.UnHighlightMarker(monster);

        // 枠とパスを削除
        ClearFlameAndPath();

        // ステータスを削除
        holder.BattleMapStatus.BattleMapMoveStatus = null;
    }
コード例 #3
0
    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);
    }
コード例 #4
0
    /// <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;
    }
コード例 #5
0
    /// <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);
                }
            }
        }
    }