diff --git a/AndorsTrail/res/values/strings.xml b/AndorsTrail/res/values/strings.xml index 18526cc30..d9441e6bc 100644 --- a/AndorsTrail/res/values/strings.xml +++ b/AndorsTrail/res/values/strings.xml @@ -588,6 +588,8 @@ Every skill level increases the attack chance of weapons with %1$d %% of their o Bottom left, along bottom border Bottom right, along bottom border Bottom right, along right border + Show quickslots when toolbox is opened + Makes the quickslot buttons be displayed as soon as the toolbox is opened This is a development version of Andor\'s Trail. Savegames produced by this version are incompatible with the release version. This is a prerelease version of Andor\'s Trail. Savegames produced by this version might not be compatible with the release version. Game statistics diff --git a/AndorsTrail/res/xml/preferences.xml b/AndorsTrail/res/xml/preferences.xml index 83e44b1cf..4cce38e62 100644 --- a/AndorsTrail/res/xml/preferences.xml +++ b/AndorsTrail/res/xml/preferences.xml @@ -93,5 +93,10 @@ android:defaultValue="0" android:entries="@array/preferences_quickslots_placements" android:entryValues="@array/preferences_quickslots_placements_values" /> + diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailPreferences.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailPreferences.java index 7993afbff..0eb344d3a 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailPreferences.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailPreferences.java @@ -50,6 +50,7 @@ public final class AndorsTrailPreferences { public boolean enableUiAnimations = true; public int displayOverwriteSavegame = CONFIRM_OVERWRITE_SAVEGAME_ALWAYS; public int quickslotsPosition = QUICKSLOTS_POSITION_HORIZONTAL_CENTER_BOTTOM; + public boolean showQuickslotsWhenToolboxIsVisible = false; public void read(final Context androidContext) { AndorsTrailPreferences dest = this; @@ -68,6 +69,7 @@ public final class AndorsTrailPreferences { dest.enableUiAnimations = prefs.getBoolean("enableUiAnimations", true); dest.displayOverwriteSavegame = Integer.parseInt(prefs.getString("display_overwrite_savegame", Integer.toString(CONFIRM_OVERWRITE_SAVEGAME_ALWAYS))); dest.quickslotsPosition = Integer.parseInt(prefs.getString("quickslots_placement", Integer.toString(QUICKSLOTS_POSITION_HORIZONTAL_CENTER_BOTTOM))); + dest.showQuickslotsWhenToolboxIsVisible = prefs.getBoolean("showQuickslotsWhenToolboxIsVisible", false); // This might be implemented as a skill in the future. //dest.movementAggressiveness = Integer.parseInt(prefs.getString("movementaggressiveness", Integer.toString(MOVEMENTAGGRESSIVENESS_NORMAL))); @@ -86,6 +88,7 @@ public final class AndorsTrailPreferences { dest.enableUiAnimations = true; dest.displayOverwriteSavegame = CONFIRM_OVERWRITE_SAVEGAME_ALWAYS; dest.quickslotsPosition = QUICKSLOTS_POSITION_HORIZONTAL_CENTER_BOTTOM; + dest.showQuickslotsWhenToolboxIsVisible = false; } } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java index 4ad576945..fb6badcf6 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java @@ -31,11 +31,9 @@ public final class StatusView extends RelativeLayout implements PlayerStatsListe private final RangeBar healthBar; private final RangeBar expBar; private final ImageButton heroImage; - private final ImageButton toggleToolbox; private boolean showingLevelup; private final Drawable levelupDrawable; - private ToolboxView toolbox; - + public StatusView(final Context context, AttributeSet attr) { super(context, attr); AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context); @@ -67,24 +65,13 @@ public final class StatusView extends RelativeLayout implements PlayerStatsListe new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(player.iconID)) ,new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(TileManager.iconID_moveselect)) }); - - toggleToolbox = (ImageButton) findViewById(R.id.toolbox_toggle); - world.tileManager.setImageViewTileForUIIcon(toggleToolbox, TileManager.iconID_boxclosed); - toggleToolbox.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - toolbox.toggleVisibility(); - } - }); - + updateStatus(); updateIcon(player.canLevelup()); } public void registerToolboxViews(ToolboxView toolbox, QuickitemView quickitemView) { - this.toolbox = toolbox; - toolbox.registerToolboxViews(toggleToolbox, quickitemView); - toolbox.updateIcons(); + toolbox.registerToolboxViews((ImageButton) findViewById(R.id.toolbox_toggle), quickitemView); } public void updateStatus() { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java index 158408504..02d7ca12c 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java @@ -2,6 +2,10 @@ package com.gpl.rpg.AndorsTrail.view; import android.app.Activity; import android.content.Context; +import android.content.res.Resources; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; @@ -30,8 +34,11 @@ public final class ToolboxView extends LinearLayout implements OnClickListener { private final ImageButton toolbox_map; private final ImageButton toolbox_save; private final ImageButton toolbox_combatlog; - private ImageButton toggleVisibility; + private ImageButton toggleToolboxVisibility; private QuickitemView quickitemView; + private boolean hideQuickslotsWhenToolboxIsClosed = false; + private static final int quickSlotIcon = R.drawable.ui_icon_equipment; + private final Drawable quickSlotIconsLockedDrawable; public ToolboxView(final Context context, AttributeSet attrs) { super(context, attrs); @@ -60,18 +67,29 @@ public final class ToolboxView extends LinearLayout implements OnClickListener { toolbox_save.setOnClickListener(this); toolbox_combatlog = (ImageButton)findViewById(R.id.toolbox_combatlog); toolbox_combatlog.setOnClickListener(this); + + Resources res = getResources(); + quickSlotIconsLockedDrawable = new LayerDrawable(new Drawable[] { + res.getDrawable(quickSlotIcon) + ,new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(TileManager.iconID_moveselect)) + }); + hideQuickslotsWhenToolboxIsClosed = preferences.showQuickslotsWhenToolboxIsVisible; } public void registerToolboxViews(ImageButton toggleVisibility, QuickitemView quickitemView) { - this.toggleVisibility = toggleVisibility; + this.toggleToolboxVisibility = toggleVisibility; this.quickitemView = quickitemView; + toggleVisibility.setOnClickListener(this); + updateIcons(); } @Override public void onClick(View btn) { Context context = getContext(); - if (btn == toolbox_quickitems) { - toggleQuickItemView(); + if (btn == toggleToolboxVisibility) { + toggleVisibility(); + } else if (btn == toolbox_quickitems) { + toggleQuickslotItemView(); } else if (btn == toolbox_map) { if (!WorldMapController.displayWorldMap(context, world)) return; setVisibility(View.GONE); @@ -87,29 +105,51 @@ public final class ToolboxView extends LinearLayout implements OnClickListener { if (getVisibility() == View.GONE) setToolboxIcon(false); } - private void toggleQuickItemView() { - if (quickitemView.getVisibility() == View.VISIBLE){ - quickitemView.setVisibility(View.GONE); + private void toggleQuickslotItemView() { + if (preferences.showQuickslotsWhenToolboxIsVisible) { + hideQuickslotsWhenToolboxIsClosed = !hideQuickslotsWhenToolboxIsClosed; + updateToggleQuickSlotItemsIcon(); } else { - quickitemView.setVisibility(View.VISIBLE); + if (quickitemView.getVisibility() == View.VISIBLE) { + quickitemView.setVisibility(View.GONE); + } else { + quickitemView.setVisibility(View.VISIBLE); + } } } - public void toggleVisibility() { - if (getVisibility() == View.VISIBLE) { + private void toggleVisibility() { + if (getVisibility() == View.VISIBLE) hide(); + else show(); + } + + private void hide() { + if (getVisibility() != View.GONE) { if (preferences.enableUiAnimations) { startAnimation(hideAnimation); } else { setVisibility(View.GONE); } - setToolboxIcon(false); - } else { + } + if (preferences.showQuickslotsWhenToolboxIsVisible) { + if (hideQuickslotsWhenToolboxIsClosed) { + quickitemView.setVisibility(View.GONE); + } + } + setToolboxIcon(false); + } + + private void show() { + if (getVisibility() != View.VISIBLE) { setVisibility(View.VISIBLE); if (preferences.enableUiAnimations) { startAnimation(showAnimation); } - setToolboxIcon(true); } + if (preferences.showQuickslotsWhenToolboxIsVisible) { + quickitemView.setVisibility(View.VISIBLE); + } + setToolboxIcon(true); } public void updateIcons() { @@ -118,9 +158,17 @@ public final class ToolboxView extends LinearLayout implements OnClickListener { private void setToolboxIcon(boolean opened) { if (opened) { - world.tileManager.setImageViewTileForUIIcon(toggleVisibility, TileManager.iconID_boxopened); + world.tileManager.setImageViewTileForUIIcon(toggleToolboxVisibility, TileManager.iconID_boxopened); } else { - world.tileManager.setImageViewTileForUIIcon(toggleVisibility, TileManager.iconID_boxclosed); + world.tileManager.setImageViewTileForUIIcon(toggleToolboxVisibility, TileManager.iconID_boxclosed); } } + + private void updateToggleQuickSlotItemsIcon() { + if (preferences.showQuickslotsWhenToolboxIsVisible && !hideQuickslotsWhenToolboxIsClosed) { + toolbox_quickitems.setImageDrawable(quickSlotIconsLockedDrawable); + return; + } + toolbox_quickitems.setImageDrawable(getResources().getDrawable(quickSlotIcon)); + } }