/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package cardgamecard;
import cardgamecard.implementcard.EmptyCard;
/*
1 2 3 Г 4 5 6 пехота
7 8 Г 9 10 башни
11 * 12 маги
13 драконы
Герой занимает 2 клетки. он - 14я карта.
*/
public class CGBattleSetCard {
public static final int MAX_CARD_FROM_SET = 14;
CGBaseCard[] mBattleCards; //Карты, участвующие в бою
CGBaseCard[] mQueueSteps; //Карты, упорядоченные по тому, кто когда ходит
int mCurStep = 0; //ход данной карты
public CGBattleSetCard(){
mBattleCards = new CGBaseCard[MAX_CARD_FROM_SET];
mQueueSteps = new CGBaseCard[MAX_CARD_FROM_SET];
for( int i = 0; i < MAX_CARD_FROM_SET; i++ )
mBattleCards[i] = new EmptyCard();
}
/**
* Получить карты, находящиеся в бою
*/
public CGBaseCard[] BattleCards(){
return mBattleCards;
}
/**
* Получить карту по позиции
*/
public CGBaseCard BattleCard(int index){
if(index < 0 || index > mBattleCards.length - 1)
return null;
else return mBattleCards[index];
}
/**
* Добавить карту в массив боевых карт и установить ее очередность хода
* @param card - добавляемая карта
* @param pos - в какую ячейку пирамиды ее поставить
*/
public void addCard(CGBaseCard card, int pos) {
mBattleCards[pos] = card;
mQueueSteps[mCurStep] = card;
card.setBattle(true);
mCurStep++;
}
/**
* Получить карту, которая будет ходить следующей/ если ничего не вернулось - живых карт нету
* @return
*/
public CGBaseCard nextStepCard(){
int tmp_cur_step = mCurStep;
do{
CGBaseCard card = mQueueSteps[mCurStep];
mCurStep++;
if( card != null && !card.isDead() )
return card;
if( mCurStep >= MAX_CARD_FROM_SET )
mCurStep = 0;
}while( mCurStep != tmp_cur_step );
return null;
}
/**
* Текущий ход - нулевая карта
*/
public void ClearCurStep(){
mCurStep = 0;
}
}