Exemplo n.º 1
0
    private void Awake()
    {
        MapModel = new MapModel();
        Map.GetComponent <MapView>().SetModel(MapModel);

        CharacterModel = MapModel.Character;
        Character.GetComponent <CharacterView>().SetModel(CharacterModel);

        TreasureModel = MapModel.Treasure;
        Treasure.GetComponent <TreasureView>().SetModel(TreasureModel);
    }
Exemplo n.º 2
0
    public MapModel(int characterPositionX = 0, int characterPositionY = 0)
    {
        HeadQuarter = new Vector2(characterPositionX, characterPositionY);

        Character = new CharacterModel();
        Character.Init(HeadQuarter, this);

        GenerateBoardTile();
        Maze = new MazeModel(in Tiles);

        Treasure = new TreasureModel();
    }
Exemplo n.º 3
0
    //210301 宝箱を追加
    public void PutTreasure(int x, int z, TreasureModel treasure)
    {
        treasure.gameObject.SetActive(true);

        treasure.transform.SetParent(treasureContainer);
        //宝箱を表示する位置を設定
        treasure.transform.position = cells.First(c => c.X == x && c.Y == z).transform.position;

        //宝箱の有る座標を設定 これは判定などにも用いる実際の座標
        treasure.x = x;
        treasure.y = z;
    }
Exemplo n.º 4
0
    /// <summary>
    /// 210301 主に移動不可判定に使用 移動先に宝箱があるかを返す
    /// </summary>
    /// <param name="moveAbleInfo"></param>
    /// <returns></returns>
    private bool IsDestinationTreasureExist(Coordinate coordinate)
    {
        //移動先に自分以外の敵が存在するか判定
        TreasureModel destinationTreasure = treasureContainer.GetComponentsInChildren <TreasureModel>().FirstOrDefault(
            c => c.x == coordinate.x && c.y == coordinate.y);

        //移動先に敵がいる場合、自分自身以外ならそのセルには移動しない
        if (destinationTreasure != null)
        {
            Debug.Log($"宝箱が存在するので移動出来ないセル X={coordinate.x}, Y={coordinate.y}");
            return(true);
        }
        return(false);
    }
Exemplo n.º 5
0
    /// <summary>
    /// 210301 周囲に宝箱が存在するかを返す
    /// </summary>
    /// <param name="startCell"></param>
    /// <returns></returns>
    public Coordinate SearchTreasureBox(Main_Cell startCell)
    {
        if (startCell == null)
        {
            Debug.Log("warn:セルが存在しません");
            //画面端だとセルが無い場合がある
            return(null);
        }

        // 四方のマスの座標配列を作成
        var aroundCellCoordinates = new Coordinate[]      //上下左右の座標配列
        {
            new Coordinate(startCell.X - 1, startCell.Y), //左
            new Coordinate(startCell.X + 1, startCell.Y), //右
            new Coordinate(startCell.X, startCell.Y - 1), //上
            new Coordinate(startCell.X, startCell.Y + 1), //下
        };

        // 四方のマスの残移動力を計算 上下左右マスの座標を順に取り出し
        foreach (Coordinate aroundCellCoordinate in aroundCellCoordinates)
        {
            //FirstOrDefaultとは? 現在地から上下左右の座標を元にマップの座標を取得
            TreasureModel treasureModel = treasureContainer.GetComponentsInChildren <TreasureModel>().FirstOrDefault(
                c => c.x == aroundCellCoordinate.x && c.y == aroundCellCoordinate.y);

            //宝箱が有った時点で座標を返す
            //もし四方に宝箱が有るような状況なら、配列の先頭の要素、左から開け始める
            if (treasureModel != null)
            {
                //空の場合は無いとみなす
                if (treasureModel.treasureBox.isEmpty)
                {
                    continue;
                }
                Debug.Log($"宝箱を発見 X:{aroundCellCoordinate.x}, Y:{aroundCellCoordinate.y}");
                return(aroundCellCoordinate);
            }
        }

        //周囲に宝箱が無ければnullを返す nullチェック注意
        return(null);
    }
Exemplo n.º 6
0
    /// <summary>
    /// 210301カーソルを移動させた時、宝箱が有るかどうか判定
    /// </summary>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <returns></returns>
    public bool IsTreasureExist(Main_Cell cell)
    {
        if (cell == null)
        {
            Debug.Log("warn:セルが存在しません");
            //画面端だとセルが無い場合がある
            return(false);
        }

        TreasureModel treasureModel = treasureContainer.GetComponentsInChildren <TreasureModel>().FirstOrDefault(
            c => c.x == cell.X && c.y == cell.Y);

        //宝箱が有った時点で座標を返す
        //もし四方に宝箱が有るような状況なら、配列の先頭の要素、左から開け始める
        if (treasureModel != null)
        {
            return(true);
        }
        return(false);
    }
Exemplo n.º 7
0
 public void SetModel(TreasureModel treasureModel)
 {
     Model = treasureModel;
 }