mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
Fixed UI icons resolution on HDPI devices introduced with sprite upscaling prevention for densities >1
Fixed variable text size in debug buttons Fixed game crahing & walkalbe issues in new versions of BWM maps.
This commit is contained in:
@@ -7,19 +7,24 @@
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/status_image"
|
||||
android:scaleType="fitCenter"
|
||||
android:padding="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="3sp"
|
||||
android:layout_margin="0sp"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/toolbox_toggle"
|
||||
android:scaleType="fitCenter"
|
||||
android:padding="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="0sp"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
<item name="android:textSize">@dimen/actionbar_text</item>
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">@dimen/smalltext_buttonheight</item>
|
||||
<item name="android:scaleType">fitCenter</item>
|
||||
<item name="android:adjustViewBounds">true</item>
|
||||
<item name="android:padding">5dp</item>
|
||||
</style>
|
||||
|
||||
<style name="toolboxButtonTile">
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
</layer>
|
||||
<layer name="Walkable" width="30" height="30">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJztk90NwCAIhB2hS7n/SqZvjeEOUMH+kZBaDXxwgXqUUn9P8dOs5/4OmZV7zcvOnhql2jK5Ef0ii+ZqekZwtVxIE4teLM7CRXszwv4at4+fqVl6Q/+jxvSJ5Ep8jcF2cYa7wnex787N1nl2LlA+dsdqRV/25t3FN/eL6vPMineudnK98U/vV+NGGMvr1XylN0L8qaw=
|
||||
eJztk90NwCAIhB2hS7n/Sk3fGsMdP4q2tiRE1MgHF6lHKfX3KX6ZNW7PkFm597ws9tQo1TaTm9EvsmyupmcGV8uFNLHoxd5ZuGhuIuyvcdv3PTVLd2gfNaZPJlfiaww2iyw/ikd6tOdduE/RuXd2UT52xmpFK7vzzuLO/aL6PH/F+69Wcntm5439atwMY3m9mo/0EyicqwA=
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup name="Mapevents" width="0" height="0">
|
||||
|
||||
@@ -190,12 +190,12 @@
|
||||
</objectgroup>
|
||||
<objectgroup name="Keys" width="14" height="10"/>
|
||||
<objectgroup name="Replace" width="14" height="10">
|
||||
<object name="quest:queststage" type="replace" x="96" y="128" width="160" height="96">
|
||||
<object name="quest:100" type="replace" x="96" y="128" width="160" height="96">
|
||||
<properties>
|
||||
<property name="Walkable" value="Walkable_replace"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object name="quest:queststage" type="replace" x="96" y="96" width="160" height="128">
|
||||
<object name="quest:100" type="replace" x="96" y="96" width="160" height="128">
|
||||
<properties>
|
||||
<property name="Above" value="Above_replace"/>
|
||||
<property name="Objects" value="Objects_replace"/>
|
||||
|
||||
@@ -44,10 +44,10 @@ public final class ConversationActivity
|
||||
|
||||
private static final int playerNameColor = Color.argb(255, 0xbb, 0x22, 0x22);
|
||||
private static final int NPCNameColor = Color.argb(255, 0xbb, 0xbb, 0x22);
|
||||
private static final int playerPhraseColor = Color.argb(255, 0x00, 0x00, 0x00);
|
||||
private static final int NPCPhraseColor = Color.argb(255, 0x00, 0x00, 0x00);
|
||||
private static final int playerPhraseColor = Color.argb(255, 0xff, 0xff, 0xff);
|
||||
private static final int NPCPhraseColor = Color.argb(255, 0xff, 0xff, 0xff);
|
||||
private static final int rewardColor = Color.argb(255, 0x99, 0x99, 0x55);
|
||||
private static final int oldPhraseColor = Color.argb(255, 0x3a, 0x3a, 0x3a);
|
||||
private static final int oldPhraseColor = Color.argb(255, 0xb0, 0xb0, 0xb0);
|
||||
private static final int oldPlayerNameColor = Color.argb(255, 0x89, 0x19, 0x19);
|
||||
private static final int oldNPCNameColor = Color.argb(255, 0xa2, 0xa2, 0x1d);
|
||||
private static final int oldRewardColor = Color.argb(255, 0x7a, 0x7a, 0x44);
|
||||
|
||||
@@ -162,7 +162,7 @@ public final class DebugInterface {
|
||||
lp.addRule(RelativeLayout.ABOVE, R.id.main_statusview);
|
||||
Button b = new Button(mainActivity);
|
||||
b.setText(button.text);
|
||||
b.setTextSize(res.getDimension(R.dimen.actionbar_text));
|
||||
b.setTextSize(10);//res.getDimension(R.dimen.actionbar_text));
|
||||
b.setId(id);
|
||||
b.setLayoutParams(lp);
|
||||
b.setOnClickListener(button.listener);
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.graphics.drawable.ScaleDrawable;
|
||||
import android.os.AsyncTask;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
@@ -53,6 +54,7 @@ public final class TileManager {
|
||||
|
||||
public int tileSize;
|
||||
public float density;
|
||||
public float uiIconScale;
|
||||
|
||||
public int viewTileSize;
|
||||
public float scale;
|
||||
@@ -118,6 +120,7 @@ public final class TileManager {
|
||||
|
||||
public void setDensity(Resources r) {
|
||||
density = r.getDisplayMetrics().density;
|
||||
uiIconScale = 100 * density;
|
||||
// tileSize = (int) (32 * density);
|
||||
if (density < 1) tileSize = (int) (32 * density);
|
||||
else tileSize = 32;
|
||||
@@ -138,8 +141,23 @@ public final class TileManager {
|
||||
public void setImageViewTileForPlayer(Resources res, TextView textView, int iconID) { setImageViewTile(res, textView, preloadedTiles.getBitmap(iconID)); }
|
||||
public void setImageViewTile(Resources res, TextView textView, ActorConditionType conditionType) { setImageViewTile(res, textView, preloadedTiles.getBitmap(conditionType.iconID)); }
|
||||
public void setImageViewTileForUIIcon(Resources res, TextView textView, int iconID) { setImageViewTile(res, textView, preloadedTiles.getBitmap(iconID)); }
|
||||
private void setImageViewTile(Resources res, TextView textView, Bitmap b) { textView.setCompoundDrawablesWithIntrinsicBounds(new BitmapDrawable(res, b), null, null, null); }
|
||||
|
||||
private void setImageViewTile(Resources res, TextView textView, Bitmap b) {
|
||||
if (density > 1) {
|
||||
setImageViewTile(textView, new BitmapDrawable(res, Bitmap.createScaledBitmap(b, (int)(tileSize*density), (int)(tileSize*density), true)));
|
||||
} else {
|
||||
setImageViewTile(textView, new BitmapDrawable(res, b));
|
||||
}
|
||||
}
|
||||
private void setImageViewTile(TextView textView, Drawable d) {
|
||||
/*if (density > 1) {
|
||||
ScaleDrawable sd = new ScaleDrawable(d, 0, uiIconScale, uiIconScale);
|
||||
sd.setLevel(8000);
|
||||
d.setBounds(0, 0, (int)(tileSize * density), (int)(tileSize * density));
|
||||
textView.setCompoundDrawables(sd, null, null, null);
|
||||
}
|
||||
else */textView.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null);
|
||||
}
|
||||
|
||||
public void setImageViewTileForSingleItemType(Resources res, TextView textView, ItemType itemType) {
|
||||
final Bitmap icon = tileCache.loadSingleTile(itemType.iconID, res);
|
||||
setImageViewTile(res, textView, itemType, icon);
|
||||
@@ -151,40 +169,81 @@ public final class TileManager {
|
||||
private void setImageViewTile(Resources res, TextView textView, ItemType itemType, Bitmap icon) {
|
||||
final int overlayIconID = itemType.getOverlayTileID();
|
||||
if (overlayIconID != -1) {
|
||||
textView.setCompoundDrawablesWithIntrinsicBounds(
|
||||
|
||||
if (density > 1) {
|
||||
|
||||
setImageViewTile(textView,
|
||||
new LayerDrawable(new Drawable[] {
|
||||
new BitmapDrawable(res, preloadedTiles.getBitmap(overlayIconID))
|
||||
,new BitmapDrawable(res, icon)
|
||||
}), null, null, null
|
||||
new BitmapDrawable(res, Bitmap.createScaledBitmap(preloadedTiles.getBitmap(overlayIconID), (int)(tileSize*density), (int)(tileSize*density), true))
|
||||
,new BitmapDrawable(res, Bitmap.createScaledBitmap(icon, (int)(tileSize*density), (int)(tileSize*density), true))
|
||||
})
|
||||
);
|
||||
} else {
|
||||
setImageViewTile(textView,
|
||||
new LayerDrawable(new Drawable[] {
|
||||
new BitmapDrawable(res, preloadedTiles.getBitmap(overlayIconID))
|
||||
,new BitmapDrawable(res, icon)
|
||||
})
|
||||
);
|
||||
}
|
||||
} else {
|
||||
setImageViewTile(res, textView, icon);
|
||||
}
|
||||
}
|
||||
|
||||
public void setImageViewTile(ImageView imageView, Monster monster) { setImageViewTileForMonster(imageView, monster.iconID); }
|
||||
public void setImageViewTile(ImageView imageView, Player player) { setImageViewTileForPlayer(imageView, player.iconID); }
|
||||
public void setImageViewTileForMonster(ImageView imageView, int iconID) { imageView.setImageBitmap(currentMapTiles.getBitmap(iconID)); }
|
||||
public void setImageViewTileForPlayer(ImageView imageView, int iconID) { imageView.setImageBitmap(preloadedTiles.getBitmap(iconID)); }
|
||||
public void setImageViewTile(ImageView imageView, ActorConditionType conditionType) { imageView.setImageBitmap(preloadedTiles.getBitmap(conditionType.iconID)); }
|
||||
public void setImageViewTileForUIIcon(ImageView imageView, int iconID) { imageView.setImageBitmap(preloadedTiles.getBitmap(iconID)); }
|
||||
|
||||
public void setImageViewTile(Resources res, ImageView imageView, Monster monster) { setImageViewTileForMonster(res, imageView, monster.iconID); }
|
||||
public void setImageViewTile(Resources res, ImageView imageView, Player player) { setImageViewTileForPlayer(res, imageView, player.iconID); }
|
||||
public void setImageViewTileForMonster(Resources res, ImageView imageView, int iconID) { setImageViewTile(res, imageView, currentMapTiles.getBitmap(iconID)); }
|
||||
public void setImageViewTileForPlayer(Resources res, ImageView imageView, int iconID) { setImageViewTile(res, imageView, preloadedTiles.getBitmap(iconID)); }
|
||||
public void setImageViewTile(Resources res, ImageView imageView, ActorConditionType conditionType) { setImageViewTile(res, imageView, preloadedTiles.getBitmap(conditionType.iconID)); }
|
||||
public void setImageViewTileForUIIcon(Resources res, ImageView imageView, int iconID) { setImageViewTile(res, imageView, preloadedTiles.getBitmap(iconID)); }
|
||||
public void setImageViewTile(Resources res, ImageView imageView, Bitmap b) {
|
||||
if (density > 1) {
|
||||
setImageViewTile(imageView, new BitmapDrawable(res, Bitmap.createScaledBitmap(b, (int)(tileSize*density), (int)(tileSize*density), true)));
|
||||
} else {
|
||||
setImageViewTile(imageView, new BitmapDrawable(res, b));
|
||||
}
|
||||
}
|
||||
public void setImageViewTile(ImageView imageView, Drawable d) {
|
||||
imageView.setImageDrawable(d);
|
||||
}
|
||||
|
||||
public void setImageViewTile(Resources res, ImageView imageView, ItemType itemType, TileCollection itemTileCollection) {
|
||||
final Bitmap icon = itemTileCollection.getBitmap(itemType.iconID);
|
||||
setImageViewTile(res, imageView, itemType, icon);
|
||||
}
|
||||
public void setImageViewTileWithOverlay(Resources res, ImageView imageView, int overlayIconID, Bitmap icon, boolean overlayAbove) {
|
||||
if (overlayIconID != -1) {
|
||||
Drawable overlayDrawable, iconDrawable;
|
||||
if (density > 1) {
|
||||
overlayDrawable = new BitmapDrawable(res, Bitmap.createScaledBitmap(preloadedTiles.getBitmap(overlayIconID), (int)(tileSize*density), (int)(tileSize*density), true));
|
||||
iconDrawable = new BitmapDrawable(res, Bitmap.createScaledBitmap(icon, (int)(tileSize*density), (int)(tileSize*density), true));
|
||||
} else {
|
||||
overlayDrawable = new BitmapDrawable(res, preloadedTiles.getBitmap(overlayIconID));
|
||||
iconDrawable = new BitmapDrawable(res, icon);
|
||||
}
|
||||
if (overlayAbove) {
|
||||
setImageViewTile(imageView,
|
||||
new LayerDrawable(new Drawable[] {
|
||||
iconDrawable
|
||||
,overlayDrawable
|
||||
})
|
||||
);
|
||||
} else {
|
||||
setImageViewTile(imageView,
|
||||
new LayerDrawable(new Drawable[] {
|
||||
overlayDrawable
|
||||
,iconDrawable
|
||||
})
|
||||
);
|
||||
}
|
||||
} else {
|
||||
setImageViewTile(res, imageView, icon);
|
||||
}
|
||||
}
|
||||
private void setImageViewTile(Resources res, ImageView imageView, ItemType itemType, Bitmap icon) {
|
||||
final int overlayIconID = itemType.getOverlayTileID();
|
||||
if (overlayIconID != -1) {
|
||||
imageView.setImageDrawable(
|
||||
new LayerDrawable(new Drawable[] {
|
||||
new BitmapDrawable(res, preloadedTiles.getBitmap(overlayIconID))
|
||||
,new BitmapDrawable(res, icon)
|
||||
})
|
||||
);
|
||||
} else {
|
||||
imageView.setImageBitmap(icon);
|
||||
}
|
||||
setImageViewTileWithOverlay(res, imageView, overlayIconID, icon, false);
|
||||
}
|
||||
|
||||
public void loadPreloadedTiles(Resources r) {
|
||||
|
||||
@@ -139,7 +139,7 @@ public final class CombatView extends RelativeLayout implements CombatSelectionL
|
||||
currentMonster = null;
|
||||
if (selectedMonster != null) {
|
||||
monsterBar.setVisibility(View.VISIBLE);
|
||||
world.tileManager.setImageViewTile(monsterInfo, selectedMonster);
|
||||
world.tileManager.setImageViewTile(res, monsterInfo, selectedMonster);
|
||||
updateMonsterHealth(selectedMonster);
|
||||
currentMonster = selectedMonster;
|
||||
}
|
||||
|
||||
@@ -102,7 +102,8 @@ public final class DisplayActiveActorConditionIcons implements ActorConditionLis
|
||||
private final Animation onNewIconAnimation;
|
||||
private final Animation onRemovedIconAnimation;
|
||||
private final Animation onAppliedEffectAnimation;
|
||||
|
||||
final Resources res;
|
||||
|
||||
public ActiveConditionIcon(Context context, int id) {
|
||||
this.id = id;
|
||||
this.image = new ImageView(context);
|
||||
@@ -113,7 +114,7 @@ public final class DisplayActiveActorConditionIcons implements ActorConditionLis
|
||||
this.onAppliedEffectAnimation = AnimationUtils.loadAnimation(context, R.anim.scalebeat);
|
||||
this.onRemovedIconAnimation.setAnimationListener(this);
|
||||
|
||||
final Resources res = context.getResources();
|
||||
res = context.getResources();
|
||||
|
||||
text.setTextColor(res.getColor(android.R.color.white));
|
||||
text.setShadowLayer(1, 1, 1, res.getColor(android.R.color.black));
|
||||
@@ -121,7 +122,7 @@ public final class DisplayActiveActorConditionIcons implements ActorConditionLis
|
||||
|
||||
private void setActiveCondition(ActorCondition condition) {
|
||||
this.condition = condition;
|
||||
tileManager.setImageViewTile(image, condition.conditionType);
|
||||
tileManager.setImageViewTile(res, image, condition.conditionType);
|
||||
image.setVisibility(View.VISIBLE);
|
||||
setIconText();
|
||||
}
|
||||
|
||||
@@ -26,12 +26,13 @@ public final class StatusView extends RelativeLayout implements PlayerStatsListe
|
||||
private final ControllerContext controllers;
|
||||
private final WorldContext world;
|
||||
private final Player player;
|
||||
private final Resources res;
|
||||
|
||||
private final RangeBar healthBar;
|
||||
private final RangeBar expBar;
|
||||
private final ImageButton heroImage;
|
||||
private boolean showingLevelup;
|
||||
private final Drawable levelupDrawable;
|
||||
// private final Drawable levelupDrawable;
|
||||
|
||||
public StatusView(final Context context, AttributeSet attr) {
|
||||
super(context, attr);
|
||||
@@ -59,11 +60,11 @@ public final class StatusView extends RelativeLayout implements PlayerStatsListe
|
||||
expBar = (RangeBar) findViewById(R.id.statusview_exp);
|
||||
expBar.init(R.drawable.ui_progress_exp, R.string.status_exp);
|
||||
|
||||
Resources res = getResources();
|
||||
levelupDrawable = new LayerDrawable(new Drawable[] {
|
||||
new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(player.iconID))
|
||||
,new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(TileManager.iconID_moveselect))
|
||||
});
|
||||
res = getResources();
|
||||
// levelupDrawable = new LayerDrawable(new Drawable[] {
|
||||
// new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(player.iconID))
|
||||
// ,new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(TileManager.iconID_moveselect))
|
||||
// });
|
||||
|
||||
updateStatus();
|
||||
updateIcon(player.canLevelup());
|
||||
@@ -101,9 +102,9 @@ public final class StatusView extends RelativeLayout implements PlayerStatsListe
|
||||
private void updateIcon(boolean canLevelUp) {
|
||||
showingLevelup = canLevelUp;
|
||||
if (canLevelUp) {
|
||||
heroImage.setImageDrawable(levelupDrawable);
|
||||
world.tileManager.setImageViewTileWithOverlay(res, heroImage, TileManager.iconID_moveselect, world.tileManager.preloadedTiles.getBitmap(player.iconID), true);
|
||||
} else {
|
||||
world.tileManager.setImageViewTile(heroImage, player);
|
||||
world.tileManager.setImageViewTile(res, heroImage, player);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ public final class ToolboxView extends LinearLayout implements OnClickListener {
|
||||
private boolean hideQuickslotsWhenToolboxIsClosed = false;
|
||||
private static final int quickSlotIcon = R.drawable.ui_icon_equipment;
|
||||
private final Drawable quickSlotIconsLockedDrawable;
|
||||
private final Resources res;
|
||||
|
||||
public ToolboxView(final Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -67,7 +68,7 @@ public final class ToolboxView extends LinearLayout implements OnClickListener {
|
||||
toolbox_combatlog = (ImageButton)findViewById(R.id.toolbox_combatlog);
|
||||
toolbox_combatlog.setOnClickListener(this);
|
||||
|
||||
Resources res = getResources();
|
||||
res = getResources();
|
||||
quickSlotIconsLockedDrawable = new LayerDrawable(new Drawable[] {
|
||||
res.getDrawable(quickSlotIcon)
|
||||
,new BitmapDrawable(res, world.tileManager.preloadedTiles.getBitmap(TileManager.iconID_moveselect))
|
||||
@@ -155,17 +156,17 @@ public final class ToolboxView extends LinearLayout implements OnClickListener {
|
||||
|
||||
private void setToolboxIcon(boolean opened) {
|
||||
if (opened) {
|
||||
world.tileManager.setImageViewTileForUIIcon(toggleToolboxVisibility, TileManager.iconID_boxopened);
|
||||
world.tileManager.setImageViewTileForUIIcon(res, toggleToolboxVisibility, TileManager.iconID_boxopened);
|
||||
} else {
|
||||
world.tileManager.setImageViewTileForUIIcon(toggleToolboxVisibility, TileManager.iconID_boxclosed);
|
||||
world.tileManager.setImageViewTileForUIIcon(res, toggleToolboxVisibility, TileManager.iconID_boxclosed);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateToggleQuickSlotItemsIcon() {
|
||||
if (preferences.showQuickslotsWhenToolboxIsVisible && !hideQuickslotsWhenToolboxIsClosed) {
|
||||
toolbox_quickitems.setImageDrawable(quickSlotIconsLockedDrawable);
|
||||
world.tileManager.setImageViewTile(toolbox_quickitems, quickSlotIconsLockedDrawable);
|
||||
return;
|
||||
}
|
||||
toolbox_quickitems.setImageDrawable(getResources().getDrawable(quickSlotIcon));
|
||||
world.tileManager.setImageViewTile(toolbox_quickitems, getResources().getDrawable(quickSlotIcon));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user