--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<translate
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@android:anim/accelerate_interpolator"
+ android:duration="300"
+ android:fromYDelta="0%"
+ android:toYDelta="100%"
+ />
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<translate
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@android:anim/decelerate_interpolator"
+ android:duration="300"
+ android:fromYDelta="100%"
+ android:toYDelta="0%"
+ />
\ No newline at end of file
android:layout_alignParentTop="true"
android:visibility="gone"
/>
+
+ <com.gpl.rpg.AndorsTrail.view.ToolboxView
+ android:id="@+id/main_toolboxview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_above="@id/main_statusview"
+ android:layout_alignParentLeft="true"
+ android:visibility="gone"
+ />
<com.gpl.rpg.AndorsTrail.view.MainView
android:id="@+id/main_mainview"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="1"
- android:shadowColor="#000"
+ android:shadowColor="#000"
/>
<LinearLayout
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:background="@drawable/ui_gradientshape"
+ >
+
+ <ImageButton
+ android:id="@+id/toolbox_playerinfo"
+ style="@style/toolboxButton"
+ android:src="@drawable/char_hero"
+ />
+ <ImageButton
+ android:id="@+id/toolbox_map"
+ style="@style/toolboxButton"
+ android:src="@drawable/ui_icon_map"
+ />
+</LinearLayout>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">@dimen/smalltext_buttonheight</item>
</style>
+
+ <style name="toolboxButton">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ </style>
</resources>
\ No newline at end of file
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.controller.CombatController;
import com.gpl.rpg.AndorsTrail.controller.MovementController;
-import com.gpl.rpg.AndorsTrail.controller.WorldMapController;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer.ItemEntry;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.view.CombatView;
import com.gpl.rpg.AndorsTrail.view.MainView;
+import com.gpl.rpg.AndorsTrail.view.ToolboxView;
import com.gpl.rpg.AndorsTrail.view.VirtualDpadView;
import com.gpl.rpg.AndorsTrail.view.QuickButton.QuickButtonContextMenuInfo;
import com.gpl.rpg.AndorsTrail.view.QuickitemView;
public final class MainActivity extends Activity {
- public static final int INTENTREQUEST_HEROINFO = 1;
public static final int INTENTREQUEST_MONSTERENCOUNTER = 2;
public static final int INTENTREQUEST_ITEMINFO = 3;
public static final int INTENTREQUEST_CONVERSATION = 4;
public StatusView statusview;
public CombatView combatview;
public QuickitemView quickitemview;
+ private ToolboxView toolboxview;
private LinearLayout activeConditions;
private VirtualDpadView dpad;
quickitemview = (QuickitemView) findViewById(R.id.main_quickitemview);
activeConditions = (LinearLayout) findViewById(R.id.statusview_activeconditions);
dpad = (VirtualDpadView) findViewById(R.id.main_virtual_dpad);
+ toolboxview = (ToolboxView) findViewById(R.id.main_toolboxview);
statusText = (TextView) findViewById(R.id.statusview_statustext);
statusText.setOnClickListener(new OnClickListener() {
});
clearMessages();
- if (AndorsTrailApplication.DEVELOPMENT_DEBUGBUTTONS) new DebugInterface(view).addDebugButtons();
+ if (AndorsTrailApplication.DEVELOPMENT_DEBUGBUTTONS) new DebugInterface(view).addDebugButtons();
quickitemview.setVisibility(View.GONE);
quickitemview.registerForContextMenu(this);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
- case INTENTREQUEST_HEROINFO:
- updateStatus();
- break;
case INTENTREQUEST_MONSTERENCOUNTER:
if (resultCode == Activity.RESULT_OK) {
view.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
return true;
}
});
- menu.add(R.string.menu_button_worldmap)
- .setIcon(android.R.drawable.ic_menu_mapmode)
- .setOnMenuItemClickListener(new OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem arg0) {
- WorldMapController.displayWorldMap(MainActivity.this, world);
- return true;
- }
- });
return true;
}
statusview.updateActiveConditions(this, activeConditions);
quickitemview.refreshQuickitems();
combatview.updateStatus();
+ toolboxview.updateIcons();
}
public void redrawAll(int why) {
t.show();
}
+ public void toggleToolboxVisibility() {
+ toolboxview.toggleVisibility();
+ statusview.bringToFront();
+ }
}
import java.io.IOException;
import java.io.PrintWriter;
+import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.activity.DisplayWorldMapActivity;
-import com.gpl.rpg.AndorsTrail.activity.MainActivity;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
import com.gpl.rpg.AndorsTrail.model.map.MapLayer;
pw.close();
}
- public static void displayWorldMap(MainActivity mainActivity, WorldContext world) {
+ public static boolean displayWorldMap(Context context, WorldContext world) {
String worldMapSegmentName = world.maps.getWorldMapSegmentNameForMap(world.model.currentMap.name);
if (worldMapSegmentName == null) {
- Toast.makeText(mainActivity, mainActivity.getResources().getString(R.string.display_worldmap_not_available), Toast.LENGTH_LONG).show();
- return;
+ Toast.makeText(context, context.getResources().getString(R.string.display_worldmap_not_available), Toast.LENGTH_LONG).show();
+ return false;
}
- Intent intent = new Intent(mainActivity, DisplayWorldMapActivity.class);
+ Intent intent = new Intent(context, DisplayWorldMapActivity.class);
intent.putExtra("worldMapSegmentName", worldMapSegmentName);
- mainActivity.startActivity(intent);
+ context.startActivity(intent);
+
+ return true;
}
}
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.R;
-import com.gpl.rpg.AndorsTrail.activity.MainActivity;
-import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager;
import android.content.Context;
-import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
heroImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
- Intent intent = new Intent(context, HeroinfoActivity.class);
- AndorsTrailApplication.getActivityFromActivityContext(context).startActivityForResult(intent, MainActivity.INTENTREQUEST_HEROINFO);
+ view.mainActivity.toggleToolboxVisibility();
}
});
healthBar = (RangeBar) findViewById(R.id.statusview_health);
// Therefore, we reuse existing ImageView:s if they are present, but just change the image on them.
ImageView iv;
if (currentChildIndex < previousChildCount) {
- // There already is a create dimage on this position, reuse it.
+ // There already is a created image on this position, reuse it.
iv = (ImageView) container.getChildAt(currentChildIndex);
iv.setVisibility(View.VISIBLE);
} else {
--- /dev/null
+package com.gpl.rpg.AndorsTrail.view;
+
+import android.content.Context;
+import android.content.Intent;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Animation.AnimationListener;
+import android.widget.ImageButton;
+import android.widget.LinearLayout;
+
+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.WorldContext;
+import com.gpl.rpg.AndorsTrail.controller.WorldMapController;
+
+public class ToolboxView extends LinearLayout implements OnClickListener {
+ private final WorldContext world;
+ private final Animation slideUpAnimation;
+ private final Animation slideDownAnimation;
+ private final ImageButton toolbox_playerinfo;
+ private final ImageButton toolbox_map;
+
+ public ToolboxView(final Context context, AttributeSet attrs) {
+ super(context, attrs);
+ AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
+ this.world = app.world;
+
+ inflate(context, R.layout.toolboxview, this);
+
+ this.slideUpAnimation = AnimationUtils.loadAnimation(context, R.anim.slideup);
+ this.slideDownAnimation = AnimationUtils.loadAnimation(context, R.anim.slidedown);
+ this.slideDownAnimation.setAnimationListener(new AnimationListener() {
+ @Override
+ public void onAnimationStart(Animation animation) { }
+ @Override
+ public void onAnimationRepeat(Animation animation) { }
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ ToolboxView.this.setVisibility(View.GONE);
+ }
+ });
+
+ toolbox_playerinfo = (ImageButton)findViewById(R.id.toolbox_playerinfo);
+ toolbox_playerinfo.setOnClickListener(this);
+ toolbox_map = (ImageButton)findViewById(R.id.toolbox_map);
+ toolbox_map.setOnClickListener(this);
+
+ updateIcons();
+ }
+
+ @Override
+ public void onClick(View btn) {
+ Context context = getContext();
+ if (btn == toolbox_playerinfo) {
+ context.startActivity(new Intent(context, HeroinfoActivity.class));
+ } else if (btn == toolbox_map) {
+ if (!WorldMapController.displayWorldMap(context, world)) return;
+ }
+ ToolboxView.this.setVisibility(View.GONE);
+ }
+
+ public void toggleVisibility() {
+ if (getVisibility() == View.VISIBLE) {
+ startAnimation(slideDownAnimation);
+ } else {
+ setVisibility(View.VISIBLE);
+ bringToFront();
+ startAnimation(slideUpAnimation);
+ }
+ }
+
+ public void updateIcons() {
+ world.tileManager.setImageViewTile(toolbox_playerinfo, world.model.player);
+ }
+}