/// <summary>
        /// 현재 마우스 위치에 선택된 타일을 반환한다.
        /// </summary>
        private SquareTile SelectedTile()
        {
            Vector3    worldPosition = m_Camera.ScreenToWorldPoint(Input.mousePosition);
            Vector3Int cellPosition  = m_Tilemap.WorldToCell(worldPosition);

            // 예외 처리
            if (cellPosition.x >= m_Bounds.xMax || cellPosition.x < m_Bounds.xMin)
            {
                return(null);
            }
            if (cellPosition.y >= m_Bounds.yMax || cellPosition.y < m_Bounds.yMin)
            {
                return(null);
            }

            SquareTile tile = m_Tilemap.GetTile <SquareTile>(cellPosition);

            tile.m_Position = cellPosition;
            Debug.Log("selected tile = " + tile.m_Position + " : type = " + tile.m_State.m_State);

            UnitKnight knight = UnitManager.GetReadyToMovePlayer();

            if (knight != null)
            {
                tile.m_State.SetUnitPlacedTile(knight.m_Position);
            }

            tile.m_State.OnClicked();

            return(tile);
        }
        /// <summary>
        /// 단위 테스트를 위해 하나의 유닛만 생성한다.
        /// </summary>
        private static void UnitTestUnitKnight()
        {
            UnitKnight knight = UnitFactory.CreatePlayerUnits(Vector3Int.zero);

            m_PlayerUnits.Add(knight);
            m_Units.Add(knight);
        }
        public override void OnClicked()
        {
            base.OnClicked();

            UnitKnight knight = UnitManager.GetReadyToMovePlayer();

            if (knight != null)
            {
                knight.Move(m_Position);
            }
        }
示例#4
0
        /// <summary>
        /// 플레이어가 조작 가능한 유닛들을 생성한다.
        /// </summary>
        public static UnitKnight CreatePlayerUnits(Vector3Int _position)
        {
            GameObject prefab     = Resources.Load("Prefabs/Knight") as GameObject;
            GameObject unitParent = GameObject.Find("UnitParent");

            GameObject playerUnit = Lean.LeanPool.Spawn(prefab, Vector3.zero, Quaternion.identity, unitParent.transform);
            UnitKnight knight     = playerUnit.GetComponent <UnitKnight>();

            knight.SetPosition(_position, true);

            return(knight);
        }
        public override void OnClicked()
        {
            base.OnClicked();

            // 선택된 타일로 설정
            SquareTile tile = SquareTileFactory.CreateSelected(m_Position);

            Map.instance.m_TilemapHighlight.m_Tilemap.SetTile(m_Position, tile);

            // 이동 준비 상태의 플레이어가 있으면 대기 상태로 되돌린다
            UnitKnight knight = UnitManager.GetReadyToMovePlayer();

            if (knight != null)
            {
                knight.SetToIdle();
            }

            Map.instance.m_TilemapController.ResetAllTiles();
            Map.instance.m_TilemapController.SetAllUnitPlacedTiles();
        }