From 32e9a92fef2166f62f01b3e6fed27a4d50f9e4f8 Mon Sep 17 00:00:00 2001 From: Oskar Wiksten Date: Sat, 12 Jan 2013 20:29:19 +0100 Subject: [PATCH] Work in progress on moving ui dependencies away from model. --- .../src/com/gpl/rpg/AndorsTrail/WorldSetup.java | 3 ++- .../rpg/AndorsTrail/controller/CombatController.java | 6 +++--- .../gpl/rpg/AndorsTrail/controller/Controller.java | 4 ++-- .../AndorsTrail/controller/MovementController.java | 12 ++++++++---- .../src/com/gpl/rpg/AndorsTrail/view/MainView.java | 9 ++++----- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java index 5d53da0a2..3b06df68e 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java @@ -147,11 +147,12 @@ public final class WorldSetup { } private void createNewWorld() { + Context ctx = androidContext.get(); world.model = new ModelContainer(); world.model.player.initializeNewPlayer(world.itemTypes, world.dropLists, newHeroName); view.actorStatsController.recalculatePlayerStats(world.model.player); - view.movementController.respawnPlayer(); + view.movementController.respawnPlayer(ctx.getResources()); view.controller.lotsOfTimePassed(); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java index 826732890..2a115bb16 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java @@ -1,6 +1,6 @@ package com.gpl.rpg.AndorsTrail.controller; -import java.util.HashSet; +import java.util.ArrayList; import android.os.Handler; import android.os.Message; @@ -34,7 +34,7 @@ public final class CombatController implements VisualEffectCompletedCallback { public final CombatTurnListeners combatTurnListeners = new CombatTurnListeners(); private Monster currentActiveMonster = null; - private final HashSet killedMonsterBags = new HashSet(); + private final ArrayList killedMonsterBags = new ArrayList(); private int totalExpThisFight = 0; public CombatController(ViewContext view, WorldContext world) { @@ -442,7 +442,7 @@ public final class CombatController implements VisualEffectCompletedCallback { } damage -= target.getDamageResistance(); if (damage < 0) damage = 0; - view.actorStatsController.removeActorHealth(world.model.player, damage); + view.actorStatsController.removeActorHealth(target, damage); applyAttackHitStatusEffects(attacker, target); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java index 65affb138..bdc92b0bc 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java @@ -31,7 +31,7 @@ public final class Controller { if (o.map == null || o.place == null) return; int offset_x = position.x - o.position.topLeft.x; int offset_y = position.y - o.position.topLeft.y; - view.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, o.map, o.place, offset_x, offset_y); + view.movementController.placePlayerAsyncAt(MapObject.MAPEVENT_NEWMAP, o.map, o.place, offset_x, offset_y); break; case MapObject.MAPEVENT_REST: steppedOnRestArea(o); @@ -69,7 +69,7 @@ public final class Controller { if (lostExp < 0) lostExp = 0; view.actorStatsController.addExperience(-lostExp); world.model.statistics.addPlayerDeath(lostExp); - view.movementController.respawnPlayer(); + view.movementController.respawnPlayerAsync(); lotsOfTimePassed(); worldEventListeners.onPlayerDied(lostExp); } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java index 199e60aea..cfbed62f0 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java @@ -33,7 +33,7 @@ public final class MovementController implements TimedMessageTask.Callback { this.movementHandler = new TimedMessageTask(this, Constants.MINIMUM_INPUT_INTERVAL, false); } - public void placePlayerAt(final int objectType, final String mapName, final String placeName, final int offset_x, final int offset_y) { + public void placePlayerAsyncAt(final int objectType, final String mapName, final String placeName, final int offset_x, final int offset_y) { AsyncTask task = new AsyncTask() { @Override @@ -48,7 +48,6 @@ public final class MovementController implements TimedMessageTask.Callback { @Override protected void onPostExecute(Void result) { super.onPostExecute(result); - playerMovementListeners.onPlayerEnteredNewMap(world.model.currentMap, world.model.player.position); stopMovement(); view.gameRoundController.resume(); } @@ -85,6 +84,8 @@ public final class MovementController implements TimedMessageTask.Callback { refreshMonsterAggressiveness(newMap, model.player); view.effectController.updateSplatters(newMap); + + playerMovementListeners.onPlayerEnteredNewMap(world.model.currentMap, world.model.player.position); } private void playerVisitsMapFirstTime(PredefinedMap m) { @@ -231,8 +232,11 @@ public final class MovementController implements TimedMessageTask.Callback { } } - public void respawnPlayer() { - placePlayerAt(MapObject.MAPEVENT_REST, world.model.player.getSpawnMap(), world.model.player.getSpawnPlace(), 0, 0); + public void respawnPlayer(Resources res) { + placePlayerAt(res, MapObject.MAPEVENT_REST, world.model.player.getSpawnMap(), world.model.player.getSpawnPlace(), 0, 0); + } + public void respawnPlayerAsync() { + placePlayerAsyncAt(MapObject.MAPEVENT_REST, world.model.player.getSpawnMap(), world.model.player.getSpawnPlace(), 0, 0); } public static void moveBlockedActors(final WorldContext world) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java index ce2036b93..fb4ea7bec 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java @@ -170,7 +170,6 @@ public final class MainView extends SurfaceView private static final int REDRAW_ALL_PLAYER_MOVED = 3; private static final int REDRAW_AREA_MONSTER_MOVED = 4; private static final int REDRAW_AREA_MONSTER_KILLED = 10; - private static final int REDRAW_AREA_EFFECT_STARTING = 5; private static final int REDRAW_AREA_EFFECT_COMPLETED = 6; private static final int REDRAW_AREA_MONSTER_SPAWNED = 11; private static final int REDRAW_TILE_SELECTION_REMOVED = 7; @@ -178,14 +177,14 @@ public final class MainView extends SurfaceView private static final int REDRAW_TILE_BAG = 9; private static final int REDRAW_TILE_SPLATTER = 12; - public void redrawAll(int why) { + private void redrawAll(int why) { redrawArea_(mapViewArea); } - public void redrawTile(final Coord p, int why) { + private void redrawTile(final Coord p, int why) { p1x1.topLeft.set(p); redrawArea_(p1x1); } - public void redrawArea(final CoordRect area, int why) { + private void redrawArea(final CoordRect area, int why) { redrawArea_(area); } private void redrawArea_(CoordRect area) { @@ -220,7 +219,7 @@ public final class MainView extends SurfaceView return true; } private final Rect redrawRect = new Rect(); - public void redrawAreaWithEffect(final VisualEffectAnimation effect, int tileID, int textYOffset) { + private void redrawAreaWithEffect(final VisualEffectAnimation effect, int tileID, int textYOffset) { CoordRect area = effect.area; if (!hasSurface) return; if (shouldRedrawEverythingForVisualEffect()) area = mapViewArea;