示例#1
0
    public void EndTurn()
    {
        foreach (BattlePawn pawn in m_charactersInBattle)
        {
            if (pawn.m_timeUntilTurn == 0)
            {
                pawn.m_timeUntilTurn = m_charactersInBattle.Count;
            }

            pawn.m_timeUntilTurn--;
        }

        foreach (BattlePawn pawn in m_charactersInBattle)
        {
            if (pawn.m_timeUntilTurn == 0)
            {
                if (pawn.m_myTurn)
                {
                    return;
                }
                m_currentTurnPawn = pawn;
                m_turnTimer       = m_turnDelay;
                m_battleState     = BattleState.BATTLESTATE_INBETWEENTURN;
            }
        }
    }
示例#2
0
 public override void Inflict(BattlePawn inflicted, BattlePawn creator)
 {
     r_InflictedPawn = inflicted;
     r_Creator       = creator;
     m_visual        = Instantiate(m_visualPrefab, r_InflictedPawn.gameObject.transform, false);
     m_visual.transform.SetPositionAndRotation(r_InflictedPawn.transform.position, r_InflictedPawn.transform.rotation);
 }
示例#3
0
    public override bool UseSkill(BattlePawn user, int targetX, int targetY)
    {
        m_user   = user;
        m_target = user.m_battleSystem.m_battleSpaces[targetX, targetY].m_pawn;
        m_user.m_battleSystem.m_playingSkillAnimation = true;
        m_user.m_playingSkillAnimation = true;
        if (m_user.m_facingLeft)
        {
            m_user.GetComponent <SpriteRenderer>().sprite = m_user.m_spriteL;
        }
        else
        {
            m_user.GetComponent <SpriteRenderer>().sprite = m_user.m_spriteR;
        }

        m_animationStarted = false;
        m_user.m_SP       -= m_spCost;
        m_user.m_AP       -= m_apCost;
        if (m_user.m_x < targetX)
        {
            m_fireDirection = Direction.DIRECTION_RIGHT;
        }
        else if (m_user.m_x > targetX)
        {
            m_fireDirection = Direction.DIRECTION_LEFT;
        }

        //determin the direction and face the arrow and user that way
        switch (m_fireDirection)
        {
        case Direction.DIRECTION_NONE:
            break;

        case Direction.DIRECTION_UP:
            break;

        case Direction.DIRECTION_DOWN:
            break;

        case Direction.DIRECTION_RIGHT:
            m_user.GetComponent <SpriteRenderer>().sprite = r_CharacterSpriteRight;
            m_Bolt = Instantiate(r_BoltPrefab, m_user.gameObject.transform.position + new Vector3(0, 0, 0.7f), Quaternion.Euler(0, 90, 0));
            break;

        case Direction.DIRECTION_LEFT:
            m_user.GetComponent <SpriteRenderer>().sprite = r_CharacterSpriteLeft;
            m_Bolt = Instantiate(r_BoltPrefab, m_user.gameObject.transform.position + new Vector3(0, 0, 0.7f), Quaternion.identity);
            break;

        default:
            break;
        }
        m_animationStarted = true;

        return(true);
    }
示例#4
0
 public override bool UseItem(BattlePawn user, int targetX, int targetY)
 {
     m_user = user;
     m_user.m_battleSystem.m_playingItemAnimation = true;
     m_user.m_playingItemAnimation = true;
     m_target = m_user.m_battleSystem.m_battleSpaces[targetX, targetY].m_pawn;
     Instantiate(m_particle, m_user.m_battleSystem.m_battleSpaces[targetX, targetY].m_pawn.transform.position + new Vector3(0, 1.5f, 0), m_particle.transform.rotation);
     play = true;
     return(true);
 }
