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(); } } }