WIP 3 refactoring actor traits - moved iconID && tileSize to Actor.

This commit is contained in:
Oskar Wiksten
2012-10-21 09:56:53 +02:00
parent bf809df44f
commit 21fca91ca7
12 changed files with 53 additions and 35 deletions

View File

@@ -343,7 +343,7 @@ public final class ConversationActivity extends Activity implements OnKeyListene
ConversationStatement s = new ConversationStatement();
if (displayActors) {
assert(actor != null);
s.iconID = actor.baseTraits.iconID;
s.iconID = actor.iconID;
s.actorName = actor.getName();
} else {
s.iconID = ConversationStatement.NO_ICON;

View File

@@ -311,8 +311,10 @@ public class ActorStatsController {
}
}
}
VisualEffect effectToStart = applyStatsModifierEffect(source, effect, 1, null);
startVisualEffect(source, effectToStart);
if (effect.changedStats != null) {
VisualEffect effectToStart = applyStatsModifierEffect(source, effect.changedStats, 1, null);
startVisualEffect(source, effectToStart);
}
}
private static void rollForConditionEffect(Actor actor, ActorConditionEffect conditionEffect) {

View File

@@ -257,7 +257,7 @@ public final class MovementController implements TimedMessageTask.Callback {
for (MonsterSpawnArea a : map.spawnAreas) {
for (Monster m : a.monsters) {
if (!map.isWalkable(m.rectPosition)) {
Coord p = map.getRandomFreePosition(a.area, m.baseTraits.tileSize, playerPosition);
Coord p = map.getRandomFreePosition(a.area, m.tileSize, playerPosition);
if (p == null) continue;
m.position.set(p);
}

View File

@@ -12,10 +12,13 @@ import com.gpl.rpg.AndorsTrail.model.listeners.ActorConditionListeners;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.CoordRect;
import com.gpl.rpg.AndorsTrail.util.Range;
import com.gpl.rpg.AndorsTrail.util.Size;
public class Actor {
public final ActorTraits baseTraits;
public final CombatTraits combatTraits;
public final int iconID;
public final Size tileSize;
public final Range ap;
public final Range health;
public final Coord position;
@@ -28,6 +31,8 @@ public class Actor {
public Actor(ActorTraits baseTraits, boolean isPlayer, boolean isImmuneToCriticalHits) {
this.combatTraits = new CombatTraits(baseTraits);
this.baseTraits = baseTraits;
this.iconID = baseTraits.iconID;
this.tileSize = baseTraits.tileSize;
this.ap = new Range(baseTraits.maxAP, baseTraits.maxAP);
this.health = new Range(baseTraits.maxHP, baseTraits.maxHP);
this.position = new Coord();
@@ -86,6 +91,9 @@ public class Actor {
if (readCombatTraits) combatTraits = new CombatTraits(src, fileversion);
this.baseTraits = isPlayer ? new ActorTraits(src, world, fileversion) : baseTraits;
this.iconID = baseTraits.iconID;
this.tileSize = baseTraits.tileSize;
if (!readCombatTraits) combatTraits = new CombatTraits(this.baseTraits);
this.combatTraits = combatTraits;

View File

@@ -34,7 +34,7 @@ public final class Monster extends Actor {
this.monsterTypeID = monsterType.id;
this.position.set(position);
this.millisecondsPerMove = Constants.MONSTER_MOVEMENT_TURN_DURATION_MS / monsterType.baseTraits.getMovesPerTurn();
this.nextPosition = new CoordRect(new Coord(), baseTraits.tileSize);
this.nextPosition = new CoordRect(new Coord(), monsterType.baseTraits.tileSize);
this.phraseID = monsterType.phraseID;
this.exp = monsterType.exp;
this.dropList = monsterType.dropList;

View File

@@ -45,21 +45,21 @@ public final class Player extends Actor {
public Player() {
super(
new ActorTraits(
TileManager.CHAR_HERO
, new Size(1, 1)
, 0 // attackCost
, 0 // attackChance
, 0 // criticalSkill
, 0 // criticalMultiplier
, new Range() // damagePotential
, 0 // blockChance
, 0 // damageResistance
, DEFAULT_PLAYER_MOVECOST
, null)
, true // isPlayer
, false // isImmuneToCriticalHits
);
new ActorTraits(
TileManager.CHAR_HERO
, new Size(1, 1)
, 0 // attackCost
, 0 // attackChance
, 0 // criticalSkill
, 0 // criticalMultiplier
, new Range() // damagePotential
, 0 // blockChance
, 0 // damageResistance
, DEFAULT_PLAYER_MOVECOST
, null)
, true // isPlayer
, false // isImmuneToCriticalHits
);
this.lastPosition = new Coord();
this.nextPosition = new Coord();
this.levelExperience = new Range();

View File

@@ -2,15 +2,20 @@ package com.gpl.rpg.AndorsTrail.model.item;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect;
import com.gpl.rpg.AndorsTrail.model.ability.traits.StatsModifierTraits;
import com.gpl.rpg.AndorsTrail.util.ConstRange;
public final class ItemTraits_OnUse extends StatsModifierTraits {
public final class ItemTraits_OnUse {
public final StatsModifierTraits changedStats;
public final ActorConditionEffect[] addedConditions_source;
public final ActorConditionEffect[] addedConditions_target;
public ItemTraits_OnUse(int visualEffectID, ConstRange currentHPBoost, ConstRange currentAPBoost, ActorConditionEffect[] addedConditions_source, ActorConditionEffect[] addedConditions_target) {
super(visualEffectID, currentHPBoost, currentAPBoost);
public ItemTraits_OnUse(StatsModifierTraits changedStats, ActorConditionEffect[] addedConditions_source, ActorConditionEffect[] addedConditions_target) {
this.changedStats = changedStats;
this.addedConditions_source = addedConditions_source;
this.addedConditions_target = addedConditions_target;
}
public int calculateCost() {
final int costStats = changedStats == null ? 0 : changedStats.calculateCost();
return costStats;
}
}

View File

@@ -7,6 +7,7 @@ import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionTypeCollection;
import com.gpl.rpg.AndorsTrail.model.ability.traits.AbilityModifierTraits;
import com.gpl.rpg.AndorsTrail.model.ability.traits.StatsModifierTraits;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnEquip;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer;
@@ -68,9 +69,11 @@ public final class ItemTraitsParser {
return null;
} else {
return new ItemTraits_OnUse(
ItemTraits_OnUse.VISUAL_EFFECT_NONE
,boostCurrentHP
,boostCurrentAP
new StatsModifierTraits(
StatsModifierTraits.VISUAL_EFFECT_NONE
,boostCurrentHP
,boostCurrentAP
)
,listToArray(addedConditions_source)
,listToArray(addedConditions_target)
);

View File

@@ -125,8 +125,8 @@ public final class TileManager {
public void setImageViewTile(TextView textView, Monster monster) { setImageViewTileForMonster(textView, monster.baseTraits.iconID); }
public void setImageViewTile(TextView textView, Player player) { setImageViewTileForPlayer(textView, player.baseTraits.iconID); }
public void setImageViewTile(TextView textView, Monster monster) { setImageViewTileForMonster(textView, monster.iconID); }
public void setImageViewTile(TextView textView, Player player) { setImageViewTileForPlayer(textView, player.iconID); }
public void setImageViewTileForMonster(TextView textView, int iconID) { setImageViewTile(textView, currentMapTiles.getBitmap(iconID)); }
public void setImageViewTileForPlayer(TextView textView, int iconID) { setImageViewTile(textView, preloadedTiles.getBitmap(iconID)); }
public void setImageViewTile(TextView textView, ActorConditionType conditionType) { setImageViewTile(textView, preloadedTiles.getBitmap(conditionType.iconID)); }
@@ -155,8 +155,8 @@ public final class TileManager {
}
}
public void setImageViewTile(ImageView imageView, Monster monster) { setImageViewTileForMonster(imageView, monster.baseTraits.iconID); }
public void setImageViewTile(ImageView imageView, Player player) { setImageViewTileForPlayer(imageView, player.baseTraits.iconID); }
public void setImageViewTile(ImageView imageView, Monster monster) { setImageViewTileForMonster(imageView, monster.iconID); }
public void setImageViewTile(ImageView imageView, Player player) { setImageViewTileForPlayer(imageView, player.iconID); }
public void setImageViewTileForMonster(ImageView imageView, int iconID) { imageView.setImageBitmap(currentMapTiles.getBitmap(iconID)); }
public void setImageViewTileForPlayer(ImageView imageView, int iconID) { imageView.setImageBitmap(preloadedTiles.getBitmap(iconID)); }
public void setImageViewTile(ImageView imageView, ActorConditionType conditionType) { imageView.setImageBitmap(preloadedTiles.getBitmap(conditionType.iconID)); }

View File

@@ -48,7 +48,7 @@ public final class ItemEffectsView_OnUse extends LinearLayout {
if (t.addedConditions_source != null) sourceEffects.addAll(Arrays.asList(t.addedConditions_source));
if (t.addedConditions_target != null) targetEffects.addAll(Arrays.asList(t.addedConditions_target));
describeStatsModifierTraits(t, context, res, itemeffect_onuse_list);
describeStatsModifierTraits(t.changedStats, context, res, itemeffect_onuse_list);
}
}
itemeffect_onuse_conditions_source.update(sourceEffects);

View File

@@ -278,10 +278,10 @@ public final class MainView extends SurfaceView implements SurfaceHolder.Callbac
}
}
drawFromMapPosition(canvas, area, playerPosition, model.player.baseTraits.iconID);
drawFromMapPosition(canvas, area, playerPosition, model.player.iconID);
for (MonsterSpawnArea a : currentMap.spawnAreas) {
for (Monster m : a.monsters) {
drawFromMapPosition(canvas, area, m.rectPosition, m.baseTraits.iconID);
drawFromMapPosition(canvas, area, m.rectPosition, m.iconID);
}
}

View File

@@ -56,7 +56,7 @@ public final class StatusView extends RelativeLayout {
expBar.init(R.drawable.ui_progress_exp, R.string.status_exp);
levelupDrawable = new LayerDrawable(new Drawable[] {
new BitmapDrawable(world.tileManager.preloadedTiles.getBitmap(player.baseTraits.iconID))
new BitmapDrawable(world.tileManager.preloadedTiles.getBitmap(player.iconID))
,new BitmapDrawable(world.tileManager.preloadedTiles.getBitmap(TileManager.iconID_moveselect))
});