コード例 #1
0
ファイル: Unit.cs プロジェクト: nikecantab/TacticsTuto
    //GameObject[] tiles;
    //Tile currentTile;
    //public Vector2 gridCoord;

    protected void Init()
    {
        pos     = new Vector2Int((int)transform.localPosition.x, (int)transform.localPosition.z);
        lastPos = pos;
        TempTurnManager.AddUnit(this);
        tileManager = GameObject.Find("Managers").GetComponent <TileManager>();
        tileManager.AddUnit(this, pos);

        spriteFaceCamera = GetComponent <SpriteFaceCamera>();
        // remainingMove = Energy;
        floatingText = Resources.Load("Prefabs/GUI/FloatingText") as GameObject;

        MEnergy       = Energy;
        MStrength     = Strength;
        MConstitution = Constitution;
    }
コード例 #2
0
ファイル: Unit.cs プロジェクト: nikecantab/TacticsTuto
    public bool CheckIfDead() //should enemy check this?
    {
        if (Energy < 1)
        {
            //GridManager.ResetOccupied(gridCoord);
            //EndTurn();
            //Tile tile;
            //GridManager.GetTileAtCoord(gridCoord, out tile);
            //tile.Reset();

            //gameObject.SetActive(false);
            tileManager.RemoveUnit(pos);
            TempTurnManager.RemoveUnit(this);

            return(true);
        }
        return(false);
    }
コード例 #3
0
    // Update is called once per frame
    void Update()
    {
        if (destroy)
        {
            RemoveUnit();
            return;
        }


        if (!turn)
        {
            return;
        }

        switch (state)
        {
        case UnitState.SelectingDestination:
            //animator.speed = 1;
            //cursor.state = CursorState.SelectingUnit;
            break;

        case UnitState.Moving:
            //animator.speed = 2;
            cursor.state = CursorState.Inactive;
            Move();
            break;

        case UnitState.AwaitingChoice:
            //animator.speed = 1;
            cursor.state = CursorState.AwaitingChoice;
            break;

        case UnitState.SelectingTarget:
            //animator.speed = 1;
            if (cursor.state == CursorState.AwaitingChoice)
            {
                TurnToFace(combatTarget.pos);
            }
            break;

        case UnitState.Attacking:
            switch (currentAttack)
            {
            case AttackType.Cripple:

                combatTarget.TakeDamage(currentAttack, Strength);
                break;

            case AttackType.Impair:

                combatTarget.TakeDamage(currentAttack, Energy);
                break;

            case AttackType.Weaken:

                combatTarget.TakeDamage(currentAttack, Energy);
                break;
            }
            //TODO: add delay
            state = UnitState.EndingPhase;

            break;

        case UnitState.EndingPhase:
            //animator.speed = 1;
            cursor.ResetCursor();
            combatTarget = null;
            state        = UnitState.SelectingDestination;
            UpdatePosition();
            done = false;
            TempTurnManager.EndPhase();
            break;
        }
    }
コード例 #4
0
 public void StartMatch()
 {
     tutorialCanvas.SetActive(false);
     gameCanvas.SetActive(true);
     TempTurnManager.StartTurn();
 }
コード例 #5
0
ファイル: EnemyNPC.cs プロジェクト: nikecantab/TacticsTuto
    // Update is called once per frame
    void Update()
    {
        if (destroy)
        {
            RemoveUnit();
            return;
        }


        if (!turn)
        {
            return;
        }

        switch (state)
        {
        case UnitState.SelectingDestination:
            //animator.speed = 1;
            if (!done)
            {
                StartCoroutine(SelectingDestinationCoroutine());
            }

            break;

        case UnitState.Moving:
            //animator.speed = 2;
            Move();

            break;

        case UnitState.AwaitingChoice:
            //animator.speed = 1;
            if (!done)
            {
                StartCoroutine(AwaitingChoiceCoroutine());
            }
            break;

        case UnitState.SelectingTarget:
            //animator.speed = 1;
            //combatTarget = GetCombatTarget();

            if (combatTarget != null)
            {
                TurnToFace(combatTarget.pos);
                currentAttack = Utilities.Choose <AttackType>(attackTypes);
                state         = UnitState.Attacking;
            }
            else
            {
                state = UnitState.EndingPhase;
            }
            break;

        case UnitState.Attacking:

            if (combatTarget != null)
            {
                switch (currentAttack)
                {
                case AttackType.Cripple:

                    combatTarget.TakeDamage(currentAttack, Strength);
                    break;

                case AttackType.Impair:

                    combatTarget.TakeDamage(currentAttack, Energy);
                    break;

                case AttackType.Weaken:

                    combatTarget.TakeDamage(currentAttack, Energy);
                    break;
                }
                combatTarget = null;
            }

            if (!done)
            {
                StartCoroutine(AttackingCoroutine());
            }

            break;

        case UnitState.EndingPhase:
            //animator.speed = 1;
            combatTarget = null;
            state        = UnitState.SelectingDestination;
            UpdatePosition();
            done = false;
            TempTurnManager.EndPhase();
            break;
        }
    }
コード例 #6
0
ファイル: Unit.cs プロジェクト: nikecantab/TacticsTuto
 public void RemoveUnit()
 {
     tileManager.RemoveUnit(pos);
     TempTurnManager.RemoveUnit(this);
 }