Renamed "ViewContext" -> "ControllerContext" to better reflect its responsibility.

This commit is contained in:
Oskar Wiksten
2013-02-20 15:30:53 +00:00
parent f5ff29a0fe
commit 6261c499ff
36 changed files with 359 additions and 359 deletions

View File

@@ -1,6 +1,6 @@
package com.gpl.rpg.AndorsTrail;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import android.app.Activity;
@@ -23,12 +23,12 @@ public final class AndorsTrailApplication extends Application {
private final AndorsTrailPreferences preferences = new AndorsTrailPreferences();
private final WorldContext world = new WorldContext();
private final ViewContext view = new ViewContext(this, world);
private final WorldSetup setup = new WorldSetup(world, view, this);
private final ControllerContext controllers = new ControllerContext(this, world);
private final WorldSetup setup = new WorldSetup(world, controllers, this);
public WorldContext getWorld() { return world; }
public WorldSetup getWorldSetup() { return setup; }
public AndorsTrailPreferences getPreferences() { return preferences; }
public ViewContext getViewContext() { return view; }
public ControllerContext getControllerContext() { return controllers; }
public static AndorsTrailApplication getApplicationFromActivity(Activity activity) {
return ((AndorsTrailApplication) activity.getApplication());

View File

@@ -36,7 +36,7 @@ import com.gpl.rpg.AndorsTrail.activity.Preferences;
import com.gpl.rpg.AndorsTrail.activity.ShopActivity;
import com.gpl.rpg.AndorsTrail.activity.SkillInfoActivity;
import com.gpl.rpg.AndorsTrail.activity.StartScreenActivity;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
@@ -48,10 +48,10 @@ import com.gpl.rpg.AndorsTrail.view.ItemContainerAdapter;
public final class Dialogs {
private static void showDialogAndPause(Dialog d, final ViewContext context) {
private static void showDialogAndPause(Dialog d, final ControllerContext context) {
showDialogAndPause(d, context, null);
}
private static void showDialogAndPause(Dialog d, final ViewContext context, final OnDismissListener onDismiss) {
private static void showDialogAndPause(Dialog d, final ControllerContext context, final OnDismissListener onDismiss) {
context.gameRoundController.pause();
d.setOnDismissListener(new OnDismissListener() {
@Override
@@ -70,15 +70,15 @@ public final class Dialogs {
}
*/
public static void showKeyArea(final MainActivity currentActivity, final ViewContext context, String phraseID) {
public static void showKeyArea(final MainActivity currentActivity, final ControllerContext context, String phraseID) {
showConversation(currentActivity, context, phraseID, null);
}
public static void showMapSign(final MainActivity currentActivity, final ViewContext context, String phraseID) {
public static void showMapSign(final MainActivity currentActivity, final ControllerContext context, String phraseID) {
showConversation(currentActivity, context, phraseID, null);
}
public static void showConversation(final MainActivity currentActivity, final ViewContext context, final String phraseID, final Monster npc) {
public static void showConversation(final MainActivity currentActivity, final ControllerContext context, final String phraseID, final Monster npc) {
context.gameRoundController.pause();
Intent intent = new Intent(currentActivity, ConversationActivity.class);
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/conversation/" + phraseID));
@@ -101,7 +101,7 @@ public final class Dialogs {
return world.model.currentMap.getMonsterAt(x, y);
}
public static void showMonsterEncounter(final MainActivity currentActivity, final ViewContext context, final Monster monster) {
public static void showMonsterEncounter(final MainActivity currentActivity, final ControllerContext context, final Monster monster) {
context.gameRoundController.pause();
Intent intent = new Intent(currentActivity, MonsterEncounterActivity.class);
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/monsterencounter"));
@@ -154,18 +154,18 @@ public final class Dialogs {
}
}
public static void showMonsterLoot(final MainActivity mainActivity, final ViewContext view, final WorldContext world, final Collection<Loot> lootBags, final Loot combinedLoot, final String msg) {
public static void showMonsterLoot(final MainActivity mainActivity, final ControllerContext controllers, final WorldContext world, final Collection<Loot> lootBags, final Loot combinedLoot, final String msg) {
// CombatController will do killedMonsterBags.clear() after this method has been called,
// so we need to keep the list of objects. Therefore, we create a shallow copy of the list of bags.
ArrayList<Loot> bags = new ArrayList<Loot>(lootBags);
showLoot(mainActivity, view, world, combinedLoot, bags, R.string.dialog_monsterloot_title, msg);
showLoot(mainActivity, controllers, world, combinedLoot, bags, R.string.dialog_monsterloot_title, msg);
}
public static void showGroundLoot(final MainActivity mainActivity, final ViewContext view, final WorldContext world, final Loot loot, final String msg) {
showLoot(mainActivity, view, world, loot, Collections.singletonList(loot), R.string.dialog_groundloot_title, msg);
public static void showGroundLoot(final MainActivity mainActivity, final ControllerContext controllers, final WorldContext world, final Loot loot, final String msg) {
showLoot(mainActivity, controllers, world, loot, Collections.singletonList(loot), R.string.dialog_groundloot_title, msg);
}
private static void showLoot(final MainActivity mainActivity, final ViewContext view, final WorldContext world, final Loot combinedLoot, final Iterable<Loot> lootBags, final int title, final String msg) {
private static void showLoot(final MainActivity mainActivity, final ControllerContext controllers, final WorldContext world, final Loot combinedLoot, final Iterable<Loot> lootBags, final int title, final String msg) {
final ListView itemList = new ListView(mainActivity);
itemList.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT));
itemList.setPadding(20, 0, 20, 20);
@@ -176,7 +176,7 @@ public final class Dialogs {
final String itemTypeID = ((ItemContainerAdapter) parent.getAdapter()).getItem(position).itemType.id;
for (Loot l : lootBags) {
if (l.items.removeItem(itemTypeID)) {
view.itemController.removeLootBagIfEmpty(l);
controllers.itemController.removeLootBagIfEmpty(l);
break;
}
}
@@ -199,17 +199,17 @@ public final class Dialogs {
db.setPositiveButton(R.string.dialog_loot_pickall, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
view.itemController.pickupAll(lootBags);
controllers.itemController.pickupAll(lootBags);
}
});
}
final Dialog d = db.create();
showDialogAndPause(d, view, new OnDismissListener() {
showDialogAndPause(d, controllers, new OnDismissListener() {
@Override
public void onDismiss(DialogInterface arg0) {
view.itemController.removeLootBagIfEmpty(lootBags);
controllers.itemController.removeLootBagIfEmpty(lootBags);
}
});
}
@@ -230,29 +230,29 @@ public final class Dialogs {
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_LEVELUP);
}
public static void showConfirmRest(final Activity currentActivity, final ViewContext viewContext, final MapObject area) {
public static void showConfirmRest(final Activity currentActivity, final ControllerContext controllerContext, final MapObject area) {
Dialog d = new AlertDialog.Builder(currentActivity)
.setTitle(R.string.dialog_rest_title)
.setMessage(R.string.dialog_rest_confirm_message)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
viewContext.controller.rest(area);
controllerContext.mapController.rest(area);
}
})
.setNegativeButton(android.R.string.no, null)
.create();
showDialogAndPause(d, viewContext);
showDialogAndPause(d, controllerContext);
}
public static void showRested(final Activity currentActivity, final ViewContext viewContext) {
public static void showRested(final Activity currentActivity, final ControllerContext controllerContext) {
Dialog d = new AlertDialog.Builder(currentActivity)
.setTitle(R.string.dialog_rest_title)
.setMessage(R.string.dialog_rest_message)
.setNeutralButton(android.R.string.ok, null)
.create();
showDialogAndPause(d, viewContext);
showDialogAndPause(d, controllerContext);
}
public static void showNewVersion(final Activity currentActivity) {
@@ -268,12 +268,12 @@ public final class Dialogs {
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_PREFERENCES);
}
public static void showSave(final MainActivity mainActivity, final ViewContext viewContext, final WorldContext world) {
public static void showSave(final MainActivity mainActivity, final ControllerContext controllerContext, final WorldContext world) {
if (world.model.uiSelections.isInCombat) {
mainActivity.showToast(mainActivity.getResources().getString(R.string.menu_save_saving_not_allowed_in_combat), Toast.LENGTH_SHORT);
return;
}
viewContext.gameRoundController.pause();
controllerContext.gameRoundController.pause();
Intent intent = new Intent(mainActivity, LoadSaveActivity.class);
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/save"));
mainActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_SAVEGAME);

View File

@@ -6,7 +6,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncTask;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.resource.ResourceLoader;
@@ -15,7 +15,7 @@ import com.gpl.rpg.AndorsTrail.savegames.Savegames;
public final class WorldSetup {
private final WorldContext world;
private final ViewContext view;
private final ControllerContext controllers;
private final WeakReference<Context> androidContext;
private boolean isResourcesInitialized = false;
private boolean isInitializingResources = false;
@@ -29,9 +29,9 @@ public final class WorldSetup {
public String newHeroName;
private int loadResult;
public WorldSetup(WorldContext world, ViewContext view, Context androidContext) {
public WorldSetup(WorldContext world, ControllerContext controllers, Context androidContext) {
this.world = world;
this.view = view;
this.controllers = controllers;
this.androidContext = new WeakReference<Context>(androidContext);
}
@@ -139,9 +139,9 @@ public final class WorldSetup {
private int continueWorld() {
Context ctx = androidContext.get();
int result = Savegames.loadWorld(world, view, ctx, loadFromSlot);
int result = Savegames.loadWorld(world, controllers, ctx, loadFromSlot);
if (result == Savegames.LOAD_RESULT_SUCCESS) {
view.movementController.cacheCurrentMapData(ctx.getResources(), world.model.currentMap);
controllers.movementController.cacheCurrentMapData(ctx.getResources(), world.model.currentMap);
}
return result;
}
@@ -151,9 +151,9 @@ public final class WorldSetup {
world.model = new ModelContainer();
world.model.player.initializeNewPlayer(world.itemTypes, world.dropLists, newHeroName);
view.actorStatsController.recalculatePlayerStats(world.model.player);
view.movementController.respawnPlayer(ctx.getResources());
view.controller.lotsOfTimePassed();
controllers.actorStatsController.recalculatePlayerStats(world.model.player);
controllers.movementController.respawnPlayer(ctx.getResources());
controllers.mapController.lotsOfTimePassed();
}

View File

@@ -32,7 +32,7 @@ import android.widget.TextView.BufferType;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.ConversationController;
import com.gpl.rpg.AndorsTrail.conversation.ConversationCollection;
@@ -51,7 +51,7 @@ public final class ConversationActivity extends Activity implements OnKeyListene
private static final int NPCConversationColor = Color.argb(255, 0xbb, 0xbb, 0x22);
private WorldContext world;
private ViewContext view;
private ControllerContext controllers;
private Player player;
private String phraseID;
private Phrase phrase;
@@ -74,7 +74,7 @@ public final class ConversationActivity extends Activity implements OnKeyListene
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
if (!app.isInitialized()) { finish(); return; }
this.world = app.getWorld();
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
this.player = world.model.player;
requestWindowFeature(Window.FEATURE_NO_TITLE);
@@ -241,7 +241,7 @@ public final class ConversationActivity extends Activity implements OnKeyListene
ConversationController.PhraseRewards phraseRewards = null;
if (applyPhraseRewards) {
phraseRewards = view.conversationController.applyPhraseRewards(player, phrase);
phraseRewards = controllers.conversationController.applyPhraseRewards(player, phrase);
}
if (phrase.message == null) {

View File

@@ -9,19 +9,19 @@ import android.widget.Toast;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
@SuppressWarnings("unused")
public final class DebugInterface {
private final ViewContext viewContext;
private final ControllerContext controllerContext;
private final MainActivity mainActivity;
private final Resources res;
private final WorldContext world;
public DebugInterface(ViewContext view, WorldContext world, MainActivity mainActivity) {
this.viewContext = view;
public DebugInterface(ControllerContext controllers, WorldContext world, MainActivity mainActivity) {
this.controllerContext = controllers;
this.world = world;
this.res = mainActivity.getResources();
this.mainActivity = mainActivity;
@@ -97,13 +97,13 @@ public final class DebugInterface {
player.addQuestProgress(new QuestProgress("bwm_agent", 50));
player.addQuestProgress(new QuestProgress("bwm_agent", 60));
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "blackwater_mountain45", "south", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "blackwater_mountain45", "south", 0, 0);
}
})*/
/*,new DebugButton("prim", new OnClickListener() {
@Override
public void onClick(View arg0) {
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "blackwater_mountain29", "south", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "blackwater_mountain29", "south", 0, 0);
}
})*/
/*,new DebugButton("exp+=10000", new OnClickListener() {
@@ -128,7 +128,7 @@ public final class DebugInterface {
public void onClick(View arg0) {
world.model.player.baseTraits.maxHP = 200;
world.model.player.health.max = world.model.player.baseTraits.maxHP;
viewContext.actorStatsController.setActorMaxHealth(world.model.player);
controllerContext.actorStatsController.setActorMaxHealth(world.model.player);
world.model.player.conditions.clear();
mainActivity.showToast("DEBUG: hp set to max", Toast.LENGTH_SHORT);
}
@@ -137,37 +137,37 @@ public final class DebugInterface {
,new DebugButton("cg", new OnClickListener() {
@Override
public void onClick(View arg0) {
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "crossglen", "hall", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "crossglen", "hall", 0, 0);
}
})
,new DebugButton("vg", new OnClickListener() {
@Override
public void onClick(View arg0) {
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "vilegard_s", "tavern", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "vilegard_s", "tavern", 0, 0);
}
})
,new DebugButton("cr", new OnClickListener() {
@Override
public void onClick(View arg0) {
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "houseatcrossroads4", "down", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "houseatcrossroads4", "down", 0, 0);
}
})
,new DebugButton("lf", new OnClickListener() {
@Override
public void onClick(View arg0) {
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "loneford9", "south", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "loneford9", "south", 0, 0);
}
})
,new DebugButton("fh", new OnClickListener() {
@Override
public void onClick(View arg0) {
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "fallhaven_ne", "clothes", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "fallhaven_ne", "clothes", 0, 0);
}
})
,new DebugButton("rc", new OnClickListener() {
@Override
public void onClick(View arg0) {
viewContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "roadtocarntower1", "left3", 0, 0);
controllerContext.movementController.placePlayerAt(MapObject.MAPEVENT_NEWMAP, "roadtocarntower1", "left3", 0, 0);
}
})
*/

View File

@@ -3,7 +3,7 @@ package com.gpl.rpg.AndorsTrail.activity;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.ItemController;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
@@ -31,7 +31,7 @@ import android.widget.AdapterView.OnItemClickListener;
public final class HeroinfoActivity_Inventory extends Activity {
private WorldContext world;
private ViewContext view;
private ControllerContext controllers;
private TileCollection wornTiles;
private Player player;
@@ -52,7 +52,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
if (!app.isInitialized()) { finish(); return; }
this.world = app.getWorld();
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
this.player = world.model.player;
setContentView(R.layout.heroinfo_inventory);
@@ -116,12 +116,12 @@ public final class HeroinfoActivity_Inventory extends Activity {
ItemType itemType = world.itemTypes.getItemType(data.getExtras().getString("itemTypeID"));
int actionType = data.getExtras().getInt("actionType");
if (actionType == ItemInfoActivity.ITEMACTION_UNEQUIP) {
view.itemController.unequipSlot(itemType, data.getExtras().getInt("inventorySlot"));
controllers.itemController.unequipSlot(itemType, data.getExtras().getInt("inventorySlot"));
} else if (actionType == ItemInfoActivity.ITEMACTION_EQUIP) {
int slot = suggestInventorySlot(itemType);
view.itemController.equipItem(itemType, slot);
controllers.itemController.equipItem(itemType, slot);
} else if (actionType == ItemInfoActivity.ITEMACTION_USE) {
view.itemController.useItem(itemType);
controllers.itemController.useItem(itemType);
}
break;
case MainActivity.INTENTREQUEST_BULKSELECT_DROP:
@@ -149,7 +149,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
private void dropItem(String itemTypeID, int quantity) {
ItemType itemType = world.itemTypes.getItemType(itemTypeID);
view.itemController.dropItem(itemType, quantity);
controllers.itemController.dropItem(itemType, quantity);
}
private void update() {
@@ -227,7 +227,7 @@ public final class HeroinfoActivity_Inventory extends Activity {
switch (item.getItemId()) {
case R.id.inv_menu_info:
showInventoryItemInfo(getSelectedItemType(info));
//context.controller.itemInfo(this, getSelectedItemType(info));
//context.mapController.itemInfo(this, getSelectedItemType(info));
break;
case R.id.inv_menu_drop:
String itemTypeID = getSelectedItemType(info).id;
@@ -240,29 +240,29 @@ public final class HeroinfoActivity_Inventory extends Activity {
break;
case R.id.inv_menu_equip:
itemType = getSelectedItemType(info);
view.itemController.equipItem(itemType, itemType.category.inventorySlot);
controllers.itemController.equipItem(itemType, itemType.category.inventorySlot);
break;
case R.id.inv_menu_equip_offhand:
itemType = getSelectedItemType(info);
view.itemController.equipItem(itemType, itemType.category.inventorySlot + 1);
controllers.itemController.equipItem(itemType, itemType.category.inventorySlot + 1);
break;
/*case R.id.inv_menu_unequip:
context.controller.unequipItem(this, getSelectedItemType(info));
context.mapController.unequipItem(this, getSelectedItemType(info));
break;*/
case R.id.inv_menu_use:
view.itemController.useItem(getSelectedItemType(info));
controllers.itemController.useItem(getSelectedItemType(info));
break;
case R.id.inv_menu_assign:
lastSelectedItem = getSelectedItemType(info);
break;
case R.id.inv_assign_slot1:
view.itemController.setQuickItem(lastSelectedItem, 0);
controllers.itemController.setQuickItem(lastSelectedItem, 0);
break;
case R.id.inv_assign_slot2:
view.itemController.setQuickItem(lastSelectedItem, 1);
controllers.itemController.setQuickItem(lastSelectedItem, 1);
break;
case R.id.inv_assign_slot3:
view.itemController.setQuickItem(lastSelectedItem, 2);
controllers.itemController.setQuickItem(lastSelectedItem, 2);
break;
case R.id.inv_menu_movetop:
player.inventory.sortToTop(getSelectedItemType(info).id);

View File

@@ -11,14 +11,14 @@ import android.widget.TextView;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.view.SkillListAdapter;
public final class HeroinfoActivity_Skills extends Activity {
private WorldContext world;
private ViewContext view;
private ControllerContext controllers;
private Player player;
@@ -30,7 +30,7 @@ public final class HeroinfoActivity_Skills extends Activity {
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
if (!app.isInitialized()) { finish(); return; }
this.world = app.getWorld();
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
this.player = world.model.player;
setContentView(R.layout.heroinfo_skill_list);
@@ -60,7 +60,7 @@ public final class HeroinfoActivity_Skills extends Activity {
if (resultCode != RESULT_OK) break;
int skillID = data.getExtras().getInt("skillID");
view.skillController.levelUpSkillManually(player, world.skills.getSkill(skillID));
controllers.skillController.levelUpSkillManually(player, world.skills.getSkill(skillID));
break;
}
}

View File

@@ -11,7 +11,7 @@ import android.widget.TextView;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.ActorStatsController;
import com.gpl.rpg.AndorsTrail.controller.Constants;
@@ -19,7 +19,7 @@ import com.gpl.rpg.AndorsTrail.model.actor.Player;
public final class LevelUpActivity extends Activity {
private WorldContext world;
private ViewContext view;
private ControllerContext controllers;
private Player player;
private TextView levelup_description;
private TextView levelup_title;
@@ -31,7 +31,7 @@ public final class LevelUpActivity extends Activity {
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
if (!app.isInitialized()) { finish(); return; }
this.world = app.getWorld();
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
this.player = world.model.player;
requestWindowFeature(Window.FEATURE_NO_TITLE);
@@ -103,7 +103,7 @@ public final class LevelUpActivity extends Activity {
public void levelup(int selectionID) {
if (LevelUpActivity.this.isFinishing()) return;
view.actorStatsController.addLevelupEffect(player, selectionID);
controllers.actorStatsController.addLevelupEffect(player, selectionID);
finish();
}
}

View File

@@ -7,8 +7,8 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.savegames.Savegames;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.CombatController;
import com.gpl.rpg.AndorsTrail.controller.MovementController;
@@ -61,7 +61,7 @@ public final class MainActivity extends Activity implements PlayerMovementListen
public static final int INTENTREQUEST_BULKSELECT_DROP = 11;
public static final int INTENTREQUEST_SKILLINFO = 12;
private ViewContext view;
private ControllerContext controllers;
private WorldContext world;
private MainView mainview;
@@ -86,7 +86,7 @@ public final class MainActivity extends Activity implements PlayerMovementListen
if (!app.isInitialized()) { finish(); return; }
AndorsTrailPreferences preferences = app.getPreferences();
this.world = app.getWorld();
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
app.setWindowParameters(this);
setContentView(R.layout.main);
@@ -94,7 +94,7 @@ public final class MainActivity extends Activity implements PlayerMovementListen
statusview = (StatusView) findViewById(R.id.main_statusview);
combatview = (CombatView) findViewById(R.id.main_combatview);
quickitemview = (QuickitemView) findViewById(R.id.main_quickitemview);
activeConditions = new DisplayActiveActorConditionIcons(view, world, this, (RelativeLayout) findViewById(R.id.statusview_activeconditions));
activeConditions = new DisplayActiveActorConditionIcons(controllers, world, this, (RelativeLayout) findViewById(R.id.statusview_activeconditions));
dpad = (VirtualDpadView) findViewById(R.id.main_virtual_dpad);
toolboxview = (ToolboxView) findViewById(R.id.main_toolboxview);
statusview.registerToolboxViews(toolboxview, quickitemview);
@@ -109,7 +109,7 @@ public final class MainActivity extends Activity implements PlayerMovementListen
clearMessages();
if (AndorsTrailApplication.DEVELOPMENT_DEBUGBUTTONS)
new DebugInterface(view, world, this).addDebugButtons();
new DebugInterface(controllers, world, this).addDebugButtons();
quickitemview.setVisibility(View.GONE);
quickitemview.registerForContextMenu(this);
@@ -130,9 +130,9 @@ public final class MainActivity extends Activity implements PlayerMovementListen
switch (requestCode) {
case INTENTREQUEST_MONSTERENCOUNTER:
if (resultCode == Activity.RESULT_OK) {
view.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
controllers.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
} else {
view.combatController.exitCombat(false);
controllers.combatController.exitCombat(false);
}
break;
case INTENTREQUEST_CONVERSATION:
@@ -142,13 +142,13 @@ public final class MainActivity extends Activity implements PlayerMovementListen
Monster m = world.model.currentMap.getMonsterAt(p);
if (m == null) return; //Shouldn't happen.
m.forceAggressive();
view.combatController.setCombatSelection(m, p);
view.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
controllers.combatController.setCombatSelection(m, p);
controllers.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
} else if (resultCode == ConversationActivity.ACTIVITYRESULT_REMOVE) {
final Coord p = world.model.player.nextPosition;
Monster m = world.model.currentMap.getMonsterAt(p);
if (m == null) return;
view.monsterSpawnController.remove(world.model.currentMap, m);
controllers.monsterSpawnController.remove(world.model.currentMap, m);
}
break;
case INTENTREQUEST_PREFERENCES:
@@ -178,8 +178,8 @@ public final class MainActivity extends Activity implements PlayerMovementListen
@Override
protected void onPause() {
super.onPause();
view.gameRoundController.pause();
view.movementController.stopMovement();
controllers.gameRoundController.pause();
controllers.movementController.stopMovement();
unsubscribeFromModel();
@@ -193,11 +193,11 @@ public final class MainActivity extends Activity implements PlayerMovementListen
subscribeToModelChanges();
view.gameRoundController.resume();
controllers.gameRoundController.resume();
if (world.model.uiSelections.isInCombat) {
view.combatController.setCombatSelection(world.model.uiSelections.selectedMonster, world.model.uiSelections.selectedPosition);
view.combatController.enterCombat(CombatController.BEGIN_TURN_CONTINUE);
controllers.combatController.setCombatSelection(world.model.uiSelections.selectedMonster, world.model.uiSelections.selectedPosition);
controllers.combatController.enterCombat(CombatController.BEGIN_TURN_CONTINUE);
}
updateStatus();
}
@@ -208,17 +208,17 @@ public final class MainActivity extends Activity implements PlayerMovementListen
mainview.unsubscribe();
quickitemview.unsubscribe();
statusview.unsubscribe();
view.movementController.playerMovementListeners.remove(this);
view.combatController.combatActionListeners.remove(this);
view.combatController.combatTurnListeners.remove(this);
view.controller.worldEventListeners.remove(this);
controllers.movementController.playerMovementListeners.remove(this);
controllers.combatController.combatActionListeners.remove(this);
controllers.combatController.combatTurnListeners.remove(this);
controllers.mapController.worldEventListeners.remove(this);
}
private void subscribeToModelChanges() {
view.controller.worldEventListeners.add(this);
view.combatController.combatTurnListeners.add(this);
view.combatController.combatActionListeners.add(this);
view.movementController.playerMovementListeners.add(this);
controllers.mapController.worldEventListeners.add(this);
controllers.combatController.combatTurnListeners.add(this);
controllers.combatController.combatActionListeners.add(this);
controllers.movementController.playerMovementListeners.add(this);
statusview.subscribe();
quickitemview.subscribe();
mainview.subscribe();
@@ -242,7 +242,7 @@ public final class MainActivity extends Activity implements PlayerMovementListen
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem arg0) {
Dialogs.showSave(MainActivity.this, view, world);
Dialogs.showSave(MainActivity.this, controllers, world);
return true;
}
});
@@ -282,13 +282,13 @@ public final class MainActivity extends Activity implements PlayerMovementListen
QuickButtonContextMenuInfo menuInfo;
if(item.getGroupId() == R.id.quick_menu_assign_group){
menuInfo = (QuickButtonContextMenuInfo) lastSelectedMenu;
view.itemController.setQuickItem(world.model.player.inventory.items.get(item.getItemId()).itemType, menuInfo.index);
controllers.itemController.setQuickItem(world.model.player.inventory.items.get(item.getItemId()).itemType, menuInfo.index);
return true;
}
switch(item.getItemId()){
case R.id.quick_menu_unassign:
menuInfo = (QuickButtonContextMenuInfo) item.getMenuInfo();
view.itemController.setQuickItem(null, menuInfo.index);
controllers.itemController.setQuickItem(null, menuInfo.index);
break;
case R.id.quick_menu_assign:
menuInfo = (QuickButtonContextMenuInfo) item.getMenuInfo();
@@ -405,38 +405,38 @@ public final class MainActivity extends Activity implements PlayerMovementListen
@Override
public void onPlayerStartedConversation(Monster m, String phraseID) {
Dialogs.showConversation(this, view, phraseID, m);
Dialogs.showConversation(this, controllers, phraseID, m);
}
@Override
public void onPlayerSteppedOnMonster(Monster m) {
Dialogs.showMonsterEncounter(this, view, m);
Dialogs.showMonsterEncounter(this, controllers, m);
}
@Override
public void onPlayerSteppedOnMapSignArea(MapObject area) {
Dialogs.showMapSign(this, view, area.id);
Dialogs.showMapSign(this, controllers, area.id);
}
@Override
public void onPlayerSteppedOnKeyArea(MapObject area) {
Dialogs.showKeyArea(this, view, area.id);
Dialogs.showKeyArea(this, controllers, area.id);
}
@Override
public void onPlayerSteppedOnRestArea(MapObject area) {
Dialogs.showConfirmRest(this, view, area);
Dialogs.showConfirmRest(this, controllers, area);
}
@Override
public void onPlayerSteppedOnGroundLoot(Loot loot) {
final String msg = Dialogs.getGroundLootMessage(this, loot);
Dialogs.showGroundLoot(this, view, world, loot, msg);
Dialogs.showGroundLoot(this, controllers, world, loot, msg);
}
@Override
public void onPlayerPickedUpGroundLoot(Loot loot) {
if (view.preferences.displayLoot == AndorsTrailPreferences.DISPLAYLOOT_NONE) return;
if (controllers.preferences.displayLoot == AndorsTrailPreferences.DISPLAYLOOT_NONE) return;
final String msg = Dialogs.getGroundLootMessage(this, loot);
showToast(msg, Toast.LENGTH_LONG);
@@ -446,12 +446,12 @@ public final class MainActivity extends Activity implements PlayerMovementListen
public void onPlayerFoundMonsterLoot(Collection<Loot> loot, int exp) {
final Loot combinedLoot = Loot.combine(loot);
final String msg = Dialogs.getMonsterLootMessage(this, combinedLoot, exp);
Dialogs.showMonsterLoot(this, view, world, loot, combinedLoot, msg);
Dialogs.showMonsterLoot(this, controllers, world, loot, combinedLoot, msg);
}
@Override
public void onPlayerPickedUpMonsterLoot(Collection<Loot> loot, int exp) {
if (view.preferences.displayLoot == AndorsTrailPreferences.DISPLAYLOOT_NONE) return;
if (controllers.preferences.displayLoot == AndorsTrailPreferences.DISPLAYLOOT_NONE) return;
final Loot combinedLoot = Loot.combine(loot);
final String msg = Dialogs.getMonsterLootMessage(this, combinedLoot, exp);
@@ -460,7 +460,7 @@ public final class MainActivity extends Activity implements PlayerMovementListen
@Override
public void onPlayerRested() {
Dialogs.showRested(this, view);
Dialogs.showRested(this, controllers);
}
@Override

View File

@@ -11,7 +11,7 @@ import android.widget.TextView;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
@@ -23,7 +23,7 @@ public final class MonsterEncounterActivity extends Activity {
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
if (!app.isInitialized()) { finish(); return; }
final WorldContext world = app.getWorld();
final ViewContext view = app.getViewContext();
final ControllerContext controllers = app.getControllerContext();
requestWindowFeature(Window.FEATURE_NO_TITLE);
@@ -35,7 +35,7 @@ public final class MonsterEncounterActivity extends Activity {
setContentView(R.layout.monsterencounter);
CharSequence difficulty = getText(MonsterInfoActivity.getMonsterDifficultyResource(view, monster));
CharSequence difficulty = getText(MonsterInfoActivity.getMonsterDifficultyResource(controllers, monster));
TextView tv = (TextView) findViewById(R.id.monsterencounter_title);
tv.setText(monster.getName());

View File

@@ -11,7 +11,7 @@ import android.widget.TextView;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
@@ -21,7 +21,7 @@ import com.gpl.rpg.AndorsTrail.view.TraitsInfoView;
public final class MonsterInfoActivity extends Activity {
private WorldContext world;
private ViewContext view;
private ControllerContext controllers;
private TextView monsterinfo_title;
private TextView monsterinfo_difficulty;
@@ -37,7 +37,7 @@ public final class MonsterInfoActivity extends Activity {
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
if (!app.isInitialized()) { finish(); return; }
this.world = app.getWorld();
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.monsterinfo);
@@ -77,7 +77,7 @@ public final class MonsterInfoActivity extends Activity {
private void updateTitle(Monster monster) {
monsterinfo_title.setText(monster.getName());
world.tileManager.setImageViewTile(getResources(), monsterinfo_title, monster);
monsterinfo_difficulty.setText(getMonsterDifficultyResource(view, monster));
monsterinfo_difficulty.setText(getMonsterDifficultyResource(controllers, monster));
}
private void updateTraits(Monster monster) {
@@ -92,8 +92,8 @@ public final class MonsterInfoActivity extends Activity {
monsterinfo_max_ap.setText(Integer.toString(monster.getMaxAP()));
}
public static int getMonsterDifficultyResource(ViewContext viewContext, Monster monster) {
final int difficulty = viewContext.combatController.getMonsterDifficulty(monster);
public static int getMonsterDifficultyResource(ControllerContext controllerContext, Monster monster) {
final int difficulty = controllerContext.combatController.getMonsterDifficulty(monster);
if (difficulty >= 80) return R.string.monster_difficulty_veryeasy;
if (difficulty >= 60) return R.string.monster_difficulty_easy;
if (difficulty >= 40) return R.string.monster_difficulty_normal;

View File

@@ -8,7 +8,7 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.controller.ActorStatsController;
import com.gpl.rpg.AndorsTrail.controller.CombatController;
import com.gpl.rpg.AndorsTrail.controller.Controller;
import com.gpl.rpg.AndorsTrail.controller.MapController;
import com.gpl.rpg.AndorsTrail.controller.ConversationController;
import com.gpl.rpg.AndorsTrail.controller.GameRoundController;
import com.gpl.rpg.AndorsTrail.controller.MonsterSpawningController;
@@ -19,9 +19,9 @@ import com.gpl.rpg.AndorsTrail.controller.MonsterMovementController;
import com.gpl.rpg.AndorsTrail.controller.MovementController;
import com.gpl.rpg.AndorsTrail.controller.InputController;
public final class ViewContext {
public final class ControllerContext {
//Controllers
public final Controller controller;
public final MapController mapController;
public final GameRoundController gameRoundController;
public final CombatController combatController;
public final ConversationController conversationController;
@@ -37,11 +37,11 @@ public final class ViewContext {
public final AndorsTrailPreferences preferences;
private final WeakReference<AndorsTrailApplication> app;
public ViewContext(AndorsTrailApplication app, WorldContext world) {
public ControllerContext(AndorsTrailApplication app, WorldContext world) {
this.app = new WeakReference<AndorsTrailApplication>(app);
this.preferences = app.getPreferences();
this.controller = new Controller(this, world);
this.mapController = new MapController(this, world);
this.gameRoundController = new GameRoundController(this, world);
this.combatController = new CombatController(this, world);
this.conversationController = new ConversationController(this, world);

View File

@@ -3,7 +3,7 @@ package com.gpl.rpg.AndorsTrail.controller;
import java.util.ArrayList;
import com.gpl.rpg.AndorsTrail.VisualEffectCollection;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.listeners.PlayerStatsListeners;
import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
@@ -25,14 +25,14 @@ import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
public final class ActorStatsController {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public final ActorConditionListeners actorConditionListeners = new ActorConditionListeners();
public final ActorStatsListeners actorStatsListeners = new ActorStatsListeners();
public final PlayerStatsListeners playerStatsListeners = new PlayerStatsListeners();
public ActorStatsController(ViewContext context, WorldContext world) {
this.view = context;
public ActorStatsController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -193,8 +193,8 @@ public final class ActorStatsController {
public void recalculatePlayerStats(Player player) {
player.resetStatsToBaseTraits();
player.recalculateLevelExperience();
view.itemController.applyInventoryEffects(player);
view.skillController.applySkillEffects(player);
controllers.itemController.applyInventoryEffects(player);
controllers.skillController.applySkillEffects(player);
applyEffectsFromCurrentConditions(player);
ItemController.recalculateHitEffectsFromWornItems(player);
capActorHealthAtMax(player);
@@ -217,7 +217,7 @@ public final class ActorStatsController {
applyStatsEffects(player, isFullRound);
if (player.isDead()) {
view.controller.handlePlayerDeath();
controllers.mapController.handlePlayerDeath();
return;
}
@@ -269,7 +269,7 @@ public final class ActorStatsController {
if (monster.conditions.isEmpty()) return;
applyStatsEffects(monster, isFullRound);
if (monster.isDead()) {
view.combatController.playerKilledMonster(monster);
controllers.combatController.playerKilledMonster(monster);
return;
}
@@ -344,7 +344,7 @@ public final class ActorStatsController {
private void startVisualEffect(Actor actor, VisualEffect effectToStart) {
if (effectToStart == null) return;
view.effectController.startEffect(
controllers.effectController.startEffect(
actor.position
, effectToStart.visualEffectID
, effectToStart.effectValue

View File

@@ -8,7 +8,7 @@ import android.util.FloatMath;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.VisualEffectCollection;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.VisualEffectCompletedCallback;
import com.gpl.rpg.AndorsTrail.controller.listeners.CombatActionListeners;
@@ -26,7 +26,7 @@ import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
import com.gpl.rpg.AndorsTrail.util.Coord;
public final class CombatController implements VisualEffectCompletedCallback {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public final CombatSelectionListeners combatSelectionListeners = new CombatSelectionListeners();
public final CombatActionListeners combatActionListeners = new CombatActionListeners();
@@ -36,8 +36,8 @@ public final class CombatController implements VisualEffectCompletedCallback {
private final ArrayList<Loot> killedMonsterBags = new ArrayList<Loot>();
private int totalExpThisFight = 0;
public CombatController(ViewContext view, WorldContext world) {
this.view = view;
public CombatController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -61,10 +61,10 @@ public final class CombatController implements VisualEffectCompletedCallback {
world.model.uiSelections.selectedPosition = null;
world.model.uiSelections.selectedMonster = null;
if (killedMonsterBags.isEmpty()) {
view.gameRoundController.resume();
controllers.gameRoundController.resume();
} else {
if (pickupLootBags) {
view.itemController.lootMonsterBags(killedMonsterBags, totalExpThisFight);
controllers.itemController.lootMonsterBags(killedMonsterBags, totalExpThisFight);
}
killedMonsterBags.clear();
}
@@ -115,7 +115,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
}
private boolean useAPs(int cost) {
if (view.actorStatsController.useAPs(world.model.player, cost)) {
if (controllers.actorStatsController.useAPs(world.model.player, cost)) {
return true;
} else {
combatActionListeners.onPlayerDoesNotHaveEnoughAP();
@@ -149,7 +149,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
private void executeFlee(int dx, int dy) {
// avoid monster fields when fleeing
if (!view.movementController.findWalkablePosition(dx, dy, AndorsTrailPreferences.MOVEMENTAGGRESSIVENESS_DEFENSIVE)) return;
if (!controllers.movementController.findWalkablePosition(dx, dy, AndorsTrailPreferences.MOVEMENTAGGRESSIVENESS_DEFENSIVE)) return;
Monster m = world.model.currentMap.getMonsterAt(world.model.player.nextPosition);
if (m != null) return;
executeCombatMove(world.model.player.nextPosition);
@@ -157,7 +157,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
private AttackResult lastAttackResult;
private void executePlayerAttack() {
if (view.effectController.isRunningVisualEffect()) return;
if (controllers.effectController.isRunningVisualEffect()) return;
if (!useAPs(world.model.player.getAttackCost())) return;
final Monster target = world.model.uiSelections.selectedMonster;
@@ -198,18 +198,18 @@ public final class CombatController implements VisualEffectCompletedCallback {
Loot loot = world.model.currentMap.getBagOrCreateAt(killedMonster.position);
killedMonster.createLoot(loot, player);
view.monsterSpawnController.remove(world.model.currentMap, killedMonster);
view.effectController.addSplatter(world.model.currentMap, killedMonster);
controllers.monsterSpawnController.remove(world.model.currentMap, killedMonster);
controllers.effectController.addSplatter(world.model.currentMap, killedMonster);
view.actorStatsController.addActorAP(player, player.getSkillLevel(SkillCollection.SKILL_CLEAVE) * SkillCollection.PER_SKILLPOINT_INCREASE_CLEAVE_AP);
view.actorStatsController.addActorHealth(player, player.getSkillLevel(SkillCollection.SKILL_EATER) * SkillCollection.PER_SKILLPOINT_INCREASE_EATER_HEALTH);
controllers.actorStatsController.addActorAP(player, player.getSkillLevel(SkillCollection.SKILL_CLEAVE) * SkillCollection.PER_SKILLPOINT_INCREASE_CLEAVE_AP);
controllers.actorStatsController.addActorHealth(player, player.getSkillLevel(SkillCollection.SKILL_EATER) * SkillCollection.PER_SKILLPOINT_INCREASE_EATER_HEALTH);
world.model.statistics.addMonsterKill(killedMonster.getMonsterTypeID());
view.actorStatsController.addExperience(loot.exp);
controllers.actorStatsController.addExperience(loot.exp);
totalExpThisFight += loot.exp;
loot.exp = 0;
view.actorStatsController.applyKillEffectsToPlayer(player);
controllers.actorStatsController.applyKillEffectsToPlayer(player);
if (!loot.hasItems()) {
world.model.currentMap.removeGroundLoot(loot);
@@ -248,7 +248,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
}
world.model.player.nextPosition.set(dest);
view.movementController.moveToNextIfPossible(false);
controllers.movementController.moveToNextIfPossible(false);
if (canExitCombat()) exitCombat(true);
@@ -268,22 +268,22 @@ public final class CombatController implements VisualEffectCompletedCallback {
}
};
private void waitForNextMonsterAction() {
if (view.preferences.attackspeed_milliseconds <= 0) {
if (controllers.preferences.attackspeed_milliseconds <= 0) {
handleNextMonsterAction();
} else {
monsterTurnHandler.sendEmptyMessageDelayed(0, view.preferences.attackspeed_milliseconds);
monsterTurnHandler.sendEmptyMessageDelayed(0, controllers.preferences.attackspeed_milliseconds);
}
}
public void beginMonsterTurn(boolean isFirstRound) {
view.actorStatsController.setActorMinAP(world.model.player);
controllers.actorStatsController.setActorMinAP(world.model.player);
world.model.uiSelections.isPlayersCombatTurn = false;
for (MonsterSpawnArea a : world.model.currentMap.spawnAreas) {
for (Monster m : a.monsters) {
view.actorStatsController.setActorMaxAP(m);
controllers.actorStatsController.setActorMaxAP(m);
}
}
if (!isFirstRound) view.gameRoundController.onNewMonsterRound();
if (!isFirstRound) controllers.gameRoundController.onNewMonsterRound();
handleNextMonsterAction();
}
@@ -312,7 +312,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
endMonsterTurn();
return;
}
view.actorStatsController.useAPs(currentActiveMonster, currentActiveMonster.getAttackCost());
controllers.actorStatsController.useAPs(currentActiveMonster, currentActiveMonster.getAttackCost());
combatTurnListeners.onMonsterIsAttacking(currentActiveMonster);
AttackResult attack = monsterAttacks(currentActiveMonster);
@@ -343,18 +343,18 @@ public final class CombatController implements VisualEffectCompletedCallback {
private void monsterAttackCompleted() {
if (lastAttackResult.targetDied) {
view.controller.handlePlayerDeath();
controllers.mapController.handlePlayerDeath();
return;
}
handleNextMonsterAction();
}
private void startAttackEffect(AttackResult attack, final Coord position, VisualEffectCompletedCallback callback, int callbackValue) {
if (view.preferences.attackspeed_milliseconds <= 0) {
if (controllers.preferences.attackspeed_milliseconds <= 0) {
callback.onVisualEffectCompleted(callbackValue);
return;
}
view.effectController.startEffect(
controllers.effectController.startEffect(
position
, VisualEffectCollection.EFFECT_BLOOD
, attack.damage
@@ -367,8 +367,8 @@ public final class CombatController implements VisualEffectCompletedCallback {
}
private void newPlayerTurn(boolean isFirstRound) {
view.actorStatsController.setActorMaxAP(world.model.player);
if (!isFirstRound) view.gameRoundController.onNewPlayerRound();
controllers.actorStatsController.setActorMaxAP(world.model.player);
if (!isFirstRound) controllers.gameRoundController.onNewPlayerRound();
world.model.uiSelections.isPlayersCombatTurn = true;
combatTurnListeners.onNewPlayerTurn();
}
@@ -413,13 +413,13 @@ public final class CombatController implements VisualEffectCompletedCallback {
private AttackResult playerAttacks(Monster currentMonster) {
AttackResult result = attack(world.model.player, currentMonster);
view.skillController.applySkillEffectsFromPlayerAttack(result, currentMonster);
controllers.skillController.applySkillEffectsFromPlayerAttack(result, currentMonster);
return result;
}
private AttackResult monsterAttacks(Monster currentMonster) {
AttackResult result = attack(currentMonster, world.model.player);
view.skillController.applySkillEffectsFromMonsterAttack(result, currentMonster);
controllers.skillController.applySkillEffectsFromMonsterAttack(result, currentMonster);
return result;
}
@@ -447,7 +447,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
}
damage -= target.getDamageResistance();
if (damage < 0) damage = 0;
view.actorStatsController.removeActorHealth(target, damage);
controllers.actorStatsController.removeActorHealth(target, damage);
applyAttackHitStatusEffects(attacker, target);
@@ -459,7 +459,7 @@ public final class CombatController implements VisualEffectCompletedCallback {
if (onHitEffects == null) return;
for (ItemTraits_OnUse e : onHitEffects) {
view.actorStatsController.applyUseEffect(attacker, target, e);
controllers.actorStatsController.applyUseEffect(attacker, target, e);
}
}

View File

@@ -1,6 +1,6 @@
package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.conversation.Phrase;
import com.gpl.rpg.AndorsTrail.conversation.Phrase.Reply;
@@ -20,11 +20,11 @@ import java.util.ArrayList;
public final class ConversationController {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public ConversationController(ViewContext view, WorldContext world) {
this.view = view;
public ConversationController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -51,13 +51,13 @@ public final class ConversationController {
ActorConditionType conditionType = world.actorConditionsTypes.getActorConditionType(reward.rewardID);
ActorConditionEffect e = new ActorConditionEffect(conditionType, magnitude, duration, always);
view.actorStatsController.applyActorCondition(player, e);
controllers.actorStatsController.applyActorCondition(player, e);
result.actorConditions.add(e);
break;
case Reward.REWARD_TYPE_SKILL_INCREASE:
int skillID = Integer.parseInt(reward.rewardID);
SkillInfo skill = world.skills.getSkill(skillID);
boolean addedSkill = view.skillController.levelUpSkillByQuest(player, skill);
boolean addedSkill = controllers.skillController.levelUpSkillByQuest(player, skill);
if (addedSkill) {
result.skillIncrease.add(skill);
}
@@ -83,7 +83,7 @@ public final class ConversationController {
}
player.inventory.add(result.loot);
view.actorStatsController.addExperience(result.loot.exp);
controllers.actorStatsController.addExperience(result.loot.exp);
return result;
}

View File

@@ -1,19 +1,19 @@
package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.GameRoundListeners;
import com.gpl.rpg.AndorsTrail.util.TimedMessageTask;
public final class GameRoundController implements TimedMessageTask.Callback {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
private final TimedMessageTask roundTimer;
public final GameRoundListeners gameRoundListeners = new GameRoundListeners();
public GameRoundController(ViewContext context, WorldContext world) {
this.view = context;
public GameRoundController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
this.roundTimer = new TimedMessageTask(this, Constants.TICK_DELAY, true);
}
@@ -64,9 +64,9 @@ public final class GameRoundController implements TimedMessageTask.Callback {
}
public void onNewFullRound() {
view.controller.resetMapsNotRecentlyVisited();
view.actorStatsController.applyConditionsToMonsters(world.model.currentMap, true);
view.actorStatsController.applyConditionsToPlayer(world.model.player, true);
controllers.mapController.resetMapsNotRecentlyVisited();
controllers.actorStatsController.applyConditionsToMonsters(world.model.currentMap, true);
controllers.actorStatsController.applyConditionsToPlayer(world.model.player, true);
gameRoundListeners.onNewFullRound();
}
@@ -76,18 +76,18 @@ public final class GameRoundController implements TimedMessageTask.Callback {
gameRoundListeners.onNewRound();
}
public void onNewPlayerRound() {
view.actorStatsController.applyConditionsToPlayer(world.model.player, false);
view.actorStatsController.applySkillEffectsForNewRound(world.model.player, world.model.currentMap);
controllers.actorStatsController.applyConditionsToPlayer(world.model.player, false);
controllers.actorStatsController.applySkillEffectsForNewRound(world.model.player, world.model.currentMap);
}
public void onNewMonsterRound() {
view.actorStatsController.applyConditionsToMonsters(world.model.currentMap, false);
controllers.actorStatsController.applyConditionsToMonsters(world.model.currentMap, false);
}
private void onNewTick() {
view.monsterMovementController.moveMonsters();
view.monsterSpawnController.maybeSpawn(world.model.currentMap);
view.monsterMovementController.attackWithAgressiveMonsters();
view.effectController.updateSplatters(world.model.currentMap);
controllers.monsterMovementController.moveMonsters();
controllers.monsterSpawnController.maybeSpawn(world.model.currentMap);
controllers.monsterMovementController.attackWithAgressiveMonsters();
controllers.effectController.updateSplatters(world.model.currentMap);
gameRoundListeners.onNewTick();
}
}

View File

@@ -5,12 +5,12 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.util.Coord;
public final class InputController implements OnClickListener, OnLongClickListener{
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
private final Coord lastTouchPosition_tileCoords = new Coord();
@@ -18,8 +18,8 @@ public final class InputController implements OnClickListener, OnLongClickListen
private int lastTouchPosition_dy = 0;
private long lastTouchEventTime = 0;
public InputController(ViewContext view, WorldContext world) {
this.view = view;
public InputController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -52,14 +52,14 @@ public final class InputController implements OnClickListener, OnLongClickListen
public void onRelativeMovement(int dx, int dy) {
if (!allowInputInterval()) return;
if (world.model.uiSelections.isInCombat) {
view.combatController.executeMoveAttack(dx, dy);
controllers.combatController.executeMoveAttack(dx, dy);
} else {
view.movementController.startMovement(dx, dy, null);
controllers.movementController.startMovement(dx, dy, null);
}
}
public void onKeyboardCancel() {
view.movementController.stopMovement();
controllers.movementController.stopMovement();
}
@Override
@@ -76,7 +76,7 @@ public final class InputController implements OnClickListener, OnLongClickListen
if (Math.abs(lastTouchPosition_dx) > 1) return false;
if (Math.abs(lastTouchPosition_dy) > 1) return false;
view.combatController.setCombatSelection(lastTouchPosition_tileCoords);
controllers.combatController.setCombatSelection(lastTouchPosition_tileCoords);
return true;
}
return false;
@@ -90,7 +90,7 @@ public final class InputController implements OnClickListener, OnLongClickListen
}
public void onTouchCancell() {
view.movementController.stopMovement();
controllers.movementController.stopMovement();
}
public boolean onTouchedTile(int tile_x, int tile_y) {
@@ -100,7 +100,7 @@ public final class InputController implements OnClickListener, OnLongClickListen
if (world.model.uiSelections.isInCombat) return false;
view.movementController.startMovement(lastTouchPosition_dx, lastTouchPosition_dy, lastTouchPosition_tileCoords);
controllers.movementController.startMovement(lastTouchPosition_dx, lastTouchPosition_dy, lastTouchPosition_tileCoords);
return true;
}
}

View File

@@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.Collection;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.LootBagListeners;
import com.gpl.rpg.AndorsTrail.controller.listeners.QuickSlotListeners;
@@ -21,13 +21,13 @@ import com.gpl.rpg.AndorsTrail.model.item.ItemContainer.ItemEntry;
public final class ItemController {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public final QuickSlotListeners quickSlotListeners = new QuickSlotListeners();
public final LootBagListeners lootBagListeners = new LootBagListeners();
public ItemController(ViewContext context, WorldContext world) {
this.view = context;
public ItemController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -41,7 +41,7 @@ public final class ItemController {
if (!type.isEquippable()) return;
final Player player = world.model.player;
if (world.model.uiSelections.isInCombat) {
boolean changed = view.actorStatsController.useAPs(player, player.getReequipCost());
boolean changed = controllers.actorStatsController.useAPs(player, player.getReequipCost());
if (!changed) return;
}
@@ -55,8 +55,8 @@ public final class ItemController {
}
player.inventory.wear[slot] = type;
view.actorStatsController.addConditionsFromEquippedItem(player, type);
view.actorStatsController.recalculatePlayerStats(player);
controllers.actorStatsController.addConditionsFromEquippedItem(player, type);
controllers.actorStatsController.recalculatePlayerStats(player);
}
public void unequipSlot(ItemType type, int slot) {
@@ -65,12 +65,12 @@ public final class ItemController {
if (player.inventory.isEmptySlot(slot)) return;
if (world.model.uiSelections.isInCombat) {
boolean changed = view.actorStatsController.useAPs(player, player.getReequipCost());
boolean changed = controllers.actorStatsController.useAPs(player, player.getReequipCost());
if (!changed) return;
}
unequipSlot(player, slot);
view.actorStatsController.recalculatePlayerStats(player);
controllers.actorStatsController.recalculatePlayerStats(player);
}
private void unequipSlot(Player player, int slot) {
@@ -78,20 +78,20 @@ public final class ItemController {
if (removedItemType == null) return;
player.inventory.addItem(removedItemType);
player.inventory.wear[slot] = null;
view.actorStatsController.removeConditionsFromUnequippedItem(player, removedItemType);
controllers.actorStatsController.removeConditionsFromUnequippedItem(player, removedItemType);
}
public void useItem(ItemType type) {
if (!type.isUsable()) return;
final Player player = world.model.player;
if (world.model.uiSelections.isInCombat) {
boolean changed = view.actorStatsController.useAPs(player, player.getUseItemCost());
boolean changed = controllers.actorStatsController.useAPs(player, player.getUseItemCost());
if (!changed) return;
}
if (!player.inventory.removeItem(type.id, 1)) return;
view.actorStatsController.applyUseEffect(player, null, type.effects_use);
controllers.actorStatsController.applyUseEffect(player, null, type.effects_use);
world.model.statistics.addItemUsage(type);
//TODO: provide feedback that the item has been used.
@@ -100,29 +100,29 @@ public final class ItemController {
public void playerSteppedOnLootBag(Loot loot) {
if (loot.isVisible && pickupLootBagWithoutConfirmation()) {
view.controller.worldEventListeners.onPlayerPickedUpGroundLoot(loot);
controllers.mapController.worldEventListeners.onPlayerPickedUpGroundLoot(loot);
pickupAll(loot);
removeLootBagIfEmpty(loot);
} else {
view.controller.worldEventListeners.onPlayerSteppedOnGroundLoot(loot);
controllers.mapController.worldEventListeners.onPlayerSteppedOnGroundLoot(loot);
consumeNonItemLoot(loot);
}
}
public void lootMonsterBags(Collection<Loot> killedMonsterBags, int totalExpThisFight) {
if (pickupLootBagWithoutConfirmation()) {
view.controller.worldEventListeners.onPlayerPickedUpMonsterLoot(killedMonsterBags, totalExpThisFight);
controllers.mapController.worldEventListeners.onPlayerPickedUpMonsterLoot(killedMonsterBags, totalExpThisFight);
pickupAll(killedMonsterBags);
removeLootBagIfEmpty(killedMonsterBags);
view.gameRoundController.resume();
controllers.gameRoundController.resume();
} else {
view.controller.worldEventListeners.onPlayerFoundMonsterLoot(killedMonsterBags, totalExpThisFight);
controllers.mapController.worldEventListeners.onPlayerFoundMonsterLoot(killedMonsterBags, totalExpThisFight);
consumeNonItemLoot(killedMonsterBags);
}
}
private boolean pickupLootBagWithoutConfirmation() {
if (view.preferences.displayLoot == AndorsTrailPreferences.DISPLAYLOOT_DIALOG) return false;
if (controllers.preferences.displayLoot == AndorsTrailPreferences.DISPLAYLOOT_DIALOG) return false;
return true;
}
@@ -163,7 +163,7 @@ public final class ItemController {
if (SkillController.isDualWielding(mainHandItem, type)) return;
}
if (type.effects_equip != null && type.effects_equip.stats != null)
view.actorStatsController.applyAbilityEffects(player, type.effects_equip.stats, 1);
controllers.actorStatsController.applyAbilityEffects(player, type.effects_equip.stats, 1);
}
public static void recalculateHitEffectsFromWornItems(Player player) {

View File

@@ -1,6 +1,6 @@
package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.WorldEventListeners;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
@@ -10,14 +10,14 @@ import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
import com.gpl.rpg.AndorsTrail.util.Coord;
public final class Controller {
public final class MapController {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public final WorldEventListeners worldEventListeners = new WorldEventListeners();
public Controller(ViewContext context, WorldContext world) {
this.view = context;
public MapController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -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.placePlayerAsyncAt(MapObject.MAPEVENT_NEWMAP, o.map, o.place, offset_x, offset_y);
controllers.movementController.placePlayerAsyncAt(MapObject.MAPEVENT_NEWMAP, o.map, o.place, offset_x, offset_y);
break;
case MapObject.MAPEVENT_REST:
steppedOnRestArea(o);
@@ -40,7 +40,7 @@ public final class Controller {
}
private void steppedOnRestArea(MapObject area) {
if (view.preferences.confirmRest) {
if (controllers.preferences.confirmRest) {
worldEventListeners.onPlayerSteppedOnRestArea(area);
} else {
rest(area);
@@ -49,11 +49,11 @@ public final class Controller {
public void steppedOnMonster(Monster m, Coord p) {
if (m.isAgressive()) {
view.combatController.setCombatSelection(m, p);
if (view.preferences.confirmAttack) {
controllers.combatController.setCombatSelection(m, p);
if (controllers.preferences.confirmAttack) {
worldEventListeners.onPlayerSteppedOnMonster(m);
} else {
view.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
controllers.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
}
} else {
worldEventListeners.onPlayerStartedConversation(m, m.getPhraseID());
@@ -61,29 +61,29 @@ public final class Controller {
}
public void handlePlayerDeath() {
view.combatController.exitCombat(false);
controllers.combatController.exitCombat(false);
final Player player = world.model.player;
int lostExp = player.getCurrentLevelExperience() * Constants.PERCENT_EXP_LOST_WHEN_DIED / 100;
lostExp -= lostExp * player.getSkillLevel(SkillCollection.SKILL_LOWER_EXPLOSS) * SkillCollection.PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT / 100;
if (lostExp < 0) lostExp = 0;
view.actorStatsController.addExperience(-lostExp);
controllers.actorStatsController.addExperience(-lostExp);
world.model.statistics.addPlayerDeath(lostExp);
view.movementController.respawnPlayerAsync();
controllers.movementController.respawnPlayerAsync();
lotsOfTimePassed();
worldEventListeners.onPlayerDied(lostExp);
}
public void lotsOfTimePassed() {
final Player player = world.model.player;
view.actorStatsController.removeAllTemporaryConditions(player);
view.actorStatsController.recalculatePlayerStats(player);
view.actorStatsController.setActorMaxAP(player);
view.actorStatsController.setActorMaxHealth(player);
controllers.actorStatsController.removeAllTemporaryConditions(player);
controllers.actorStatsController.recalculatePlayerStats(player);
controllers.actorStatsController.setActorMaxAP(player);
controllers.actorStatsController.setActorMaxHealth(player);
for (PredefinedMap m : world.maps.predefinedMaps) {
m.resetTemporaryData();
}
view.monsterSpawnController.spawnAll(world.model.currentMap);
controllers.monsterSpawnController.spawnAll(world.model.currentMap);
}
public void rest(MapObject area) {

View File

@@ -1,6 +1,6 @@
package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.MonsterMovementListeners;
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
@@ -12,12 +12,12 @@ import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.CoordRect;
public final class MonsterMovementController {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public final MonsterMovementListeners monsterMovementListeners = new MonsterMovementListeners();
public MonsterMovementController(ViewContext context, WorldContext world) {
this.view = context;
public MonsterMovementController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -42,7 +42,7 @@ public final class MonsterMovementController {
int aggressionChanceBias = world.model.player.getSkillLevel(SkillCollection.SKILL_EVASION) * SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE;
if (Constants.roll100(Constants.MONSTER_AGGRESSION_CHANCE_PERCENT - aggressionChanceBias)) {
monsterMovementListeners.onMonsterSteppedOnPlayer(m);
view.combatController.monsterSteppedOnPlayer(m);
controllers.combatController.monsterSteppedOnPlayer(m);
return;
}
}
@@ -90,7 +90,7 @@ public final class MonsterMovementController {
return;
}
monsterMovementListeners.onMonsterSteppedOnPlayer(m);
view.combatController.monsterSteppedOnPlayer(m);
controllers.combatController.monsterSteppedOnPlayer(m);
} else {
CoordRect previousPosition = new CoordRect(new Coord(m.position), m.rectPosition.size);
m.position.set(m.nextPosition.topLeft);

View File

@@ -1,6 +1,6 @@
package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.MonsterSpawnListeners;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
@@ -12,12 +12,12 @@ import com.gpl.rpg.AndorsTrail.util.CoordRect;
import com.gpl.rpg.AndorsTrail.util.Size;
public final class MonsterSpawningController {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public final MonsterSpawnListeners monsterSpawnListeners = new MonsterSpawnListeners();
public MonsterSpawningController(ViewContext view, WorldContext world) {
this.view = view;
public MonsterSpawningController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -26,7 +26,7 @@ public final class MonsterSpawningController {
final boolean wasAbleToSpawn = spawnInArea(map, area, null);
if (!wasAbleToSpawn) break;
}
view.actorStatsController.healAllMonsters(area);
controllers.actorStatsController.healAllMonsters(area);
}
public void maybeSpawn(PredefinedMap map) {

View File

@@ -4,7 +4,7 @@ import android.content.res.Resources;
import android.os.AsyncTask;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.PlayerMovementListeners;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
@@ -22,13 +22,13 @@ import com.gpl.rpg.AndorsTrail.util.L;
import com.gpl.rpg.AndorsTrail.util.TimedMessageTask;
public final class MovementController implements TimedMessageTask.Callback {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
private final TimedMessageTask movementHandler;
public final PlayerMovementListeners playerMovementListeners = new PlayerMovementListeners();
public MovementController(ViewContext context, WorldContext world) {
this.view = context;
public MovementController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
this.movementHandler = new TimedMessageTask(this, Constants.MINIMUM_INPUT_INTERVAL, false);
}
@@ -40,7 +40,7 @@ public final class MovementController implements TimedMessageTask.Callback {
protected Void doInBackground(Void... arg0) {
stopMovement();
placePlayerAt(view.getResources(), objectType, mapName, placeName, offset_x, offset_y);
placePlayerAt(controllers.getResources(), objectType, mapName, placeName, offset_x, offset_y);
return null;
}
@@ -50,11 +50,11 @@ public final class MovementController implements TimedMessageTask.Callback {
super.onPostExecute(result);
stopMovement();
playerMovementListeners.onPlayerEnteredNewMap(world.model.currentMap, world.model.player.position);
view.gameRoundController.resume();
controllers.gameRoundController.resume();
}
};
view.gameRoundController.pause();
controllers.gameRoundController.pause();
task.execute();
}
@@ -84,19 +84,19 @@ public final class MovementController implements TimedMessageTask.Callback {
else playerVisitsMapFirstTime(newMap);
refreshMonsterAggressiveness(newMap, model.player);
view.effectController.updateSplatters(newMap);
controllers.effectController.updateSplatters(newMap);
}
private void playerVisitsMapFirstTime(PredefinedMap m) {
m.reset();
view.monsterSpawnController.spawnAll(m);
controllers.monsterSpawnController.spawnAll(m);
m.createAllContainerLoot();
m.visited = true;
}
private void playerVisitsMap(PredefinedMap m) {
// Respawn everything if a certain time has elapsed.
if (!m.isRecentlyVisited()) view.monsterSpawnController.spawnAll(m);
if (!m.isRecentlyVisited()) controllers.monsterSpawnController.spawnAll(m);
}
private boolean mayMovePlayer() {
@@ -111,7 +111,7 @@ public final class MovementController implements TimedMessageTask.Callback {
Monster m = world.model.currentMap.getMonsterAt(world.model.player.nextPosition);
if (m != null) {
view.controller.steppedOnMonster(m, world.model.player.nextPosition);
controllers.mapController.steppedOnMonster(m, world.model.player.nextPosition);
return;
}
@@ -120,15 +120,15 @@ public final class MovementController implements TimedMessageTask.Callback {
private boolean findWalkablePosition(int dx, int dy) {
// try to move with movementAggresiveness, if that fails fall back to MOVEMENTAGGRESSIVENESS_NORMAL
if (findWalkablePosition(dx, dy, view.preferences.movementAggressiveness)) return true;
if (findWalkablePosition(dx, dy, controllers.preferences.movementAggressiveness)) return true;
if (view.preferences.movementAggressiveness == AndorsTrailPreferences.MOVEMENTAGGRESSIVENESS_NORMAL) return false;
if (controllers.preferences.movementAggressiveness == AndorsTrailPreferences.MOVEMENTAGGRESSIVENESS_NORMAL) return false;
return findWalkablePosition(dx, dy, AndorsTrailPreferences.MOVEMENTAGGRESSIVENESS_NORMAL);
}
public boolean findWalkablePosition(int dx, int dy, int aggressiveness) {
if (view.preferences.movementMethod == AndorsTrailPreferences.MOVEMENTMETHOD_STRAIGHT) {
if (controllers.preferences.movementMethod == AndorsTrailPreferences.MOVEMENTMETHOD_STRAIGHT) {
return findWalkablePosition_straight(dx, dy, aggressiveness);
} else {
return findWalkablePosition_directional(dx, dy, aggressiveness);
@@ -209,26 +209,26 @@ public final class MovementController implements TimedMessageTask.Callback {
for (MapObject o : currentMap.eventObjects) {
if (o.type == MapObject.MAPEVENT_KEYAREA) {
if (o.position.contains(newPosition)) {
if (!view.controller.canEnterKeyArea(o)) return;
if (!controllers.mapController.canEnterKeyArea(o)) return;
}
}
}
player.lastPosition.set(player.position);
player.position.set(newPosition);
view.combatController.setCombatSelection(null, null);
controllers.combatController.setCombatSelection(null, null);
playerMovementListeners.onPlayerMoved(newPosition, player.lastPosition);
if (handleEvents) {
MapObject o = currentMap.getEventObjectAt(newPosition);
if (o != null) {
if (!o.position.contains(player.lastPosition)) { // Do not trigger event if the player already was on the same MapObject before.
view.controller.handleMapEvent(o, newPosition);
controllers.mapController.handleMapEvent(o, newPosition);
}
}
Loot loot = currentMap.getBagAt(newPosition);
if (loot != null) view.itemController.playerSteppedOnLootBag(loot);
if (loot != null) controllers.itemController.playerSteppedOnLootBag(loot);
}
}

View File

@@ -1,6 +1,6 @@
package com.gpl.rpg.AndorsTrail.controller;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.AttackResult;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect;
@@ -16,11 +16,11 @@ import com.gpl.rpg.AndorsTrail.model.item.DropList.DropItem;
import com.gpl.rpg.AndorsTrail.util.ConstRange;
public final class SkillController {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
public SkillController(ViewContext view, WorldContext world) {
this.view = view;
public SkillController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
}
@@ -38,7 +38,7 @@ public final class SkillController {
if (player.hasCriticalMultiplierEffect()) {
player.criticalMultiplier += player.criticalMultiplier * SkillCollection.PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT * player.getSkillLevel(SkillCollection.SKILL_BETTER_CRITICALS) / 100;
}
view.actorStatsController.addActorMaxAP(player, SkillCollection.PER_SKILLPOINT_INCREASE_SPEED * player.getSkillLevel(SkillCollection.SKILL_SPEED), false);
controllers.actorStatsController.addActorMaxAP(player, SkillCollection.PER_SKILLPOINT_INCREASE_SPEED * player.getSkillLevel(SkillCollection.SKILL_SPEED), false);
/*final int berserkLevel = player.getSkillLevel(Skills.SKILL_BERSERKER);
if (berserkLevel > 0) {
final int berserkHealth = player.health.max * Skills.BERSERKER_STARTS_AT_HEALTH_PERCENT / 100;
@@ -112,7 +112,7 @@ public final class SkillController {
public void addSkillLevel(int skillID) {
Player player = world.model.player;
player.skillLevels.put(skillID, player.skillLevels.get(skillID) + 1);
view.actorStatsController.recalculatePlayerStats(player);
controllers.actorStatsController.recalculatePlayerStats(player);
}
public static int getActorConditionEffectChanceRollBias(ActorConditionEffect effect, Player player) {
@@ -153,7 +153,7 @@ public final class SkillController {
private void addConditionToActor(Actor target, String conditionName, int magnitude, int duration) {
ActorConditionType conditionType = world.actorConditionsTypes.getActorConditionType(conditionName);
ActorConditionEffect effect = new ActorConditionEffect(conditionType, magnitude, duration, null);
view.actorStatsController.applyActorCondition(target, effect);
controllers.actorStatsController.applyActorCondition(target, effect);
}
public void applySkillEffectsFromPlayerAttack(AttackResult result, Monster monster) {
@@ -181,7 +181,7 @@ public final class SkillController {
public void applySkillEffectsFromMonsterAttack(AttackResult result, Monster monster) {
if (!result.isHit) {
if (rollForSkillChance(world.model.player, SkillCollection.SKILL_TAUNT, SkillCollection.PER_SKILLPOINT_INCREASE_TAUNT_CHANCE)) {
view.actorStatsController.changeActorAP(monster, -SkillCollection.TAUNT_AP_LOSS, false, false);
controllers.actorStatsController.changeActorAP(monster, -SkillCollection.TAUNT_AP_LOSS, false, false);
}
}
}

View File

@@ -7,7 +7,7 @@ import android.os.Handler;
import com.gpl.rpg.AndorsTrail.VisualEffectCollection;
import com.gpl.rpg.AndorsTrail.VisualEffectCollection.VisualEffect;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.VisualEffectFrameListeners;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
@@ -21,14 +21,14 @@ import com.gpl.rpg.AndorsTrail.util.Size;
public final class VisualEffectController {
private int effectCount = 0;
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
private final VisualEffectCollection effectTypes;
public final VisualEffectFrameListeners visualEffectFrameListeners = new VisualEffectFrameListeners();
public VisualEffectController(ViewContext view, WorldContext world) {
this.view = view;
public VisualEffectController(ControllerContext controllers, WorldContext world) {
this.controllers = controllers;
this.world = world;
this.effectTypes = world.visualEffectTypes;
}
@@ -132,11 +132,11 @@ public final class VisualEffectController {
BloodSplatter b = map.splatters.get(i);
if (b.removeAfter <= now) {
map.splatters.remove(i);
view.monsterSpawnController.monsterSpawnListeners.onSplatterRemoved(map, b.position);
controllers.monsterSpawnController.monsterSpawnListeners.onSplatterRemoved(map, b.position);
} else if (!b.reducedIcon && b.reduceIconAfter <= now) {
b.reducedIcon = true;
b.iconID++;
view.monsterSpawnController.monsterSpawnListeners.onSplatterChanged(map, b.position);
controllers.monsterSpawnController.monsterSpawnListeners.onSplatterChanged(map, b.position);
}
}
}
@@ -145,7 +145,7 @@ public final class VisualEffectController {
int iconID = getSplatterIconFromMonsterClass(m.getMonsterClass());
if (iconID > 0) {
map.splatters.add(new BloodSplatter(iconID, m.position));
view.monsterSpawnController.monsterSpawnListeners.onSplatterAdded(map, m.position);
controllers.monsterSpawnController.monsterSpawnListeners.onSplatterAdded(map, m.position);
}
}

View File

@@ -4,7 +4,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
@@ -26,8 +26,8 @@ public final class ModelContainer {
// ====== PARCELABLE ===================================================================
public ModelContainer(DataInputStream src, WorldContext world, ViewContext view, int fileversion) throws IOException {
this.player = Player.readFromParcel(src, world, view, fileversion);
public ModelContainer(DataInputStream src, WorldContext world, ControllerContext controllers, int fileversion) throws IOException {
this.player = Player.readFromParcel(src, world, controllers, fileversion);
this.currentMap = world.maps.findPredefinedMap(src.readUTF());
this.uiSelections = new InterfaceData(src, world, fileversion);
if (uiSelections.selectedPosition != null) {

View File

@@ -11,7 +11,7 @@ import android.util.FloatMath;
import android.util.SparseIntArray;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
@@ -253,9 +253,9 @@ public final class Player extends Actor {
// ====== PARCELABLE ===================================================================
public static Player readFromParcel(DataInputStream src, WorldContext world, ViewContext view, int fileversion) throws IOException {
public static Player readFromParcel(DataInputStream src, WorldContext world, ControllerContext controllers, int fileversion) throws IOException {
Player player = new Player(src, world, fileversion);
LegacySavegameFormatReaderForPlayer.upgradeSavegame(player, world, view, fileversion);
LegacySavegameFormatReaderForPlayer.upgradeSavegame(player, world, controllers, fileversion);
return player;
}

View File

@@ -7,7 +7,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.util.L;
@@ -43,12 +43,12 @@ public final class MapCollection {
// ====== PARCELABLE ===================================================================
public void readFromParcel(DataInputStream src, WorldContext world, ViewContext view, int fileversion) throws IOException {
public void readFromParcel(DataInputStream src, WorldContext world, ControllerContext controllers, int fileversion) throws IOException {
int size;
if (fileversion == 5) size = 11;
else size = src.readInt();
for(int i = 0; i < size; ++i) {
predefinedMaps.get(i).readFromParcel(src, world, view, fileversion);
predefinedMaps.get(i).readFromParcel(src, world, controllers, fileversion);
if (i >= 40) {
if (fileversion < 15) predefinedMaps.get(i).visited = false;
}

View File

@@ -6,7 +6,7 @@ import java.io.IOException;
import java.util.ArrayList;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.BloodSplatter;
@@ -192,7 +192,7 @@ public final class PredefinedMap {
// ====== PARCELABLE ===================================================================
public void readFromParcel(DataInputStream src, WorldContext world, ViewContext view, int fileversion) throws IOException {
public void readFromParcel(DataInputStream src, WorldContext world, ControllerContext controllers, int fileversion) throws IOException {
final int loadedSpawnAreas = src.readInt();
for(int i = 0; i < loadedSpawnAreas; ++i) {
this.spawnAreas[i].readFromParcel(src, world, fileversion);
@@ -226,7 +226,7 @@ public final class PredefinedMap {
for(int i = loadedSpawnAreas; i < spawnAreas.length; ++i) {
MonsterSpawnArea area = this.spawnAreas[i];
if (area.isUnique && visited) view.monsterSpawnController.spawnAllInArea(this, area, true);
if (area.isUnique && visited) controllers.monsterSpawnController.spawnAllInArea(this, area, true);
else area.reset();
}
}

View File

@@ -5,7 +5,7 @@ import java.io.IOException;
import android.util.FloatMath;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect;
@@ -66,7 +66,7 @@ public final class LegacySavegameFormatReaderForPlayer {
player.addQuestProgress(new QuestProgress(questID, progress));
}
public static void upgradeSavegame(Player player, WorldContext world, ViewContext view, int fileversion) {
public static void upgradeSavegame(Player player, WorldContext world, ControllerContext controllers, int fileversion) {
if (fileversion <= 12) {
player.useItemCost = 5;
@@ -89,9 +89,9 @@ public final class LegacySavegameFormatReaderForPlayer {
}
if (fileversion <= 27) {
correctActorConditionsFromItemsPre0611b1(player, "bless", world, view, "elytharan_redeemer");
correctActorConditionsFromItemsPre0611b1(player, "blackwater_misery", world, view, "bwm_dagger");
correctActorConditionsFromItemsPre0611b1(player, "regen", world, view, "ring_shadow0");
correctActorConditionsFromItemsPre0611b1(player, "bless", world, controllers, "elytharan_redeemer");
correctActorConditionsFromItemsPre0611b1(player, "blackwater_misery", world, controllers, "bwm_dagger");
correctActorConditionsFromItemsPre0611b1(player, "regen", world, controllers, "ring_shadow0");
}
if (fileversion <= 30) {
@@ -105,7 +105,7 @@ public final class LegacySavegameFormatReaderForPlayer {
return 1 + (int) FloatMath.floor((float) level / Constants.NEW_SKILL_POINT_EVERY_N_LEVELS);
}
private static void correctActorConditionsFromItemsPre0611b1(Player player, String conditionTypeID, WorldContext world, ViewContext view, String itemTypeIDWithCondition) {
private static void correctActorConditionsFromItemsPre0611b1(Player player, String conditionTypeID, WorldContext world, ControllerContext controllers, String itemTypeIDWithCondition) {
if (!player.hasCondition(conditionTypeID)) return;
boolean hasItemWithCondition = false;
for (ItemType t : player.inventory.wear) {
@@ -120,7 +120,7 @@ public final class LegacySavegameFormatReaderForPlayer {
}
if (hasItemWithCondition) return;
view.actorStatsController.removeConditionsFromUnequippedItem(player, world.itemTypes.getItemType(itemTypeIDWithCondition));
controllers.actorStatsController.removeConditionsFromUnequippedItem(player, world.itemTypes.getItemType(itemTypeIDWithCondition));
}
public static void readCombatTraitsPreV034(DataInputStream src, int fileversion) throws IOException {

View File

@@ -22,7 +22,7 @@ import android.content.Context;
import android.os.Environment;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.Constants;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
@@ -53,10 +53,10 @@ public final class Savegames {
return false;
}
}
public static int loadWorld(WorldContext world, ViewContext view, Context androidContext, int slot) {
public static int loadWorld(WorldContext world, ControllerContext controllers, Context androidContext, int slot) {
try {
FileInputStream fos = getInputFile(androidContext, slot);
int result = loadWorld(world, view, fos);
int result = loadWorld(world, controllers, fos);
fos.close();
return result;
} catch (IOException e) {
@@ -110,24 +110,24 @@ public final class Savegames {
dest.close();
}
public static int loadWorld(WorldContext world, ViewContext view, InputStream inState) throws IOException {
public static int loadWorld(WorldContext world, ControllerContext controllers, InputStream inState) throws IOException {
DataInputStream src = new DataInputStream(inState);
final FileHeader header = new FileHeader(src);
if (header.fileversion > AndorsTrailApplication.CURRENT_VERSION) return LOAD_RESULT_FUTURE_VERSION;
world.maps.readFromParcel(src, world, view, header.fileversion);
world.model = new ModelContainer(src, world, view, header.fileversion);
world.maps.readFromParcel(src, world, controllers, header.fileversion);
world.model = new ModelContainer(src, world, controllers, header.fileversion);
src.close();
onWorldLoaded(world, view);
onWorldLoaded(world, controllers);
return LOAD_RESULT_SUCCESS;
}
private static void onWorldLoaded(WorldContext world, ViewContext view) {
view.actorStatsController.recalculatePlayerStats(world.model.player);
view.controller.resetMapsNotRecentlyVisited();
view.movementController.moveBlockedActors();
private static void onWorldLoaded(WorldContext world, ControllerContext controllers) {
controllers.actorStatsController.recalculatePlayerStats(world.model.player);
controllers.mapController.resetMapsNotRecentlyVisited();
controllers.movementController.moveBlockedActors();
}
public static FileHeader quickload(Context androidContext, int slot) {

View File

@@ -17,7 +17,7 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.CombatController;
import com.gpl.rpg.AndorsTrail.controller.listeners.CombatSelectionListener;
@@ -38,7 +38,7 @@ public final class CombatView extends RelativeLayout implements CombatSelectionL
private final TextView monsterActionText;
private final WorldContext world;
private final ViewContext view;
private final ControllerContext controllers;
private final Resources res;
private final AndorsTrailPreferences preferences;
private final Player player;
@@ -52,7 +52,7 @@ public final class CombatView extends RelativeLayout implements CombatSelectionL
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
this.world = app.getWorld();
this.player = world.model.player;
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
this.preferences = app.getPreferences();
this.res = getResources();
@@ -60,7 +60,7 @@ public final class CombatView extends RelativeLayout implements CombatSelectionL
inflate(context, R.layout.combatview, this);
this.setBackgroundResource(R.drawable.ui_gradientshape_translucent);
final CombatController c = view.combatController;
final CombatController c = controllers.combatController;
attackMoveButton = (Button) findViewById(R.id.combatview_moveattack);
attackMoveButton.setOnClickListener(new OnClickListener() {
@Override
@@ -179,14 +179,14 @@ public final class CombatView extends RelativeLayout implements CombatSelectionL
}
public void subscribe() {
view.combatController.combatSelectionListeners.add(this);
view.combatController.combatTurnListeners.add(this);
view.actorStatsController.actorStatsListeners.add(this);
controllers.combatController.combatSelectionListeners.add(this);
controllers.combatController.combatTurnListeners.add(this);
controllers.actorStatsController.actorStatsListeners.add(this);
}
public void unsubscribe() {
view.actorStatsController.actorStatsListeners.remove(this);
view.combatController.combatTurnListeners.remove(this);
view.combatController.combatSelectionListeners.remove(this);
controllers.actorStatsController.actorStatsListeners.remove(this);
controllers.combatController.combatTurnListeners.remove(this);
controllers.combatController.combatSelectionListeners.remove(this);
}
@Override

View File

@@ -16,7 +16,7 @@ import android.widget.RelativeLayout.LayoutParams;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
import com.gpl.rpg.AndorsTrail.model.actor.Actor;
@@ -27,20 +27,20 @@ public final class DisplayActiveActorConditionIcons implements ActorConditionLis
private final AndorsTrailPreferences preferences;
private final TileManager tileManager;
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
private final RelativeLayout activeConditions;
private final ArrayList<ActiveConditionIcon> currentConditionIcons = new ArrayList<ActiveConditionIcon>();
private final WeakReference<Context> androidContext;
public DisplayActiveActorConditionIcons(
final ViewContext view,
final ControllerContext controllers,
final WorldContext world,
Context androidContext,
RelativeLayout activeConditions) {
this.view = view;
this.controllers = controllers;
this.world = world;
this.preferences = view.preferences;
this.preferences = controllers.preferences;
this.tileManager = world.tileManager;
this.androidContext = new WeakReference<Context>(androidContext);
this.activeConditions = activeConditions;
@@ -83,7 +83,7 @@ public final class DisplayActiveActorConditionIcons implements ActorConditionLis
}
public void unsubscribe() {
view.actorStatsController.actorConditionListeners.remove(this);
controllers.actorStatsController.actorConditionListeners.remove(this);
for (ActiveConditionIcon icon : currentConditionIcons) icon.condition = null;
}
@@ -92,7 +92,7 @@ public final class DisplayActiveActorConditionIcons implements ActorConditionLis
for (ActorCondition condition : world.model.player.conditions) {
getFirstFreeIcon().setActiveCondition(condition);
}
view.actorStatsController.actorConditionListeners.add(this);
controllers.actorStatsController.actorConditionListeners.add(this);
}
private final class ActiveConditionIcon implements AnimationListener {

View File

@@ -2,7 +2,7 @@ package com.gpl.rpg.AndorsTrail.view;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.InputController;
import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.BloodSplatter;
@@ -53,7 +53,7 @@ public final class MainView extends SurfaceView
private final ModelContainer model;
private final WorldContext world;
private final ViewContext view;
private final ControllerContext controllers;
private final InputController inputController;
private final AndorsTrailPreferences preferences;
@@ -74,11 +74,11 @@ public final class MainView extends SurfaceView
this.holder = getHolder();
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
this.world = app.getWorld();
this.model = world.model;
this.tileSize = world.tileManager.tileSize;
this.inputController = view.inputController;
this.inputController = controllers.inputController;
this.preferences = app.getPreferences();
holder.addCallback(this);
@@ -399,22 +399,22 @@ public final class MainView extends SurfaceView
}
public void subscribe() {
view.gameRoundController.gameRoundListeners.add(this);
view.effectController.visualEffectFrameListeners.add(this);
view.itemController.lootBagListeners.add(this);
view.movementController.playerMovementListeners.add(this);
view.combatController.combatSelectionListeners.add(this);
view.monsterSpawnController.monsterSpawnListeners.add(this);
view.monsterMovementController.monsterMovementListeners.add(this);
controllers.gameRoundController.gameRoundListeners.add(this);
controllers.effectController.visualEffectFrameListeners.add(this);
controllers.itemController.lootBagListeners.add(this);
controllers.movementController.playerMovementListeners.add(this);
controllers.combatController.combatSelectionListeners.add(this);
controllers.monsterSpawnController.monsterSpawnListeners.add(this);
controllers.monsterMovementController.monsterMovementListeners.add(this);
}
public void unsubscribe() {
view.monsterMovementController.monsterMovementListeners.remove(this);
view.monsterSpawnController.monsterSpawnListeners.remove(this);
view.combatController.combatSelectionListeners.remove(this);
view.movementController.playerMovementListeners.remove(this);
view.itemController.lootBagListeners.remove(this);
view.effectController.visualEffectFrameListeners.remove(this);
view.gameRoundController.gameRoundListeners.remove(this);
controllers.monsterMovementController.monsterMovementListeners.remove(this);
controllers.monsterSpawnController.monsterSpawnListeners.remove(this);
controllers.combatController.combatSelectionListeners.remove(this);
controllers.movementController.playerMovementListeners.remove(this);
controllers.itemController.lootBagListeners.remove(this);
controllers.effectController.visualEffectFrameListeners.remove(this);
controllers.gameRoundController.gameRoundListeners.remove(this);
}
@Override

View File

@@ -14,7 +14,7 @@ import android.widget.LinearLayout;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.activity.MainActivity;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.listeners.QuickSlotListener;
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
@@ -25,7 +25,7 @@ public final class QuickitemView extends LinearLayout implements OnClickListener
private static final int NUM_QUICK_SLOTS = Inventory.NUM_QUICK_SLOTS;
private final WorldContext world;
private final ViewContext view;
private final ControllerContext controllers;
private final QuickButton[] buttons = new QuickButton[NUM_QUICK_SLOTS];
private final HashSet<Integer> loadedTileIDs = new HashSet<Integer>();
private TileCollection tiles = null;
@@ -34,7 +34,7 @@ public final class QuickitemView extends LinearLayout implements OnClickListener
super(context, attrs);
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
this.world = app.getWorld();
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
setFocusable(false);
setOrientation(LinearLayout.HORIZONTAL);
@@ -65,7 +65,7 @@ public final class QuickitemView extends LinearLayout implements OnClickListener
QuickButton button = (QuickButton)v;
if(button.isEmpty())
return;
view.itemController.quickitemUse(button.getIndex());
controllers.itemController.quickitemUse(button.getIndex());
}
@Override
@@ -123,9 +123,9 @@ public final class QuickitemView extends LinearLayout implements OnClickListener
}
public void subscribe() {
view.itemController.quickSlotListeners.add(this);
controllers.itemController.quickSlotListeners.add(this);
}
public void unsubscribe() {
view.itemController.quickSlotListeners.remove(this);
controllers.itemController.quickSlotListeners.remove(this);
}
}

View File

@@ -4,7 +4,7 @@ import android.content.res.Resources;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.listeners.PlayerStatsListener;
import com.gpl.rpg.AndorsTrail.model.actor.Actor;
@@ -24,7 +24,7 @@ import android.widget.ImageButton;
public final class StatusView extends RelativeLayout implements PlayerStatsListener, ActorStatsListener {
private final ViewContext view;
private final ControllerContext controllers;
private final WorldContext world;
private final Player player;
@@ -39,7 +39,7 @@ public final class StatusView extends RelativeLayout implements PlayerStatsListe
public StatusView(final Context context, AttributeSet attr) {
super(context, attr);
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
this.view = app.getViewContext();
this.controllers = app.getControllerContext();
this.world = app.getWorld();
this.player = world.model.player;
@@ -93,12 +93,12 @@ public final class StatusView extends RelativeLayout implements PlayerStatsListe
}
public void subscribe() {
view.actorStatsController.actorStatsListeners.add(this);
view.actorStatsController.playerStatsListeners.add(this);
controllers.actorStatsController.actorStatsListeners.add(this);
controllers.actorStatsController.playerStatsListeners.add(this);
}
public void unsubscribe() {
view.actorStatsController.playerStatsListeners.remove(this);
view.actorStatsController.actorStatsListeners.remove(this);
controllers.actorStatsController.playerStatsListeners.remove(this);
controllers.actorStatsController.actorStatsListeners.remove(this);
}
private void updateHealth() {

View File

@@ -12,7 +12,7 @@ import android.widget.RelativeLayout;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.ControllerContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.InputController;
@@ -35,8 +35,8 @@ public final class VirtualDpadView extends ImageView implements OnClickListener
super(context, attr);
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
this.world = app.getWorld();
final ViewContext view = app.getViewContext();
this.inputController = view.inputController;
final ControllerContext controllers = app.getControllerContext();
this.inputController = controllers.inputController;
setImageResource(R.drawable.ui_dpad);
setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));