mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-18 09:34:04 +01:00
WIP 3 refactoring actor traits - moved iconID && tileSize to Actor.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
|
||||
@@ -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)); }
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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))
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user