Ejemplo n.º 1
0
    IEnumerator SmoothMove(Defines.Position pos)
    {
        Vector3 targetPos = Managers.Board.BoardPosToWorldPos(pos) + new Vector2(0, 1);
        Vector3 dir       = targetPos - transform.position;

        RotateCharacter(dir);

        while (dir.magnitude > 0.1f)
        {
            m_DamageText.transform.position = Camera.main.WorldToScreenPoint(m_anchorDamage.transform.position);
            dir = targetPos - transform.position;
            yield return(null);

            float moveDist = Mathf.Clamp(m_speed * Time.deltaTime, 0, dir.magnitude);
            transform.position += dir.normalized * moveDist;

            if (transform.tag == "Player")
            {
                Managers.Camera.UpdateCameraPos(Defines.CameraType.Main);
            }
        }

        SetPosition(pos);
        m_animator.SetInteger("State", (int)Defines.CharacterState.Idle);
    }
Ejemplo n.º 2
0
    public Quest_MoveToGoal(QuestType type, Defines.Position pos)
    {
        m_questType = type;
        m_goalPos   = pos;

        Init();
    }
Ejemplo n.º 3
0
    protected Defines.Position ChkPositionFromPlayer()
    {
        m_playerPos = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position;
        m_enemyPos  = m_controller.Position;

        return(m_playerPos - m_enemyPos);
    }
Ejemplo n.º 4
0
    protected float ChkDistanceFromPlayer()
    {
        m_playerPos = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position;
        m_enemyPos  = m_controller.Position;

        return(Mathf.Abs(m_playerPos.posX - m_enemyPos.posX) + Mathf.Abs(m_playerPos.posY - m_enemyPos.posY));
    }
Ejemplo n.º 5
0
    public Transform SpawnObjectOnBoard(Defines.ObjectType type, string objectName, Defines.Position pos)
    {
        string objectPath = $"{m_defaultObjectPath[(int)type]}/{objectName}";

        GameObject go = Managers.Resources.Instantiate(objectPath);

        go.GetComponent <InterfaceClass.IPosition>().SetPosition(pos);

        if (type == Defines.ObjectType.Enemy)
        {
            go.transform.parent = m_enemyHolder;
        }
        else if (type == Defines.ObjectType.Player)
        {
            go.transform.parent = GameManager.GameMgr.DontDestoryGameObject;
            m_player            = go.transform;
        }
        else if (type == Defines.ObjectType.Object)
        {
            go.transform.parent = m_objectHolder;
        }

        Managers.Board.ChkAndAddObjOnBoard(pos, go.transform);
        return(go.transform);
    }
Ejemplo n.º 6
0
    Defines.Position GenerateDirPosition(Defines.Direction dir)
    {
        Defines.Position returnPos = m_position;
        switch (dir)
        {
        case Defines.Direction.Left:
            break;

        case Defines.Direction.Right:
            returnPos.posX = -m_position.posX;
            returnPos.posY = m_position.posY;
            break;

        case Defines.Direction.Up:
            returnPos.posX = m_position.posY;
            returnPos.posY = -m_position.posX;
            break;

        case Defines.Direction.Down:
            returnPos.posX = m_position.posY;
            returnPos.posY = m_position.posX;
            break;
        }
        return(returnPos);
    }
Ejemplo n.º 7
0
    public override void Random(QuestType type)
    {
        m_questType = type;
        m_goalPos   = new Defines.Position(UnityEngine.Random.Range(0, Managers.Board.BoardWidth), UnityEngine.Random.Range(0, Managers.Board.BoardHeight));

        Init();
        Managers.Quest.AddQuest(type, this);
    }
Ejemplo n.º 8
0
 // 보드 경계를 검사한다.
 public bool ChkBoundary(Defines.Position pos)
 {
     if (pos.posX < 0 || pos.posX >= m_boardWidth || pos.posY < 0 || pos.posY >= m_boardHeight)
     {
         Debug.Log($"The Object is out of bounds ({(int)pos.posX}, {(int)pos.posY})");
         return(false);
     }
     return(true);
 }