示例#5
0
 public bool CanUseSkill(BattlePawn user)
 {
     //the check to see if the skill can be selected to use from the skill menu
     if (user.m_AP >= m_apCost && user.m_SP >= m_spCost)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#6
0
    public override bool ValidTarget(BattlePawn m_user, int targetX, int targetY)
    {
        if (m_user.isInRange(targetX, targetY, m_rangeMin, m_rangeMax) && m_user.m_battleSystem.m_battleSpaces[targetX, targetY].m_occupied)
        {
            if (m_user.m_battleSystem.m_battleSpaces[targetX, targetY].m_pawn.gameObject.tag == "Enemy")
            {
                return(true);
            }
        }

        return(false);
    }
示例#7
0
 public override bool ValidTarget(BattlePawn user, int targetX, int targetY)
 {
     m_user = user;
     if (m_user.isInRange(targetX, targetY, 1) && m_user.m_battleSystem.m_battleSpaces[targetX, targetY].m_occupied)
     {
         if (m_user.m_battleSystem.m_battleSpaces[targetX, targetY].m_pawn.gameObject.tag == "Player")
         {
             return(true);
         }
     }
     return(false);
 }
示例#8
0
    public void Death(BattlePawn deadPawn)
    {
        foreach (BattlePawn pawn in m_charactersInBattle)
        {
            if (pawn.m_timeUntilTurn > deadPawn.m_timeUntilTurn)
            {
                pawn.m_timeUntilTurn--;
            }
        }
        m_charactersInBattle.Remove(deadPawn);

        m_battleSpaces[deadPawn.m_x, deadPawn.m_y].m_occupied = false;
        m_battleSpaces[deadPawn.m_x, deadPawn.m_y].m_pawn     = null;
        if (deadPawn.tag == "Enemy")
        {
            m_enemies--;

            foreach (BattlePawn character in m_charactersInBattle)
            {
                if (character.tag == "Player")
                {
                    //Gain EXP based on enemy level
                    int levelDif      = deadPawn.m_level - character.m_level;
                    int levelDifBoost = deadPawn.m_level + levelDif;
                    if (levelDifBoost < 0)
                    {
                        levelDifBoost = 0;
                    }
                    character.m_expGain += levelDifBoost + deadPawn.m_level;
                }
            }
        }
        else
        {
            m_allies--;
        }

        if (m_allies == 0)
        {
            m_battleState = BattleState.BATTLESTATE_LOSE;
            r_characterActionButtons.SetActive(false);
            return;
        }

        if (m_enemies == 0)
        {
            m_battleState = BattleState.BATTLESTATE_WIN;
            r_characterActionButtons.SetActive(false);
        }
    }
示例#9
0
    public void StartBattle()
    {
        m_battleSystem.m_battleSpaces[m_x, m_y].m_occupied = true;
        m_battleSystem.m_battleSpaces[m_x, m_y].m_pawn     = this;

        gameObject.transform.position = new Vector3(m_battleSystem.m_battleSpaces[m_x, m_y].m_cube.transform.position.x,
                                                    0.5f,
                                                    m_battleSystem.m_battleSpaces[m_x, m_y].m_cube.transform.position.z);
        if (gameObject.tag == "Enemy")
        {
            foreach (BattlePawn pawn in m_battleSystem.m_charactersInBattle)
            {
                if (pawn.gameObject.tag == "Player")
                {
                    r_playerPawns.Add(pawn);
                }
            }
            r_targetPlayer = r_playerPawns[0];
        }
    }
示例#10
0
    void OnLevelFinishedLoading(Scene scene, LoadSceneMode mode)
    {
        Debug.Log("Level Loaded");
        Debug.Log(scene.name);
        Debug.Log(mode);
        if (scene.name == "WorldMap")
        {
            m_mapPawn = Instantiate(m_mapPawnPrefab, m_mapPosition, Quaternion.identity);
            m_mapPawn.GetComponent <MapPawn>().m_gameManager = this;
        }

        if (scene.name == "Battle")
        {
            int          encounterNum        = Random.Range(0, r_mapArea.m_encounters.Count);
            Encounter    currentEncounter    = r_mapArea.m_encounters[encounterNum];
            BattleSystem currentBattleSystem = FindObjectOfType <BattleSystem>();
            foreach (CharacterSheet sheet in m_playerParty)
            {
                BattlePawn temp = Instantiate(sheet.m_battlePawnPrefab).GetComponent <BattlePawn>();
                temp.r_characterSheet = sheet;
                currentBattleSystem.m_charactersInBattle.Add(temp);
                temp.SetUp();
            }

            for (int i = 0; i < currentEncounter.m_enemies.Count; i++)
            {
                BattlePawn temp = Instantiate(currentEncounter.m_enemies[i].m_BattlePawn).GetComponent <BattlePawn>();
                temp.r_enemySheet = currentEncounter.m_enemies[i];
                temp.m_x          = currentEncounter.m_enemyLocations[i].x;
                temp.m_y          = currentEncounter.m_enemyLocations[i].y;
                currentBattleSystem.m_charactersInBattle.Add(temp);
                temp.SetUp();
            }

            currentBattleSystem.StartBattle();
        }
    }
示例#11
0
    public override bool UseSkill(BattlePawn user, int targetX, int targetY)
    {
        m_user   = user;
        m_target = user.m_battleSystem.m_battleSpaces[targetX, targetY].m_pawn;
        m_user.m_battleSystem.m_playingSkillAnimation = true;
        m_user.m_playingSkillAnimation = true;
        m_animationStarted             = false;
        m_attackHasHit = false;
        m_user.m_SP   -= m_spCost;
        m_user.m_AP   -= m_apCost;
        attackTimer    = 1.0f;
        if (m_user.m_x < targetX)
        {
            m_throwDirection = Direction.DIRECTION_RIGHT;
        }
        else if (m_user.m_x > targetX)
        {
            m_throwDirection = Direction.DIRECTION_LEFT;
        }
        else if (m_user.m_y < targetY)
        {
            m_throwDirection = Direction.DIRECTION_UP;
        }
        else if (m_user.m_y > targetY)
        {
            m_throwDirection = Direction.DIRECTION_DOWN;
        }

        oldPos = user.transform.position;
        calcLandingSquare();
        m_throwTimer       = 1;
        m_airTimeTimer     = UP_TIME + (THROW_TIME_PER_SPACE * m_rangeMax) + UP_TIME / 2;
        targetStart        = m_target.gameObject.transform.position + new Vector3(0, 1, 0);
        m_animationStarted = true;
        //EndSkill();
        return(true);
    }
示例#12
0
    public void Attack(int targX, int targY, Vector3 targPos)
    {
        BattlePawn a_target = m_battleSystem.m_battleSpaces[targX, targY].m_pawn;

        attackPos = targPos + new Vector3(0, 0, -0.1f);
        oldPos    = new Vector3(m_battleSystem.m_battleSpaces[m_x, m_y].m_cube.transform.position.x,
                                0.5f,
                                m_battleSystem.m_battleSpaces[m_x, m_y].m_cube.transform.position.z);
        m_attackHasHit = false;
        attackTimer    = 1.0f;
        m_targetX      = targX;
        m_targetY      = targY;

        if (targX > m_x)
        {
            gameObject.GetComponent <SpriteRenderer>().sprite = m_spriteR;
            m_facingLeft = false;
        }
        else if (targX < m_x)
        {
            gameObject.GetComponent <SpriteRenderer>().sprite = m_spriteL;
            m_facingLeft = true;
        }
    }
示例#13
0
 //called by the skill that made it when it is first made. should set up the visual indicator and initialize values
 abstract public void Inflict(BattlePawn inflicted, BattlePawn creator);
示例#14
0
    public void TakeDamage(BattlePawn attacker, DamageType damageType, float DamageMod)
    {
        bool isCrit      = false;
        int  damageTotal = 0;

        //calculate crit
        if (Random.Range(0, 31 - attacker.m_speed + m_speed) == 0)
        {
            isCrit = true;
        }

        switch (damageType)
        {
        case DamageType.DAMAGETYPE_PHYSICAL:
            if (isCrit)
            {
                // a criticle hit will not use defence
                damageTotal = (int)((attacker.m_attack * Random.Range(1.0f, 1.5f)) * (DamageMod));
            }
            else
            {
                damageTotal = (int)((attacker.m_attack * Random.Range(1.0f, 1.5f) - (m_defence / 2 * Random.Range(1.0f, 0.5f))) * (DamageMod));
            }

            if (m_isDefending)
            {
                damageTotal = (int)(damageTotal / 2);
            }
            break;

        case DamageType.DAMAGETYPE_MAGIC:
            if (isCrit)
            {
                // a criticle hit will not use defence
                damageTotal = (int)((attacker.m_magic * Random.Range(1.0f, 1.5f)) * (DamageMod));
            }
            else
            {
                damageTotal = (int)((attacker.m_magic * Random.Range(1.0f, 1.5f) - (m_magicDefence / 2 * Random.Range(1.0f, 0.5f))) * (DamageMod));
            }

            if (m_isDefending)
            {
                damageTotal = (int)(damageTotal / 2);
            }
            break;

        case DamageType.DAMAGETYPE_SKILL:
            if (isCrit)
            {
                // a criticle hit will not use defence
                damageTotal = (int)((attacker.m_magic * Random.Range(1.0f, 1.5f)) * (DamageMod));
            }
            else
            {
                damageTotal = (int)((attacker.m_magic * Random.Range(1.0f, 1.5f) - (m_defence / 2 * Random.Range(1.0f, 0.5f))) * (DamageMod));
            }

            if (m_isDefending)
            {
                damageTotal = (int)(damageTotal / 2);
            }
            break;

        case DamageType.DAMAGETYPE_MAGICWEAPON:
            if (isCrit)
            {
                // a criticle hit will not use defence
                damageTotal = (int)((attacker.m_attack * Random.Range(1.0f, 1.5f)) * (DamageMod));
            }
            else
            {
                damageTotal = (int)((attacker.m_attack * Random.Range(1.0f, 1.5f) - (m_magicDefence / 2 * Random.Range(1.0f, 0.5f))) * (DamageMod));
            }

            if (m_isDefending)
            {
                damageTotal = (int)(damageTotal / 2);
            }
            break;

        default:
            break;
        }

        if (damageTotal <= 0)
        {
            damageTotal = 1;
        }
        m_HP -= damageTotal;

        r_hitParticle.emission.SetBurst(0, new ParticleSystem.Burst(0, damageTotal * 2));
        r_hitParticle.Play();
        r_damageNumbers.SpawnNumber(damageTotal, Color.red);
    }
示例#15
0
 //sort function
 static int SortBySpeed(BattlePawn p1, BattlePawn p2)
 {
     return(p2.m_speed.CompareTo(p1.m_speed));
 }
示例#16
0
    //Function to start the fight after the Game Manager has set up the players and enemies
    public void StartBattle()
    {
        //sets the first flag for the victory screen
        m_victoryState = VictoryState.VICTORYSTATE_START;

        m_SelectableSpaces = new List <BattleSpace>();
        m_battleSpaces     = new BattleSpace[8, 4];
        int spaceNum = 0;

        //set up battle spaces
        for (int x = 0; x < 8; x++)
        {
            for (int y = 0; y < 4; y++)
            {
                m_battleSpaces[x, y]        = new BattleSpace();
                m_battleSpaces[x, y].m_cube = r_spaces[spaceNum];
                m_battleSpaces[x, y].x      = x;
                m_battleSpaces[x, y].y      = y;
                spaceNum++;
            }
        }

        m_battleState     = BattleState.BATTLESTATE_START;
        m_selectedCommand = Command.COMMAND_NONE;



        foreach (BattlePawn pawn in m_charactersInBattle)
        {
            m_battleSpaces[pawn.m_x, pawn.m_y].m_pawn = pawn;
            if (pawn.gameObject.tag == "Player")
            {
                m_partyMembers.Add(pawn);
                m_StatusBoxes[m_partyMembers.Count - 1].r_character = pawn;
            }

            pawn.StartBattle();
        }



        TurnOrder();
        EventSystem.current.SetSelectedGameObject(null);
        r_attackButton.Select();

        if (m_charactersInBattle[0].gameObject.tag == "Player")
        {
            m_battleState = BattleState.BATTLESTATE_PLAYER_TURN;
            r_characterActionButtons.SetActive(true);
            EventSystem.current.SetSelectedGameObject(null);
            r_attackButton.Select();
        }
        else if (m_charactersInBattle[0].gameObject.tag == "Enemy")
        {
            m_battleState = BattleState.BATTLESTATE_ENEMY_TURN;
            r_characterActionButtons.SetActive(false);
        }

        m_currentTurnPawn = m_charactersInBattle[0];
        m_charactersInBattle[0].TakeTurn();
    }
示例#17
0
    public void SetUp()
    {
        m_isDefending   = false;
        oldPos          = gameObject.transform.position;
        newPos          = gameObject.transform.position;
        m_battleSystem  = FindObjectOfType <BattleSystem>();
        r_damageNumbers = GetComponentInChildren <DamageNumbers>();
        if (gameObject.tag == "Player")
        {
            CharacterSheet stats = r_characterSheet;
            m_spriteR = stats.m_spriteR;
            m_spriteL = stats.m_spriteL;
            GetComponent <SpriteRenderer>().sprite = m_spriteL;
            m_facingLeft = true;

            m_level = stats.m_level;
            m_name  = stats.name;

            m_maxHP = stats.m_maxHP;
            m_HP    = stats.m_currentHP;

            m_maxSP = stats.m_maxSP;
            m_SP    = stats.m_currentSP;

            m_maxAP = stats.m_maxAP;
            m_AP    = stats.m_currentAP;

            m_attack       = stats.m_strength;
            m_defence      = stats.m_fortitude;
            m_magic        = stats.m_wisdom;
            m_magicDefence = stats.m_resistance;
            m_speed        = stats.m_agility;

            m_x = stats.m_x;
            m_y = stats.m_y;
        }

        if (gameObject.tag == "Enemy")
        {
            EnemySheet stats = r_enemySheet;
            m_spriteR = stats.m_spriteR;
            m_spriteL = stats.m_spriteL;
            GetComponent <SpriteRenderer>().sprite = m_spriteR;
            m_facingLeft = false;

            m_level = stats.m_level;

            m_maxHP = stats.m_maxHP;
            m_HP    = stats.m_HP;

            m_maxSP = stats.m_maxSP;
            m_SP    = stats.m_SP;

            m_maxAP = stats.m_maxAP;
            m_AP    = stats.m_AP;

            m_attack       = stats.m_attack;
            m_defence      = stats.m_defence;
            m_magic        = stats.m_magic;
            m_magicDefence = stats.m_magicDefence;
            m_speed        = stats.m_speed;

            foreach (BattlePawn pawn in m_battleSystem.m_charactersInBattle)
            {
                if (pawn.gameObject.tag == "Player")
                {
                    r_playerPawns.Add(pawn);
                }
            }
            r_targetPlayer = r_playerPawns[0];
        }
    }
示例#18
0
 abstract public bool UseSkill(BattlePawn user, int targetX, int targetY);
示例#19
0
 abstract public bool UseItem(BattlePawn user, int targetX, int targetY);
示例#20
0
    void calcLandingSquare()
    {
        int throwMax;
        int range;
        int i = 0;

        switch (m_throwDirection)
        {
        case Direction.DIRECTION_NONE:
            break;

        case Direction.DIRECTION_UP:
            //calculate the throw  range so it cant go out of bounds
            throwMax = 3 - m_target.m_y;
            if (throwMax < THROWRANGE)
            {
                range = throwMax;
            }
            else
            {
                range = THROWRANGE;
            }

            if (m_target.m_y == 3)
            {
                m_hitPawn       = null;
                m_hasCollided   = false;
                m_landingDist   = 1;
                m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y];
                break;
            }

            //loop through all squares in the throw path
            for (i = 1; i <= range; i++)
            {
                //if there is an enemy in one, set it so thay will be hit and stop one tile short
                if (m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y + i].m_occupied == true)
                {
                    m_hitPawn       = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y + i].m_pawn;
                    m_hasCollided   = true;
                    m_landingDist   = i - 1;
                    m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y + i - 1];
                    return;
                }
            }
            //if an enemy won't be hit, stop at the end of the range
            m_hitPawn       = null;
            m_hasCollided   = false;
            m_landingDist   = range;
            m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y + i - 1];
            break;

        case Direction.DIRECTION_DOWN:
            //calculate the throw  range so it cant go out of bounds
            throwMax = 0 + m_target.m_y;
            if (throwMax < THROWRANGE)
            {
                range = throwMax;
            }
            else
            {
                range = THROWRANGE;
            }

            if (m_target.m_y == 0)
            {
                m_hitPawn       = null;
                m_hasCollided   = false;
                m_landingDist   = 1;
                m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y];
                break;
            }

            //loop through all squares in the throw path
            for (i = 1; i <= range; i++)
            {
                //if there is an enemy in one, set it so thay will be hit and stop one time short
                if (m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y - i].m_occupied == true)
                {
                    m_hitPawn       = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y - i].m_pawn;
                    m_hasCollided   = true;
                    m_landingDist   = i - 1;
                    m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y - i + 1];
                    return;
                }
            }
            //if an enemy won't be hit, stop at the end of the range
            m_hitPawn       = null;
            m_hasCollided   = false;
            m_landingDist   = range;
            m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y - i + 1];
            break;

        case Direction.DIRECTION_RIGHT:
            //calculate the throw  range so it cant go out of bounds
            throwMax = 7 - m_target.m_x;
            if (throwMax < THROWRANGE)
            {
                range = throwMax;
            }
            else
            {
                range = THROWRANGE;
            }

            m_user.GetComponent <SpriteRenderer>().sprite = m_user.m_spriteR;
            if (m_target.m_x == 7)
            {
                m_hitPawn       = null;
                m_hasCollided   = false;
                m_landingDist   = 1;
                m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y];
                break;
            }

            //loop through all squares in the throw path
            for (i = 1; i <= range; i++)
            {
                //if there is an enemy in one, set it so thay will be hit and stop one time short
                if (m_user.m_battleSystem.m_battleSpaces[m_target.m_x + 1, m_target.m_y].m_occupied == true)
                {
                    m_hitPawn       = m_user.m_battleSystem.m_battleSpaces[m_target.m_x + i, m_target.m_y].m_pawn;
                    m_hasCollided   = true;
                    m_landingDist   = i - 1;
                    m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x + i - 1, m_target.m_y];
                    return;
                }
            }
            //if an enemy won't be hit, stop at the end of the range
            m_hitPawn       = null;
            m_hasCollided   = false;
            m_landingDist   = range;
            m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x + i - 1, m_target.m_y];
            break;

        case Direction.DIRECTION_LEFT:
            //calculate the throw  range so it cant go out of bounds
            throwMax = 0 + m_target.m_x;
            if (throwMax < THROWRANGE)
            {
                range = throwMax;
            }
            else
            {
                range = THROWRANGE;
            }

            m_user.GetComponent <SpriteRenderer>().sprite = m_user.m_spriteL;

            if (m_target.m_x == 0)
            {
                m_hitPawn       = null;
                m_hasCollided   = false;
                m_landingDist   = 1;
                m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x, m_target.m_y];
                break;
            }

            //loop through all squares in the throw path
            for (i = 1; i <= range; i++)
            {
                //if there is an enemy in one, set it so thay will be hit and stop one time short
                if (m_user.m_battleSystem.m_battleSpaces[m_target.m_x - i, m_target.m_y].m_occupied == true)
                {
                    m_hitPawn       = m_user.m_battleSystem.m_battleSpaces[m_target.m_x - i, m_target.m_y].m_pawn;
                    m_hasCollided   = true;
                    m_landingDist   = i - 1;
                    m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x - i + 1, m_target.m_y];
                    return;
                }
            }
            //if an enemy won't be hit, stop at the end of the range
            m_hitPawn       = null;
            m_hasCollided   = false;
            m_landingDist   = range;
            m_landingSquare = m_user.m_battleSystem.m_battleSpaces[m_target.m_x - i + 1, m_target.m_y];
            break;

        default:
            break;
        }
    }
示例#21
0
 abstract public bool ValidTarget(BattlePawn user, int targetX, int targetY);