mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
Fixed worldmap scrolling. Removed useless "More" button on item info
when opened from shops.
This commit is contained in:
@@ -40,10 +40,25 @@ if (params) {
|
||||
var y = parseInt(pos[1])-{{offsety}};
|
||||
player.style.top = y + \"px\";
|
||||
player.style.left = x + \"px\";
|
||||
window.scrollTo(x-100, y-100);
|
||||
} else {
|
||||
player.style.display = \"none\";
|
||||
}
|
||||
|
||||
function scrollToPlayer() {
|
||||
var elem = document.getElementById(\"playerPosition\");
|
||||
var x = 0;
|
||||
var y = 0;
|
||||
|
||||
while (elem != null) {
|
||||
x += elem.offsetLeft;
|
||||
y += elem.offsetTop;
|
||||
elem = elem.offsetParent;
|
||||
}
|
||||
window.scrollTo(x - (window.innerWidth/2), y - (window.innerHeight/2));
|
||||
}
|
||||
|
||||
window.onload = scrollToPlayer();
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -1,418 +1,419 @@
|
||||
package com.gpl.rpg.AndorsTrail;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnDismissListener;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.activity.ActorConditionInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.BulkSelectionInterface;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ConversationActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ItemInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.LevelUpActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.LoadSaveActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MainActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MonsterEncounterActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MonsterInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.SkillInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.fragment.StartScreenActivity_MainMenu;
|
||||
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.ability.SkillCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Loot;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
|
||||
import com.gpl.rpg.AndorsTrail.view.CustomDialogFactory;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemContainerAdapter;
|
||||
|
||||
public final class Dialogs {
|
||||
|
||||
private static void showDialogAndPause(Dialog d, final ControllerContext context) {
|
||||
showDialogAndPause(d, context, null);
|
||||
}
|
||||
private static void showDialogAndPause(Dialog d, final ControllerContext context, final OnDismissListener onDismiss) {
|
||||
context.gameRoundController.pause();
|
||||
CustomDialogFactory.setDismissListener(d, new OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface arg0) {
|
||||
if (onDismiss != null) onDismiss.onDismiss(arg0);
|
||||
context.gameRoundController.resume();
|
||||
}
|
||||
});
|
||||
CustomDialogFactory.show(d);
|
||||
}
|
||||
|
||||
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 ControllerContext context, String phraseID) {
|
||||
showConversation(currentActivity, context, phraseID, null);
|
||||
}
|
||||
|
||||
public static void showMapScriptMessage(final MainActivity currentActivity, final ControllerContext context, String phraseID) {
|
||||
showConversation(currentActivity, context, phraseID, null, false);
|
||||
}
|
||||
|
||||
public static void showConversation(final MainActivity currentActivity, final ControllerContext context, final String phraseID, final Monster npc) {
|
||||
showConversation(currentActivity, context, phraseID, npc, true);
|
||||
}
|
||||
|
||||
private static void showConversation(final MainActivity currentActivity, final ControllerContext context, final String phraseID, final Monster npc, boolean applyScriptEffectsForFirstPhrase) {
|
||||
context.gameRoundController.pause();
|
||||
Intent intent = new Intent(currentActivity, ConversationActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/conversation/" + phraseID));
|
||||
intent.putExtra("applyScriptEffectsForFirstPhrase", applyScriptEffectsForFirstPhrase);
|
||||
addMonsterIdentifiers(intent, npc);
|
||||
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_CONVERSATION);
|
||||
}
|
||||
|
||||
public static void addMonsterIdentifiers(Intent intent, Monster monster) {
|
||||
if (monster == null) return;
|
||||
intent.putExtra("x", monster.position.x);
|
||||
intent.putExtra("y", monster.position.y);
|
||||
}
|
||||
public static void addMonsterIdentifiers(Bundle bundle, Monster monster) {
|
||||
if (monster == null) return;
|
||||
bundle.putInt("x", monster.position.x);
|
||||
bundle.putInt("y", monster.position.y);
|
||||
}
|
||||
|
||||
public static Monster getMonsterFromIntent(Intent intent, final WorldContext world) {
|
||||
return getMonsterFromBundle(intent.getExtras(), world);
|
||||
}
|
||||
public static Monster getMonsterFromBundle(Bundle params, final WorldContext world) {
|
||||
if (params == null) return null;
|
||||
if (!params.containsKey("x")) return null;
|
||||
int x = params.getInt("x");
|
||||
int y = params.getInt("y");
|
||||
return world.model.currentMap.getMonsterAt(x, y);
|
||||
}
|
||||
|
||||
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"));
|
||||
addMonsterIdentifiers(intent, monster);
|
||||
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_MONSTERENCOUNTER);
|
||||
}
|
||||
|
||||
public static void showMonsterInfo(final Context context, final Monster monster) {
|
||||
Intent intent = new Intent(context, MonsterInfoActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/monsterinfo"));
|
||||
addMonsterIdentifiers(intent, monster);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static String getGroundLootFoundMessage(final Context ctx, final Loot loot) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
if (!loot.items.isEmpty()) {
|
||||
sb.append(ctx.getString(R.string.dialog_groundloot_message));
|
||||
}
|
||||
appendGoldPickedUpMessage(ctx, loot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
public static String getGroundLootPickedUpMessage(final Context ctx, final Loot loot) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
appendLootPickedUpMessage(ctx, loot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
public static String getMonsterLootFoundMessage(final Context ctx, final Loot combinedLoot, final int exp) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
appendMonsterEncounterSurvivedMessage(ctx, sb, exp);
|
||||
appendGoldPickedUpMessage(ctx, combinedLoot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
public static String getMonsterLootPickedUpMessage(final Context ctx, final Loot combinedLoot, final int exp) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
appendMonsterEncounterSurvivedMessage(ctx, sb, exp);
|
||||
appendLootPickedUpMessage(ctx, combinedLoot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
private static void appendMonsterEncounterSurvivedMessage(final Context ctx, final StringBuilder sb, final int exp) {
|
||||
sb.append(ctx.getString(R.string.dialog_monsterloot_message));
|
||||
if (exp > 0) {
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_monsterloot_gainedexp, exp));
|
||||
}
|
||||
}
|
||||
private static void appendGoldPickedUpMessage(final Context ctx, final Loot loot, final StringBuilder sb) {
|
||||
if (loot.gold > 0) {
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_loot_foundgold, loot.gold));
|
||||
}
|
||||
}
|
||||
private static void appendLootPickedUpMessage(final Context ctx, final Loot loot, final StringBuilder sb) {
|
||||
appendGoldPickedUpMessage(ctx, loot, sb);
|
||||
int numItems = loot.items.countItems();
|
||||
if (numItems == 1) {
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_loot_pickedupitem));
|
||||
} else if (numItems > 1){
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_loot_pickedupitems, numItems));
|
||||
}
|
||||
}
|
||||
|
||||
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, controllers, world, combinedLoot, bags, R.string.dialog_monsterloot_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 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);
|
||||
itemList.setAdapter(new ItemContainerAdapter(mainActivity, world.tileManager, combinedLoot.items, world.model.player));
|
||||
|
||||
final Dialog d = CustomDialogFactory.createDialog(mainActivity,
|
||||
mainActivity.getResources().getString(title),
|
||||
mainActivity.getResources().getDrawable(R.drawable.ui_icon_equipment),
|
||||
msg,
|
||||
combinedLoot.items.isEmpty() ? null : itemList,
|
||||
true);
|
||||
|
||||
itemList.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
|
||||
|
||||
final String itemTypeID = ((ItemContainerAdapter) parent.getAdapter()).getItem(position).itemType.id;
|
||||
boolean removeFromCombinedLoot = true;
|
||||
for (Loot l : lootBags) {
|
||||
if (l == combinedLoot) removeFromCombinedLoot = false;
|
||||
if (l.items.removeItem(itemTypeID)) {
|
||||
controllers.itemController.removeLootBagIfEmpty(l);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (removeFromCombinedLoot) {
|
||||
combinedLoot.items.removeItem(itemTypeID);
|
||||
}
|
||||
if (((ItemContainerAdapter) parent.getAdapter()).isEmpty()) {
|
||||
ViewGroup vg = (ViewGroup) d.findViewById(R.id.dialog_content_container);
|
||||
vg.setVisibility(View.GONE);
|
||||
}
|
||||
ItemType type = world.itemTypes.getItemType(itemTypeID);
|
||||
world.model.player.inventory.addItem(type);
|
||||
((ItemContainerAdapter) itemList.getAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
||||
CustomDialogFactory.addButton(d, R.string.dialog_loot_pickall, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
controllers.itemController.pickupAll(lootBags);
|
||||
}
|
||||
});
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, R.string.dialog_close);
|
||||
|
||||
showDialogAndPause(d, controllers, new OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface arg0) {
|
||||
controllers.itemController.removeLootBagIfEmpty(lootBags);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Intent getIntentForItemInfo(final Context ctx, String itemTypeID, ItemInfoActivity.ItemInfoAction actionType, String buttonText, boolean buttonEnabled, Inventory.WearSlot inventorySlot) {
|
||||
Intent intent = new Intent(ctx, ItemInfoActivity.class);
|
||||
intent.putExtra("buttonText", buttonText);
|
||||
intent.putExtra("buttonEnabled", buttonEnabled);
|
||||
intent.putExtra("itemTypeID", itemTypeID);
|
||||
intent.putExtra("actionType", actionType.name());
|
||||
if (inventorySlot != null) intent.putExtra("inventorySlot", inventorySlot.name());
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/iteminfo/" + itemTypeID));
|
||||
return intent;
|
||||
}
|
||||
public static Intent getIntentForLevelUp(final Context ctx) {
|
||||
Intent intent = new Intent(ctx, LevelUpActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/levelup"));
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static void showConfirmRest(final Activity currentActivity, final ControllerContext controllerContext, final MapObject area) {
|
||||
// Dialog d = new AlertDialog.Builder(new ContextThemeWrapper(currentActivity, R.style.AndorsTrailStyle))
|
||||
// .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) {
|
||||
// controllerContext.mapController.rest(area);
|
||||
// }
|
||||
// })
|
||||
|
||||
//
|
||||
// .setNegativeButton(android.R.string.no, null)
|
||||
// .create();
|
||||
final Dialog d = CustomDialogFactory.createDialog(currentActivity,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_title),
|
||||
null,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_confirm_message),
|
||||
null,
|
||||
true);
|
||||
|
||||
CustomDialogFactory.addButton(d, android.R.string.yes, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
controllerContext.mapController.rest(area);
|
||||
}
|
||||
});
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, android.R.string.no);
|
||||
|
||||
showDialogAndPause(d, controllerContext);
|
||||
}
|
||||
public static void showRested(final Activity currentActivity, final ControllerContext controllerContext) {
|
||||
// Dialog d = new AlertDialog.Builder(new ContextThemeWrapper(currentActivity, R.style.AndorsTrailStyle))
|
||||
// .setTitle(R.string.dialog_rest_title)
|
||||
// .setMessage(R.string.dialog_rest_message)
|
||||
// .setNeutralButton(android.R.string.ok, null)
|
||||
// .create();
|
||||
final Dialog d = CustomDialogFactory.createDialog(currentActivity,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_title),
|
||||
null,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_message),
|
||||
null,
|
||||
true);
|
||||
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, android.R.string.ok);
|
||||
|
||||
showDialogAndPause(d, controllerContext);
|
||||
}
|
||||
|
||||
public static void showNewVersion(final Activity currentActivity) {
|
||||
// new AlertDialog.Builder(new ContextThemeWrapper(currentActivity, R.style.AndorsTrailStyle))
|
||||
// .setTitle(R.string.dialog_newversion_title)
|
||||
// .setMessage(R.string.dialog_newversion_message)
|
||||
// .setNeutralButton(android.R.string.ok, null)
|
||||
// .show();
|
||||
|
||||
final Dialog d = CustomDialogFactory.createDialog(currentActivity,
|
||||
currentActivity.getResources().getString(R.string.dialog_newversion_title),
|
||||
null,
|
||||
currentActivity.getResources().getString(R.string.dialog_newversion_message),
|
||||
null,
|
||||
true);
|
||||
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, android.R.string.ok);
|
||||
|
||||
CustomDialogFactory.show(d);
|
||||
}
|
||||
|
||||
public static boolean showSave(final Activity mainActivity, final ControllerContext controllerContext, final WorldContext world) {
|
||||
if (world.model.uiSelections.isInCombat) {
|
||||
Toast.makeText(mainActivity, R.string.menu_save_saving_not_allowed_in_combat, Toast.LENGTH_SHORT).show();
|
||||
return false;
|
||||
}
|
||||
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);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void showLoad(final Activity currentActivity) {
|
||||
Intent intent = new Intent(currentActivity, LoadSaveActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/load"));
|
||||
currentActivity.startActivityForResult(intent, StartScreenActivity_MainMenu.INTENTREQUEST_LOADGAME);
|
||||
}
|
||||
|
||||
public static void showLoad(final Fragment currentFragment) {
|
||||
Intent intent = new Intent(currentFragment.getActivity(), LoadSaveActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/load"));
|
||||
currentFragment.startActivityForResult(intent, StartScreenActivity_MainMenu.INTENTREQUEST_LOADGAME);
|
||||
}
|
||||
|
||||
public static void showActorConditionInfo(final Context context, ActorConditionType conditionType) {
|
||||
Intent intent = new Intent(context, ActorConditionInfoActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/actorconditioninfo/" + conditionType.conditionTypeID));
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static Intent getIntentForBulkBuyingInterface(final Context ctx, String itemTypeID, int totalAvailableAmount) {
|
||||
return getIntentForBulkSelectionInterface(ctx, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType.buy);
|
||||
}
|
||||
|
||||
public static Intent getIntentForBulkSellingInterface(final Context ctx, String itemTypeID, int totalAvailableAmount) {
|
||||
return getIntentForBulkSelectionInterface(ctx, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType.sell);
|
||||
}
|
||||
|
||||
public static Intent getIntentForBulkDroppingInterface(final Context ctx, String itemTypeID, int totalAvailableAmount) {
|
||||
return getIntentForBulkSelectionInterface(ctx, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType.drop);
|
||||
}
|
||||
|
||||
private static Intent getIntentForBulkSelectionInterface(final Context ctx, String itemTypeID, int totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType interfaceType) {
|
||||
Intent intent = new Intent(ctx, BulkSelectionInterface.class);
|
||||
intent.putExtra("itemTypeID", itemTypeID);
|
||||
intent.putExtra("totalAvailableAmount", totalAvailableAmount);
|
||||
intent.putExtra("interfaceType", interfaceType.name());
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/bulkselection/" + itemTypeID));
|
||||
return intent;
|
||||
}
|
||||
public static Intent getIntentForSkillInfo(final Context ctx, SkillCollection.SkillID skillID) {
|
||||
Intent intent = new Intent(ctx, SkillInfoActivity.class);
|
||||
intent.putExtra("skillID", skillID.name());
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/showskillinfo/" + skillID));
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static void showCombatLog(final Context context, final ControllerContext controllerContext, final WorldContext world) {
|
||||
final String[] combatLogMessages = world.model.combatLog.getAllMessages();
|
||||
|
||||
View view = null;
|
||||
String msg = null;
|
||||
if (combatLogMessages.length > 0) {
|
||||
ListView itemList = null;
|
||||
itemList = new ListView(context);
|
||||
itemList.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT));
|
||||
itemList.setStackFromBottom(true);
|
||||
itemList.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
|
||||
itemList.setChoiceMode(ListView.CHOICE_MODE_NONE);
|
||||
itemList.setBackgroundResource(R.color.ui_blue_stdframe_bg);
|
||||
itemList.setAdapter(new ArrayAdapter<String>(context, R.layout.combatlog_row, android.R.id.text1, combatLogMessages));
|
||||
view = itemList;
|
||||
} else {
|
||||
msg = context.getResources().getString(R.string.combat_log_noentries);
|
||||
}
|
||||
|
||||
final Dialog d = CustomDialogFactory.createDialog(context,
|
||||
context.getResources().getString(R.string.combat_log_title),
|
||||
context.getResources().getDrawable(R.drawable.ui_icon_combat),
|
||||
msg,
|
||||
view,
|
||||
true);
|
||||
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, R.string.dialog_close);
|
||||
|
||||
showDialogAndPause(d, controllerContext);
|
||||
}
|
||||
}
|
||||
package com.gpl.rpg.AndorsTrail;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnDismissListener;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.activity.ActorConditionInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.BulkSelectionInterface;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ConversationActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ItemInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.LevelUpActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.LoadSaveActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MainActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MonsterEncounterActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MonsterInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.SkillInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.fragment.StartScreenActivity_MainMenu;
|
||||
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.ability.SkillCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Loot;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
|
||||
import com.gpl.rpg.AndorsTrail.view.CustomDialogFactory;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemContainerAdapter;
|
||||
|
||||
public final class Dialogs {
|
||||
|
||||
private static void showDialogAndPause(Dialog d, final ControllerContext context) {
|
||||
showDialogAndPause(d, context, null);
|
||||
}
|
||||
private static void showDialogAndPause(Dialog d, final ControllerContext context, final OnDismissListener onDismiss) {
|
||||
context.gameRoundController.pause();
|
||||
CustomDialogFactory.setDismissListener(d, new OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface arg0) {
|
||||
if (onDismiss != null) onDismiss.onDismiss(arg0);
|
||||
context.gameRoundController.resume();
|
||||
}
|
||||
});
|
||||
CustomDialogFactory.show(d);
|
||||
}
|
||||
|
||||
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 ControllerContext context, String phraseID) {
|
||||
showConversation(currentActivity, context, phraseID, null);
|
||||
}
|
||||
|
||||
public static void showMapScriptMessage(final MainActivity currentActivity, final ControllerContext context, String phraseID) {
|
||||
showConversation(currentActivity, context, phraseID, null, false);
|
||||
}
|
||||
|
||||
public static void showConversation(final MainActivity currentActivity, final ControllerContext context, final String phraseID, final Monster npc) {
|
||||
showConversation(currentActivity, context, phraseID, npc, true);
|
||||
}
|
||||
|
||||
private static void showConversation(final MainActivity currentActivity, final ControllerContext context, final String phraseID, final Monster npc, boolean applyScriptEffectsForFirstPhrase) {
|
||||
context.gameRoundController.pause();
|
||||
Intent intent = new Intent(currentActivity, ConversationActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/conversation/" + phraseID));
|
||||
intent.putExtra("applyScriptEffectsForFirstPhrase", applyScriptEffectsForFirstPhrase);
|
||||
addMonsterIdentifiers(intent, npc);
|
||||
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_CONVERSATION);
|
||||
}
|
||||
|
||||
public static void addMonsterIdentifiers(Intent intent, Monster monster) {
|
||||
if (monster == null) return;
|
||||
intent.putExtra("x", monster.position.x);
|
||||
intent.putExtra("y", monster.position.y);
|
||||
}
|
||||
public static void addMonsterIdentifiers(Bundle bundle, Monster monster) {
|
||||
if (monster == null) return;
|
||||
bundle.putInt("x", monster.position.x);
|
||||
bundle.putInt("y", monster.position.y);
|
||||
}
|
||||
|
||||
public static Monster getMonsterFromIntent(Intent intent, final WorldContext world) {
|
||||
return getMonsterFromBundle(intent.getExtras(), world);
|
||||
}
|
||||
public static Monster getMonsterFromBundle(Bundle params, final WorldContext world) {
|
||||
if (params == null) return null;
|
||||
if (!params.containsKey("x")) return null;
|
||||
int x = params.getInt("x");
|
||||
int y = params.getInt("y");
|
||||
return world.model.currentMap.getMonsterAt(x, y);
|
||||
}
|
||||
|
||||
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"));
|
||||
addMonsterIdentifiers(intent, monster);
|
||||
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_MONSTERENCOUNTER);
|
||||
}
|
||||
|
||||
public static void showMonsterInfo(final Context context, final Monster monster) {
|
||||
Intent intent = new Intent(context, MonsterInfoActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/monsterinfo"));
|
||||
addMonsterIdentifiers(intent, monster);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static String getGroundLootFoundMessage(final Context ctx, final Loot loot) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
if (!loot.items.isEmpty()) {
|
||||
sb.append(ctx.getString(R.string.dialog_groundloot_message));
|
||||
}
|
||||
appendGoldPickedUpMessage(ctx, loot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
public static String getGroundLootPickedUpMessage(final Context ctx, final Loot loot) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
appendLootPickedUpMessage(ctx, loot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
public static String getMonsterLootFoundMessage(final Context ctx, final Loot combinedLoot, final int exp) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
appendMonsterEncounterSurvivedMessage(ctx, sb, exp);
|
||||
appendGoldPickedUpMessage(ctx, combinedLoot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
public static String getMonsterLootPickedUpMessage(final Context ctx, final Loot combinedLoot, final int exp) {
|
||||
StringBuilder sb = new StringBuilder(60);
|
||||
appendMonsterEncounterSurvivedMessage(ctx, sb, exp);
|
||||
appendLootPickedUpMessage(ctx, combinedLoot, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
private static void appendMonsterEncounterSurvivedMessage(final Context ctx, final StringBuilder sb, final int exp) {
|
||||
sb.append(ctx.getString(R.string.dialog_monsterloot_message));
|
||||
if (exp > 0) {
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_monsterloot_gainedexp, exp));
|
||||
}
|
||||
}
|
||||
private static void appendGoldPickedUpMessage(final Context ctx, final Loot loot, final StringBuilder sb) {
|
||||
if (loot.gold > 0) {
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_loot_foundgold, loot.gold));
|
||||
}
|
||||
}
|
||||
private static void appendLootPickedUpMessage(final Context ctx, final Loot loot, final StringBuilder sb) {
|
||||
appendGoldPickedUpMessage(ctx, loot, sb);
|
||||
int numItems = loot.items.countItems();
|
||||
if (numItems == 1) {
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_loot_pickedupitem));
|
||||
} else if (numItems > 1){
|
||||
sb.append(' ');
|
||||
sb.append(ctx.getString(R.string.dialog_loot_pickedupitems, numItems));
|
||||
}
|
||||
}
|
||||
|
||||
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, controllers, world, combinedLoot, bags, R.string.dialog_monsterloot_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 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);
|
||||
itemList.setAdapter(new ItemContainerAdapter(mainActivity, world.tileManager, combinedLoot.items, world.model.player));
|
||||
|
||||
final Dialog d = CustomDialogFactory.createDialog(mainActivity,
|
||||
mainActivity.getResources().getString(title),
|
||||
mainActivity.getResources().getDrawable(R.drawable.ui_icon_equipment),
|
||||
msg,
|
||||
combinedLoot.items.isEmpty() ? null : itemList,
|
||||
true);
|
||||
|
||||
itemList.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
|
||||
|
||||
final String itemTypeID = ((ItemContainerAdapter) parent.getAdapter()).getItem(position).itemType.id;
|
||||
boolean removeFromCombinedLoot = true;
|
||||
for (Loot l : lootBags) {
|
||||
if (l == combinedLoot) removeFromCombinedLoot = false;
|
||||
if (l.items.removeItem(itemTypeID)) {
|
||||
controllers.itemController.removeLootBagIfEmpty(l);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (removeFromCombinedLoot) {
|
||||
combinedLoot.items.removeItem(itemTypeID);
|
||||
}
|
||||
if (((ItemContainerAdapter) parent.getAdapter()).isEmpty()) {
|
||||
ViewGroup vg = (ViewGroup) d.findViewById(R.id.dialog_content_container);
|
||||
vg.setVisibility(View.GONE);
|
||||
}
|
||||
ItemType type = world.itemTypes.getItemType(itemTypeID);
|
||||
world.model.player.inventory.addItem(type);
|
||||
((ItemContainerAdapter) itemList.getAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
||||
CustomDialogFactory.addButton(d, R.string.dialog_loot_pickall, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
controllers.itemController.pickupAll(lootBags);
|
||||
}
|
||||
});
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, R.string.dialog_close);
|
||||
|
||||
showDialogAndPause(d, controllers, new OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface arg0) {
|
||||
controllers.itemController.removeLootBagIfEmpty(lootBags);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Intent getIntentForItemInfo(final Context ctx, String itemTypeID, ItemInfoActivity.ItemInfoAction actionType, String buttonText, boolean buttonEnabled, Inventory.WearSlot inventorySlot) {
|
||||
Intent intent = new Intent(ctx, ItemInfoActivity.class);
|
||||
intent.putExtra("buttonText", buttonText);
|
||||
intent.putExtra("buttonEnabled", buttonEnabled);
|
||||
intent.putExtra("moreActions", (actionType != ItemInfoActivity.ItemInfoAction.buy && actionType != ItemInfoActivity.ItemInfoAction.sell));
|
||||
intent.putExtra("itemTypeID", itemTypeID);
|
||||
intent.putExtra("actionType", actionType.name());
|
||||
if (inventorySlot != null) intent.putExtra("inventorySlot", inventorySlot.name());
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/iteminfo/" + itemTypeID));
|
||||
return intent;
|
||||
}
|
||||
public static Intent getIntentForLevelUp(final Context ctx) {
|
||||
Intent intent = new Intent(ctx, LevelUpActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/levelup"));
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static void showConfirmRest(final Activity currentActivity, final ControllerContext controllerContext, final MapObject area) {
|
||||
// Dialog d = new AlertDialog.Builder(new ContextThemeWrapper(currentActivity, R.style.AndorsTrailStyle))
|
||||
// .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) {
|
||||
// controllerContext.mapController.rest(area);
|
||||
// }
|
||||
// })
|
||||
|
||||
//
|
||||
// .setNegativeButton(android.R.string.no, null)
|
||||
// .create();
|
||||
final Dialog d = CustomDialogFactory.createDialog(currentActivity,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_title),
|
||||
null,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_confirm_message),
|
||||
null,
|
||||
true);
|
||||
|
||||
CustomDialogFactory.addButton(d, android.R.string.yes, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
controllerContext.mapController.rest(area);
|
||||
}
|
||||
});
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, android.R.string.no);
|
||||
|
||||
showDialogAndPause(d, controllerContext);
|
||||
}
|
||||
public static void showRested(final Activity currentActivity, final ControllerContext controllerContext) {
|
||||
// Dialog d = new AlertDialog.Builder(new ContextThemeWrapper(currentActivity, R.style.AndorsTrailStyle))
|
||||
// .setTitle(R.string.dialog_rest_title)
|
||||
// .setMessage(R.string.dialog_rest_message)
|
||||
// .setNeutralButton(android.R.string.ok, null)
|
||||
// .create();
|
||||
final Dialog d = CustomDialogFactory.createDialog(currentActivity,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_title),
|
||||
null,
|
||||
currentActivity.getResources().getString(R.string.dialog_rest_message),
|
||||
null,
|
||||
true);
|
||||
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, android.R.string.ok);
|
||||
|
||||
showDialogAndPause(d, controllerContext);
|
||||
}
|
||||
|
||||
public static void showNewVersion(final Activity currentActivity) {
|
||||
// new AlertDialog.Builder(new ContextThemeWrapper(currentActivity, R.style.AndorsTrailStyle))
|
||||
// .setTitle(R.string.dialog_newversion_title)
|
||||
// .setMessage(R.string.dialog_newversion_message)
|
||||
// .setNeutralButton(android.R.string.ok, null)
|
||||
// .show();
|
||||
|
||||
final Dialog d = CustomDialogFactory.createDialog(currentActivity,
|
||||
currentActivity.getResources().getString(R.string.dialog_newversion_title),
|
||||
null,
|
||||
currentActivity.getResources().getString(R.string.dialog_newversion_message),
|
||||
null,
|
||||
true);
|
||||
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, android.R.string.ok);
|
||||
|
||||
CustomDialogFactory.show(d);
|
||||
}
|
||||
|
||||
public static boolean showSave(final Activity mainActivity, final ControllerContext controllerContext, final WorldContext world) {
|
||||
if (world.model.uiSelections.isInCombat) {
|
||||
Toast.makeText(mainActivity, R.string.menu_save_saving_not_allowed_in_combat, Toast.LENGTH_SHORT).show();
|
||||
return false;
|
||||
}
|
||||
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);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void showLoad(final Activity currentActivity) {
|
||||
Intent intent = new Intent(currentActivity, LoadSaveActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/load"));
|
||||
currentActivity.startActivityForResult(intent, StartScreenActivity_MainMenu.INTENTREQUEST_LOADGAME);
|
||||
}
|
||||
|
||||
public static void showLoad(final Fragment currentFragment) {
|
||||
Intent intent = new Intent(currentFragment.getActivity(), LoadSaveActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/load"));
|
||||
currentFragment.startActivityForResult(intent, StartScreenActivity_MainMenu.INTENTREQUEST_LOADGAME);
|
||||
}
|
||||
|
||||
public static void showActorConditionInfo(final Context context, ActorConditionType conditionType) {
|
||||
Intent intent = new Intent(context, ActorConditionInfoActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/actorconditioninfo/" + conditionType.conditionTypeID));
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static Intent getIntentForBulkBuyingInterface(final Context ctx, String itemTypeID, int totalAvailableAmount) {
|
||||
return getIntentForBulkSelectionInterface(ctx, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType.buy);
|
||||
}
|
||||
|
||||
public static Intent getIntentForBulkSellingInterface(final Context ctx, String itemTypeID, int totalAvailableAmount) {
|
||||
return getIntentForBulkSelectionInterface(ctx, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType.sell);
|
||||
}
|
||||
|
||||
public static Intent getIntentForBulkDroppingInterface(final Context ctx, String itemTypeID, int totalAvailableAmount) {
|
||||
return getIntentForBulkSelectionInterface(ctx, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType.drop);
|
||||
}
|
||||
|
||||
private static Intent getIntentForBulkSelectionInterface(final Context ctx, String itemTypeID, int totalAvailableAmount, BulkSelectionInterface.BulkInterfaceType interfaceType) {
|
||||
Intent intent = new Intent(ctx, BulkSelectionInterface.class);
|
||||
intent.putExtra("itemTypeID", itemTypeID);
|
||||
intent.putExtra("totalAvailableAmount", totalAvailableAmount);
|
||||
intent.putExtra("interfaceType", interfaceType.name());
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/bulkselection/" + itemTypeID));
|
||||
return intent;
|
||||
}
|
||||
public static Intent getIntentForSkillInfo(final Context ctx, SkillCollection.SkillID skillID) {
|
||||
Intent intent = new Intent(ctx, SkillInfoActivity.class);
|
||||
intent.putExtra("skillID", skillID.name());
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/showskillinfo/" + skillID));
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static void showCombatLog(final Context context, final ControllerContext controllerContext, final WorldContext world) {
|
||||
final String[] combatLogMessages = world.model.combatLog.getAllMessages();
|
||||
|
||||
View view = null;
|
||||
String msg = null;
|
||||
if (combatLogMessages.length > 0) {
|
||||
ListView itemList = null;
|
||||
itemList = new ListView(context);
|
||||
itemList.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT));
|
||||
itemList.setStackFromBottom(true);
|
||||
itemList.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
|
||||
itemList.setChoiceMode(ListView.CHOICE_MODE_NONE);
|
||||
itemList.setBackgroundResource(R.color.ui_blue_stdframe_bg);
|
||||
itemList.setAdapter(new ArrayAdapter<String>(context, R.layout.combatlog_row, android.R.id.text1, combatLogMessages));
|
||||
view = itemList;
|
||||
} else {
|
||||
msg = context.getResources().getString(R.string.combat_log_noentries);
|
||||
}
|
||||
|
||||
final Dialog d = CustomDialogFactory.createDialog(context,
|
||||
context.getResources().getString(R.string.combat_log_title),
|
||||
context.getResources().getDrawable(R.drawable.ui_icon_combat),
|
||||
msg,
|
||||
view,
|
||||
true);
|
||||
|
||||
|
||||
CustomDialogFactory.addDismissButton(d, R.string.dialog_close);
|
||||
|
||||
showDialogAndPause(d, controllerContext);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,105 +1,101 @@
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.controller.WorldMapController;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.WorldMapSegment;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.WorldMapSegment.WorldMapSegmentMap;
|
||||
import com.gpl.rpg.AndorsTrail.util.L;
|
||||
|
||||
public final class DisplayWorldMapActivity extends Activity {
|
||||
private WorldContext world;
|
||||
|
||||
private WebView displayworldmap_webview;
|
||||
private String worldMapSegmentName;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
if (!app.isInitialized()) { finish(); return; }
|
||||
this.world = app.getWorld();
|
||||
|
||||
app.setWindowParameters(this);
|
||||
|
||||
setContentView(R.layout.displayworldmap);
|
||||
|
||||
displayworldmap_webview = (WebView) findViewById(R.id.displayworldmap_webview);
|
||||
// displayworldmap_webview.setBackgroundColor(getResources().getColor(R.color.displayworldmap_background));
|
||||
displayworldmap_webview.getSettings().setBuiltInZoomControls(true);
|
||||
displayworldmap_webview.getSettings().setUseWideViewPort(true);
|
||||
enableJavascript();
|
||||
|
||||
Button b = (Button) findViewById(R.id.displayworldmap_close);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
DisplayWorldMapActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
worldMapSegmentName = getIntent().getStringExtra("worldMapSegmentName");
|
||||
}
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
public void enableJavascript() {
|
||||
displayworldmap_webview.getSettings().setJavaScriptEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
update();
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private void update() {
|
||||
File worldmap = WorldMapController.getCombinedWorldMapFile(worldMapSegmentName);
|
||||
|
||||
if (!worldmap.exists()) {
|
||||
Toast.makeText(this, getResources().getString(R.string.menu_button_worldmap_failed), Toast.LENGTH_LONG).show();
|
||||
this.finish();
|
||||
}
|
||||
|
||||
WorldMapSegment segment = world.maps.worldMapSegments.get(worldMapSegmentName);
|
||||
WorldMapSegmentMap map = segment.maps.get(world.model.currentMap.name);
|
||||
if (map == null) {
|
||||
this.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
String url = "file://" + worldmap.getAbsolutePath() + '?'
|
||||
+ (world.model.player.position.x + map.worldPosition.x) * WorldMapController.WORLDMAP_DISPLAY_TILESIZE
|
||||
+ ','
|
||||
+ (world.model.player.position.y + map.worldPosition.y-1) * WorldMapController.WORLDMAP_DISPLAY_TILESIZE;
|
||||
L.log("Showing " + url);
|
||||
displayworldmap_webview.loadUrl(url);
|
||||
displayworldmap_webview.setBackgroundColor(getResources().getColor(R.color.displayworldmap_background));
|
||||
|
||||
// if (Build.VERSION.SDK_INT >= 11) displayworldmap_webview.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
|
||||
|
||||
// displayworldmap_webview.setWebViewClient(new WebViewClient()
|
||||
// {
|
||||
// @SuppressLint("NewApi")
|
||||
// @Override
|
||||
// public void onPageFinished(WebView view, String url)
|
||||
// {
|
||||
// displayworldmap_webview.setBackgroundColor(0x00000000);
|
||||
// if (Build.VERSION.SDK_INT >= 11) displayworldmap_webview.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.controller.WorldMapController;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.WorldMapSegment;
|
||||
import com.gpl.rpg.AndorsTrail.model.map.WorldMapSegment.WorldMapSegmentMap;
|
||||
import com.gpl.rpg.AndorsTrail.util.L;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
public final class DisplayWorldMapActivity extends Activity {
|
||||
private WorldContext world;
|
||||
|
||||
private WebView displayworldmap_webview;
|
||||
private String worldMapSegmentName;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
if (!app.isInitialized()) { finish(); return; }
|
||||
this.world = app.getWorld();
|
||||
|
||||
app.setWindowParameters(this);
|
||||
|
||||
setContentView(R.layout.displayworldmap);
|
||||
|
||||
displayworldmap_webview = (WebView) findViewById(R.id.displayworldmap_webview);
|
||||
displayworldmap_webview.setBackgroundColor(getResources().getColor(R.color.displayworldmap_background));
|
||||
displayworldmap_webview.getSettings().setBuiltInZoomControls(true);
|
||||
displayworldmap_webview.getSettings().setUseWideViewPort(true);
|
||||
enableJavascript();
|
||||
|
||||
Button b = (Button) findViewById(R.id.displayworldmap_close);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
DisplayWorldMapActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
worldMapSegmentName = getIntent().getStringExtra("worldMapSegmentName");
|
||||
}
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
public void enableJavascript() {
|
||||
displayworldmap_webview.getSettings().setJavaScriptEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
update();
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private void update() {
|
||||
File worldmap = WorldMapController.getCombinedWorldMapFile(worldMapSegmentName);
|
||||
|
||||
if (!worldmap.exists()) {
|
||||
Toast.makeText(this, getResources().getString(R.string.menu_button_worldmap_failed), Toast.LENGTH_LONG).show();
|
||||
this.finish();
|
||||
}
|
||||
|
||||
WorldMapSegment segment = world.maps.worldMapSegments.get(worldMapSegmentName);
|
||||
WorldMapSegmentMap map = segment.maps.get(world.model.currentMap.name);
|
||||
if (map == null) {
|
||||
this.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
String url = "file://" + worldmap.getAbsolutePath() + '?'
|
||||
+ (world.model.player.position.x + map.worldPosition.x) * WorldMapController.WORLDMAP_DISPLAY_TILESIZE
|
||||
+ ','
|
||||
+ (world.model.player.position.y + map.worldPosition.y-1) * WorldMapController.WORLDMAP_DISPLAY_TILESIZE;
|
||||
L.log("Showing " + url);
|
||||
displayworldmap_webview.loadUrl(url);
|
||||
displayworldmap_webview.setBackgroundColor(getResources().getColor(R.color.displayworldmap_background));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish() {
|
||||
ViewGroup view = (ViewGroup) getWindow().getDecorView();
|
||||
view.removeAllViews();
|
||||
super.finish();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,132 +1,137 @@
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
|
||||
|
||||
public final class ItemInfoActivity extends Activity {
|
||||
|
||||
public static enum ItemInfoAction {
|
||||
none, use, equip, unequip, buy, sell
|
||||
}
|
||||
|
||||
public static final int RESULT_MORE_ACTIONS = Activity.RESULT_FIRST_USER;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
if (!app.isInitialized()) { finish(); return; }
|
||||
final WorldContext world = app.getWorld();
|
||||
|
||||
app.setWindowParameters(this);
|
||||
|
||||
final Intent intent = getIntent();
|
||||
Bundle params = intent.getExtras();
|
||||
String itemTypeID = params.getString("itemTypeID");
|
||||
final ItemType itemType = world.itemTypes.getItemType(itemTypeID);
|
||||
|
||||
final String buttonText = params.getString("buttonText");
|
||||
boolean buttonEnabled = params.getBoolean("buttonEnabled");
|
||||
|
||||
setContentView(R.layout.iteminfo);
|
||||
|
||||
TextView tv = (TextView) findViewById(R.id.iteminfo_title);
|
||||
tv.setText(itemType.getName(world.model.player));
|
||||
world.tileManager.setImageViewTileForSingleItemType(getResources(), tv, itemType);
|
||||
|
||||
tv = (TextView) findViewById(R.id.iteminfo_description);
|
||||
String description = itemType.getDescription();
|
||||
if (description != null) {
|
||||
tv.setText(description);
|
||||
tv.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
tv.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
tv = (TextView) findViewById(R.id.iteminfo_category);
|
||||
tv.setText(itemType.category.displayName);
|
||||
|
||||
((ItemEffectsView) findViewById(R.id.iteminfo_effects)).update(
|
||||
itemType.effects_equip,
|
||||
itemType.effects_use == null ? null : Collections.singletonList(itemType.effects_use),
|
||||
itemType.effects_hit == null ? null : Collections.singletonList(itemType.effects_hit),
|
||||
itemType.effects_kill == null ? null : Collections.singletonList(itemType.effects_kill),
|
||||
itemType.effects_hitReceived == null ? null : Collections.singletonList(itemType.effects_hitReceived),
|
||||
null,
|
||||
itemType.isWeapon()
|
||||
);
|
||||
|
||||
Button b = (Button) findViewById(R.id.iteminfo_close);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
setResult(RESULT_CANCELED);
|
||||
ItemInfoActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
b = (Button) findViewById(R.id.iteminfo_more);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Intent result = new Intent();
|
||||
result.putExtras(intent);
|
||||
setResult(RESULT_MORE_ACTIONS, intent);
|
||||
ItemInfoActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
b = (Button) findViewById(R.id.iteminfo_action);
|
||||
if (buttonText != null && buttonText.length() > 0) {
|
||||
b.setVisibility(View.VISIBLE);
|
||||
b.setEnabled(buttonEnabled);
|
||||
b.setText(buttonText);
|
||||
} else {
|
||||
b.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Intent result = new Intent();
|
||||
result.putExtras(intent);
|
||||
setResult(RESULT_OK, result);
|
||||
ItemInfoActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
tv = (TextView) findViewById(R.id.iteminfo_displaytype);
|
||||
if (itemType.isOrdinaryItem()) {
|
||||
tv.setVisibility(View.GONE);
|
||||
} else {
|
||||
tv.setVisibility(View.VISIBLE);
|
||||
final String diplayType = getDisplayTypeString(getResources(), itemType);
|
||||
tv.setText(diplayType);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDisplayTypeString(Resources res, ItemType itemType) {
|
||||
switch (itemType.displayType) {
|
||||
case rare: return res.getString(R.string.iteminfo_displaytypes_rare);
|
||||
case extraordinary: return res.getString(R.string.iteminfo_displaytypes_extraordinary);
|
||||
case legendary: return res.getString(R.string.iteminfo_displaytypes_legendary);
|
||||
case ordinary: return res.getString(R.string.iteminfo_displaytypes_ordinary);
|
||||
case quest: return res.getString(R.string.iteminfo_displaytypes_quest);
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
|
||||
|
||||
public final class ItemInfoActivity extends Activity {
|
||||
|
||||
public static enum ItemInfoAction {
|
||||
none, use, equip, unequip, buy, sell
|
||||
}
|
||||
|
||||
public static final int RESULT_MORE_ACTIONS = Activity.RESULT_FIRST_USER;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
if (!app.isInitialized()) { finish(); return; }
|
||||
final WorldContext world = app.getWorld();
|
||||
|
||||
app.setWindowParameters(this);
|
||||
|
||||
final Intent intent = getIntent();
|
||||
Bundle params = intent.getExtras();
|
||||
String itemTypeID = params.getString("itemTypeID");
|
||||
final ItemType itemType = world.itemTypes.getItemType(itemTypeID);
|
||||
|
||||
final String buttonText = params.getString("buttonText");
|
||||
boolean buttonEnabled = params.getBoolean("buttonEnabled");
|
||||
boolean moreButtonEnabled = params.getBoolean("moreActions");
|
||||
|
||||
setContentView(R.layout.iteminfo);
|
||||
|
||||
TextView tv = (TextView) findViewById(R.id.iteminfo_title);
|
||||
tv.setText(itemType.getName(world.model.player));
|
||||
world.tileManager.setImageViewTileForSingleItemType(getResources(), tv, itemType);
|
||||
|
||||
tv = (TextView) findViewById(R.id.iteminfo_description);
|
||||
String description = itemType.getDescription();
|
||||
if (description != null) {
|
||||
tv.setText(description);
|
||||
tv.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
tv.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
tv = (TextView) findViewById(R.id.iteminfo_category);
|
||||
tv.setText(itemType.category.displayName);
|
||||
|
||||
((ItemEffectsView) findViewById(R.id.iteminfo_effects)).update(
|
||||
itemType.effects_equip,
|
||||
itemType.effects_use == null ? null : Collections.singletonList(itemType.effects_use),
|
||||
itemType.effects_hit == null ? null : Collections.singletonList(itemType.effects_hit),
|
||||
itemType.effects_kill == null ? null : Collections.singletonList(itemType.effects_kill),
|
||||
itemType.effects_hitReceived == null ? null : Collections.singletonList(itemType.effects_hitReceived),
|
||||
null,
|
||||
itemType.isWeapon()
|
||||
);
|
||||
|
||||
Button b = (Button) findViewById(R.id.iteminfo_close);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
setResult(RESULT_CANCELED);
|
||||
ItemInfoActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
b = (Button) findViewById(R.id.iteminfo_more);
|
||||
if (!moreButtonEnabled) {
|
||||
b.setVisibility(View.GONE);
|
||||
} else {
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Intent result = new Intent();
|
||||
result.putExtras(intent);
|
||||
setResult(RESULT_MORE_ACTIONS, intent);
|
||||
ItemInfoActivity.this.finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
b = (Button) findViewById(R.id.iteminfo_action);
|
||||
if (buttonText != null && buttonText.length() > 0) {
|
||||
b.setVisibility(View.VISIBLE);
|
||||
b.setEnabled(buttonEnabled);
|
||||
b.setText(buttonText);
|
||||
} else {
|
||||
b.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Intent result = new Intent();
|
||||
result.putExtras(intent);
|
||||
setResult(RESULT_OK, result);
|
||||
ItemInfoActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
tv = (TextView) findViewById(R.id.iteminfo_displaytype);
|
||||
if (itemType.isOrdinaryItem()) {
|
||||
tv.setVisibility(View.GONE);
|
||||
} else {
|
||||
tv.setVisibility(View.VISIBLE);
|
||||
final String diplayType = getDisplayTypeString(getResources(), itemType);
|
||||
tv.setText(diplayType);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDisplayTypeString(Resources res, ItemType itemType) {
|
||||
switch (itemType.displayType) {
|
||||
case rare: return res.getString(R.string.iteminfo_displaytypes_rare);
|
||||
case extraordinary: return res.getString(R.string.iteminfo_displaytypes_extraordinary);
|
||||
case legendary: return res.getString(R.string.iteminfo_displaytypes_legendary);
|
||||
case ordinary: return res.getString(R.string.iteminfo_displaytypes_ordinary);
|
||||
case quest: return res.getString(R.string.iteminfo_displaytypes_quest);
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user