Ejemplo n.º 9
0
    // 보드 좌표를 통해 오브젝트를 가져온다.
    public Transform GetObjOnBoard(Defines.Position pos)
    {
        if (ChkBoundary(pos) == false)
        {
            return(null);
        }

        return(m_objectOnBoard[(int)pos.posX, (int)pos.posY]);
    }
Ejemplo n.º 10
0
    // pos 를 향해 움직임.
    public virtual void CharacterMove(Defines.Position pos)
    {
        if (Managers.Board.ChkMoveObjOnBoard(transform, pos) == false)
        {
            return;
        }

        StartCoroutine(SmoothMove(pos));
    }
Ejemplo n.º 11
0
    // 보드 좌표에 오브젝트가 있는지 확인한다.
    public bool ChkObjOnBoard(Defines.Position pos)
    {
        if (m_objectOnBoard[(int)pos.posX, (int)pos.posY] != null)
        {
            Debug.Log($"The Object is existed ({(int)pos.posX}, {(int)pos.posY})");
            return(false);
        }

        return(true);
    }
Ejemplo n.º 12
0
    // 보드에서 오브젝트가 있는지 확인하고 제거한다.
    public bool ChkAndRemoveObjOnBoard(Defines.Position pos)
    {
        if (ChkBoundary(pos) == false)
        {
            return(false);
        }

        m_objectOnBoard[(int)pos.posX, (int)pos.posY] = null;
        return(true);
    }
Ejemplo n.º 13
0
    public override void UsedWithMarkPoint(Defines.Position pos)
    {
        Transform enemy = Managers.Board.GetObjOnBoard(pos);

        if (enemy == null)
        {
            return;
        }

        Managers.Object.Player.GetComponent <Char_BaseCtr>().AttackOtherCharacter(enemy);
    }
Ejemplo n.º 14
0
 public void InstantiateMarkPoint(Card_Base card, List <Defines.Position> pos, bool isCopy = true)
 {
     m_targetCard = card;
     m_playerPos  = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position;
     for (int i = 0; i < pos.Count; i++)
     {
         GameObject go = GameObject.Instantiate(m_markPoint.gameObject, m_markPointHolder);
         go.GetComponent <SelectingMarkBehavior>().SetPosition(new Defines.Position(pos[i].posX, pos[i].posY));
         m_listfMarkPoints.Add(go.transform);
     }
 }
Ejemplo n.º 15
0
 protected Defines.Direction MovingDirection(Defines.Position gapPos)
 {
     if (Mathf.Abs(gapPos.posX) >= Mathf.Abs(gapPos.posY))
     {
         return(gapPos.posX < 0 ? Defines.Direction.Left : Defines.Direction.Right);
     }
     else
     {
         return(gapPos.posY < 0 ? Defines.Direction.Down : Defines.Direction.Up);
     }
 }
Ejemplo n.º 16
0
    public void SetPosition(Defines.Position pos)
    {
        m_position  = pos;
        m_playerPos = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position;

        for (int i = 0; i < (int)Defines.Direction.Count; i++)
        {
            Defines.Position _pos = GenerateDirPosition((Defines.Direction)i);
            m_positions[i] = new Defines.Position(m_playerPos.posX + _pos.posX, m_playerPos.posY + _pos.posY);
        }
    }
Ejemplo n.º 17
0
    protected virtual void NewLoadObject()
    {
        Defines.Position pos    = new Defines.Position(3, 3);
        Transform        player = Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Player, "Player", pos).transform;

        DontDestroyOnLoad(player);
        Managers.Camera.SetTrackingTarget(player);
        Managers.Camera.UpdateCameraPos(Defines.CameraType.Main);

        Managers.Object.SpawnEnemy("Pig", new Defines.Position(2, 3));
        Managers.Object.SpawnEnemy("PirateBoar", new Defines.Position(5, 3));
    }
Ejemplo n.º 18
0
    public bool ChkAndAddObjOnBoard(Defines.Position pos, Transform obj, bool overlap = false)
    {
        // 보드의 경계 검사, 해당 좌표에 오브젝트가 있는지 확인
        if (ChkBoundary(pos) == false || ChkObjOnBoard(pos) == false)
        {
            return(false);
        }

        obj.position = m_tilesOnBoard[(int)pos.posX, (int)pos.posY].position + new Vector3(0, 1, 0);
        m_objectOnBoard[(int)pos.posX, (int)pos.posY] = obj;
        return(true);
    }
