package com.arconus.dicecommander.ui.activity;
import android.os.Bundle;
import com.arconus.dicecommander.R;
import com.arconus.dicecommander.interactors.CharPowerBuilder;
import com.arconus.dicecommander.interactors.managers.GameCharacterManager;
import com.arconus.dicecommander.model.entities.character.Defenses;
import com.arconus.dicecommander.model.entities.character.power.ActionType;
import com.arconus.dicecommander.model.entities.character.power.AttackType;
import com.arconus.dicecommander.model.entities.character.power.PowerUsage;
import com.arconus.dicecommander.model.wizards.PowerWizard;
import com.example.android.wizardpager.wizard.model.Page;
public class PowerWizardActivity extends BaseWizardActivity {
public static final String EDIT_POWER_ID = "EditPowerID";
public static final String EDIT_POWER_MODEL = "EditPowerModel";
private int powerID = -1;
public void onCreate(Bundle savedInstanceState) {
mWizardModel = new PowerWizard();
super.onCreate(savedInstanceState);
mFinishButtonResId = R.string.power_wizard_save;
loadModelFromExtras();
}
private void loadModelFromExtras() {
Bundle extras = getIntent().getExtras();
if (extras != null) {
Bundle model = extras.getBundle(EDIT_POWER_MODEL);
if (model != null) {
mWizardModel.load(model);
}
powerID = extras.getInt(EDIT_POWER_ID, -1);
}
}
@Override
public void onReviewButtonPressed() {
CharPowerBuilder builder = GameCharacterManager.getPowerBuilderFromSelectedChar();
boolean attackRoll = false;
boolean damageRoll = false;
int attackMod = 0;
int damageNumDice = 0;
int damageModifier = 0;
int damageDieType = 0;
for (Page page : mCurrentPageSequence) {
String stringFromPage = page.getData().getString(Page.SIMPLE_DATA_KEY);
int dataTag = page.getData().getInt(Page.DATA_TAG_KEY);
switch (page.getId()) {
case PowerWizard.POWER_NAME_PAGE:
builder.setName(stringFromPage);
break;
case PowerWizard.POWER_USAGE_PAGE:
builder.setPowerUsage(PowerUsage.parseInt(dataTag));
break;
case PowerWizard.POWER_ACTION_TYPE_PAGE:
builder.setActionType(ActionType.parseInt(dataTag));
break;
case PowerWizard.POWER_ATTACK_TYPE_PAGE:
builder.setAttackType(AttackType.parseInt(dataTag));
break;
case PowerWizard.ATTACK_ROLL_PAGE:
//TODO this won't work properly if user isn't using english
attackRoll = stringFromPage.equalsIgnoreCase("yes");
break;
case PowerWizard.ATTACK_MODIFIER_PAGE:
attackMod = Integer.parseInt(stringFromPage);
break;
case PowerWizard.DEFENSE_TYPE_PAGE:
builder.setDefense(Defenses.parseInt(dataTag));
break;
case PowerWizard.DAMAGE_ROLL_PAGE:
//TODO this won't work properly if user isn't using english
damageRoll = stringFromPage.equalsIgnoreCase("yes");
break;
case PowerWizard.NUMBER_OF_DAMAGE_DICE_PAGE:
damageNumDice = Integer.parseInt(stringFromPage);
break;
case PowerWizard.DAMAGE_DIE_PAGE:
damageDieType = dataTag;
break;
case PowerWizard.DAMAGE_MODIFIER_PAGE:
damageModifier = Integer.parseInt(stringFromPage);
break;
}
}
if (attackRoll) {
builder.setAttackRoll(attackMod);
}
if (damageRoll) {
builder.setDamageRoll(damageNumDice, damageDieType, damageModifier);
}
//replace the power if in edit mode
if (powerID > -1) {
builder.replaceCharPower(powerID);
} else {
builder.publishCharPower();
}
}
}