Package cardgamecard

Source Code of cardgamecard.CGBaseCard

package cardgamecard;

import cardgameevents.CGChangeValueEvent;
import cardgameevents.CGEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


abstract public class CGBaseCard {
   
    /**
     * Типы карт (по уровням)
     */
    public enum TypeCard{
        tcHERO,         //карта героя
        tcSOLDIER,      //пехоты
        tcTOWER,        //башни
        tcSUPPORT,      //маги, лечилки
        tcBIG_MONSTER   //драконы-катапульты
    }
   
    //Индексы в массиве карт, участвующих в бою. Схему см в классе героя
    public final static int idxSOLDIER_1 = 0;
    public final static int idxSOLDIER_2 = 1;
    public final static int idxSOLDIER_3 = 2;
    public final static int idxSOLDIER_4 = 3;
    public final static int idxSOLDIER_5 = 4;
    public final static int idxSOLDIER_6 = 5;
   
    public final static int idxTOWER_1 = 6;
    public final static int idxTOWER_2 = 7;
    public final static int idxTOWER_3 = 8;
    public final static int idxTOWER_4 = 9;
   
    public final static int idxSUPPORT_1 = 10;
    public final static int idxSUPPORT_2 = 11;
   
    public final static int idxBIG_MONSTER_1 = 12;
    public final static int idxHERO = 13;
   
   
    private TypeCard mTypeCard;
   
    private boolean mActive = false;     //Является ли карта активной (выделенной)
    private boolean mReverse = false;    //Карта перевернута
    private boolean mDead = false;       //Карта померла
    private boolean mBattle = false;     //Карта в бою
   
    private int mLevel = 1;          //уровень
    private int mHealth;             //здоровье
    private int mShield;             //Единицы урона, которые может поглоить щит
    private int mDamage;             //урон
   
    public CGBaseCard( TypeCard type ){
        mTypeCard = type;
    }
    /**
     * Получить имя карты
     */
    abstract public String CardName();
   
    /**
     * Нанести карте урон damage
     */
    public void Damage( int damage ){
        mHealth -= damage;
        mDead = mHealth < 0;
    }
    /**
     * Получить размер наносимого картой урона
     */
    public int Damage(){
        return mDamage;
    }
    /**
     * Установить величину урона
     */
    public void setDamage(int damage){
        mDamage = damage;
    }
    /**
     * Добавить к урону
     */
    public void addDamage(int add_damage){
        mDamage += add_damage;
    }
   
    /**
     * Получить размер урона, окторый может заблокировать щит
     */
    public int Shield(){
        return mShield;
    }
    /**
     * Установить величину щита
     */
    public void setShield(int shield){
        mShield = shield;
    }
    /**
     * Добавить к величине щита
     */
    public void addShield(int add_shield){
        mShield += add_shield;
    }
   
    /**
     * Умерла ли карта
     */
    public boolean isDead(){
        return mDead;
    }
   
    /**
     * Сделать карту активной
     */
    public void setActive( boolean active ){
        mActive = active;
    }
    /**
     * Активна ли карта
     */
    public boolean isActive(){
        return mActive;
    }
   
    /**
     * Карта участвует в бою
     */
    public boolean isBattle(){
        return mBattle;
    }
    /**
     * Отправить карту в бой/вытащить из боя
     */
    public void setBattle( boolean battle ){
        mBattle = battle;
    }
   
    /**
     * Евляется ли это псевдо-картой (равносильно пустому месту)
     */
    public boolean isEmptyCard(){
        return false;
    }
   
    /**
     * Обработка событий
     * @param event - событие, которое необходимо обработать
     */
    public void handleEvent( CGEvent event ){
        int type = event.Type();
        if( type == CGEvent.evGET_DAMAGE ){
            CGChangeValueEvent ev = (CGChangeValueEvent) event.Event();
            Damage( ev.Value() );
        }
        else if( type == CGEvent.evADD_DAMAGE ){
            CGChangeValueEvent ev = (CGChangeValueEvent) event.Event();
            addDamage( ev.Value() );
        }
        else if( type == CGEvent.evADD_SHIELD ){
            CGChangeValueEvent ev = (CGChangeValueEvent) event.Event();
            addShield( ev.Value() );
        }
    }
   
    /**
     * Возвращает позиции, на которых может стоять эта карта
     */
    public List<Integer> getPossiblePosition(){
        if(mTypeCard == TypeCard.tcSOLDIER)
            return new ArrayList<Integer>( Arrays.asList(idxSOLDIER_1, idxSOLDIER_2, idxSOLDIER_3,
                    idxSOLDIER_4, idxSOLDIER_5, idxSOLDIER_6) );
        else if(mTypeCard == TypeCard.tcTOWER)
            return new ArrayList<Integer>( Arrays.asList(idxTOWER_1, idxTOWER_2, idxTOWER_3, idxTOWER_4) );
        else if(mTypeCard == TypeCard.tcSUPPORT)
            return new ArrayList<Integer>( Arrays.asList(idxSUPPORT_1, idxSUPPORT_2) );
        else if(mTypeCard == TypeCard.tcBIG_MONSTER)
            return new ArrayList<Integer>( Arrays.asList(idxBIG_MONSTER_1) );
        else return new ArrayList<Integer>( Arrays.asList(idxHERO) );
    }
}
TOP

Related Classes of cardgamecard.CGBaseCard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.