Ejemplo n.º 19
0
    public void SetPosition(Defines.Direction dir)
    {
        m_position = m_positions[(int)dir];
        if (Managers.Board.ChkBoundary(m_position) == false)
        {
            gameObject.SetActive(false);
            return;
        }
        gameObject.SetActive(true);
        Vector2 boardPos = Managers.Board.BoardPosToWorldPos(m_position);

        transform.position = boardPos + new Vector2(0, 1.25f);
    }
Ejemplo n.º 20
0
    protected override void NewLoadObject()
    {
        Defines.Position pos    = new Defines.Position(2, 2);
        Transform        player = Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Player, "Player", pos).transform;

        DontDestroyOnLoad(player);
        Managers.Camera.SetTrackingTarget(player);
        Managers.Camera.UpdateCameraPos(Defines.CameraType.Main);

        Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Object, "OnlyDefenseMode/ProtectedItem", new Defines.Position(3, 3));
        Managers.UI.ShowSceneUI <DefenseSceneUI>(sceneType);
        Managers.UI.ShowSceneUI <UI_MaximumBonus>(sceneType).gameObject.SetActive(false);
    }
Ejemplo n.º 21
0
    IEnumerator FlyingBall(Defines.Position pos)
    {
        Vector3 targetPos = Managers.Board.BoardPosToWorldPos(pos) + new Vector2(0, 1);
        Vector3 dir       = targetPos - transform.position;

        while (dir.magnitude > 0.1f)
        {
            dir = targetPos - transform.position;
            yield return(null);

            float moveDist = Mathf.Clamp(m_ballSpeed * Time.deltaTime, 0, dir.magnitude);
            transform.position += dir.normalized * moveDist;
        }
    }
Ejemplo n.º 22
0
    public void LoadDataAndSpawnPlayer(int idx)
    {
        string  loadString = File.ReadAllText("Assets/Resources/Data/PlayerData.json");
        JObject loaddata   = JObject.Parse(loadString);

        Char_PlayerStats playerStats     = JsonConvert.DeserializeObject <Char_PlayerStats>(loaddata[$"PlayerData_{idx}"].ToString());
        Char_CommonStats defaultStats    = JsonConvert.DeserializeObject <Char_PlayerStats>(loaddata[$"DefaultStat_{idx}"].ToString());
        Char_CommonStats additionalStats = JsonConvert.DeserializeObject <Char_PlayerStats>(loaddata[$"AdditionalStat_{idx}"].ToString());

        Defines.Position pos = JsonConvert.DeserializeObject <Defines.Position>(loaddata[$"PlayerPos_{idx}"].ToString());

        Transform player = Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Player, "Player", pos);

        player.GetComponent <Char_PlayerCtr>().SetPlayerData(playerStats, defaultStats, additionalStats);
    }
Ejemplo n.º 23
0
    public Transform SpawnObjectOnBoard(Defines.ObjectType type, GameObject go, Defines.Position pos)
    {
        go.GetComponent <Char_BaseCtr>().SetPosition(pos);

        if (type == Defines.ObjectType.Enemy)
        {
            go.transform.parent = m_enemyHolder;
        }
        else if (type == Defines.ObjectType.Player)
        {
            m_player = go.transform;
        }

        Managers.Board.ChkAndAddObjOnBoard(pos, go.transform);
        return(go.transform);
    }
Ejemplo n.º 24
0
    public override GameObject CreateEnemy(string enemyName, Defines.Position pos)
    {
        GameObject go;

        if (m_enemyGOs.TryGetValue(enemyName, out go) == false)
        {
            go = Managers.Resources.Load <GameObject>($"{m_enemyPath}/{enemyName}");
            if (go == null)
            {
                Debug.Log($"Faild to Create Enemy : {enemyName}");
                return(null);
            }
            m_enemyGOs.Add(enemyName, go);
        }

        return(GameObject.Instantiate(go));;
    }
Ejemplo n.º 25
0
    public Transform[,] ConstructTiles(Board_Base board)
    {
        Defines.Position _startPos = new Defines.Position((-board.BoardWidth / 2) * m_gapBetweenTiles, (-board.BoardHeight / 2) * m_gapBetweenTiles);
        string           _path     = $"Prefabs/Tile/Tile";

        Transform[,] _returnBoard = new Transform[board.BoardWidth, board.BoardHeight];

        for (int i = 0; i < board.BoardWidth; i++)
        {
            for (int j = 0; j < board.BoardHeight; j++)
            {
                GameObject go = Managers.Resources.Instantiate(_path, m_terrainHolder);
                go.GetComponent <SpriteRenderer>().sprite = m_terrains[board.TileIndexes[i, j]];
                go.transform.position = new Vector2(_startPos.posX + (i * m_gapBetweenTiles), _startPos.posY + (j * m_gapBetweenTiles));
                _returnBoard[i, j]    = go.transform;
            }
        }
        return(_returnBoard);
    }
Ejemplo n.º 26
0
    public void LoadDataAndSpawnEnemy(int idx)
    {
        m_curMapIdx = Managers.World.CurMapIdx;

        string  loadString = File.ReadAllText("Assets/Resources/Data/EnemyData.json");
        JObject loaddata   = JObject.Parse(loadString);

        JArray enemyStatsDatas = (JArray)loaddata[$"EnemyData_{idx}"][m_curMapIdx];
        JArray enemyPosDatas   = (JArray)loaddata[$"EnemyPos_{idx}"][m_curMapIdx];

        for (int i = 0; i < enemyStatsDatas.Count; i++)
        {
            Char_EnemyStats  stats = JsonConvert.DeserializeObject <Char_EnemyStats>(enemyStatsDatas[i].ToString());
            Defines.Position pos   = JsonConvert.DeserializeObject <Defines.Position>(enemyPosDatas[i].ToString());

            Transform enemy = Managers.Object.SpawnEnemy(stats.Name, pos);
            enemy.GetComponent <Char_EnemyCtr>().m_enemyStats = stats;
        }
    }
Ejemplo n.º 27
0
    // 게이지가 가득 차면 주변 적을 밀어낸다.
    void ExplodingAroundProtected()
    {
        Defines.Position targetPos;

        m_explodingEffect.SetActive(true);
        for (int i = 0; i < m_knockbackPosX.Length; i++)
        {
            targetPos = new Defines.Position(m_knockbackPosX[i], m_knockbackPosY[i]);
            Transform character = Managers.Board.GetObjOnBoard(m_info.Position + targetPos);
            if (character == null)
            {
                continue;
            }

            targetPos += m_info.Position + targetPos;

            character.GetComponent <Char_BaseCtr>().CharacterMove(targetPos);
            Managers.Board.ChkMoveObjOnBoard(character, targetPos);
        }
    }
Ejemplo n.º 28
0
    public Transform SpawnEnemy(string enemyName, Defines.Position pos)
    {
        if (Managers.Board.ChkObjOnBoard(pos) == false)
        {
            Debug.Log($"Faild to Create Enemy : {enemyName}");
            return(null);
        }

        m_enemyFactory = new Factory_Pig();

        GameObject go = m_enemyFactory.CreateEnemy(enemyName, pos);

        if (go == null)
        {
            return(null);
        }

        Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Enemy, go, pos);
        return(go.transform);
    }
Ejemplo n.º 29
0
    // 보드 상의 위치를 바꿔준다.
    public bool ChkMoveObjOnBoard(Transform charater, Defines.Position pos)
    {
        if (charater == null || ChkBoundary(pos) == false)
        {
            return(false);
        }

        if (m_objectOnBoard[(int)pos.posX, (int)pos.posY] != null)
        {
            Debug.Log("움직일 수 없습니다.");
            return(false);
        }

        Defines.Position curPos = charater.GetComponent <Char_BaseCtr>().Position;

        m_objectOnBoard[(int)pos.posX, (int)pos.posY]       = charater;
        m_objectOnBoard[(int)curPos.posX, (int)curPos.posY] = null;

        return(true);
    }
Ejemplo n.º 30
0
 public void SetPosition(Defines.Position pos)
 {
     m_position         = pos;
     transform.position = Managers.Board.BoardPosToWorldPos(m_position) + new Vector2(0, 1);
 }