mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-21 19:08:30 +01:00
New map-level property : "colorfilter".
Possible values are "black20", "black40", "black60", "black80", and "invert". The blackXX ones add a black shade on the map (making them look darker, like unlit caves), that has a 20% to 80% opacity. The invert one make the screen use inverted colors. Others could be added, but only static ones, like a B&W mode for example. Animated ones ( like continuous gamma rotation ) aren't viable performance-wise.
This commit is contained in:
@@ -1,44 +1,4 @@
|
||||
<?xml version="1.0" ?><map height="10" orientation="orthogonal" tileheight="32" tilewidth="32" version="1.0" width="10">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<tileset firstgid="1" name="map_bed_1" tileheight="32" tilewidth="32">
|
||||
<image height="256" source="../drawable/map_bed_1.png" width="512"/>
|
||||
</tileset><tileset firstgid="129" name="map_border_1" tileheight="32" tilewidth="32">
|
||||
@@ -185,8 +145,8 @@
|
||||
<object height="32" name="andor:1" type="key" width="320" x="0" y="288">
|
||||
<properties>
|
||||
<property name="phrase" value="keyarea_andor1"/>
|
||||
<property name="requireType" value="questProgress"/>
|
||||
<property name="requireId" value="andor"/>
|
||||
<property name="requireType" value="questProgress"/>
|
||||
<property name="requireValue" value="1"/>
|
||||
</properties>
|
||||
</object>
|
||||
@@ -194,4 +154,4 @@
|
||||
<objectgroup name="spawn" visible="0">
|
||||
<object height="32" name="mikhail" type="spawn" width="32" x="224" y="128"/>
|
||||
</objectgroup>
|
||||
</map>
|
||||
</map>
|
||||
|
||||
@@ -29,7 +29,7 @@ public final class VisualEffectController {
|
||||
private final VisualEffectCollection effectTypes;
|
||||
|
||||
public final VisualEffectFrameListeners visualEffectFrameListeners = new VisualEffectFrameListeners();
|
||||
|
||||
|
||||
public VisualEffectController(ControllerContext controllers, WorldContext world) {
|
||||
this.controllers = controllers;
|
||||
this.world = world;
|
||||
@@ -119,6 +119,8 @@ public final class VisualEffectController {
|
||||
else postDelayed(this, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static final Paint textPaint = new Paint();
|
||||
@@ -261,4 +263,6 @@ public final class VisualEffectController {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ public final class VisualEffectFrameListeners extends ListOfListeners<VisualEffe
|
||||
private final Function1<VisualEffectFrameListener, SpriteMoveAnimation> onSpriteMoveCompleted = new Function1<VisualEffectFrameListener, SpriteMoveAnimation>() {
|
||||
@Override public void call(VisualEffectFrameListener listener, SpriteMoveAnimation animation) { listener.onSpriteMoveCompleted(animation); }
|
||||
};
|
||||
|
||||
|
||||
@Override
|
||||
public void onNewAnimationFrame(VisualEffectAnimation animation, int tileID, int textYOffset) {
|
||||
callAllListeners(this.onNewAnimationFrame, animation, tileID, textYOffset);
|
||||
|
||||
@@ -10,10 +10,11 @@ import com.gpl.rpg.AndorsTrail.util.Size;
|
||||
import java.util.Collection;
|
||||
|
||||
public final class LayeredTileMap {
|
||||
private static final ColorFilter colorFilterBlack20 = createGrayScaleColorFilter(0.2f);
|
||||
private static final ColorFilter colorFilterBlack40 = createGrayScaleColorFilter(0.4f);
|
||||
private static final ColorFilter colorFilterBlack60 = createGrayScaleColorFilter(0.6f);
|
||||
private static final ColorFilter colorFilterBlack80 = createGrayScaleColorFilter(0.8f);
|
||||
private static final ColorFilter colorFilterBlack20 = createGrayScaleColorFilter(0.8f);
|
||||
private static final ColorFilter colorFilterBlack40 = createGrayScaleColorFilter(0.6f);
|
||||
private static final ColorFilter colorFilterBlack60 = createGrayScaleColorFilter(0.4f);
|
||||
private static final ColorFilter colorFilterBlack80 = createGrayScaleColorFilter(0.2f);
|
||||
private static final ColorFilter colorFilterInvert = createInvertColorFilter();
|
||||
|
||||
private final Size size;
|
||||
public final MapSection currentLayout;
|
||||
@@ -78,6 +79,7 @@ public final class LayeredTileMap {
|
||||
else if (colorFilter.equals("black40")) return colorFilterBlack40;
|
||||
else if (colorFilter.equals("black60")) return colorFilterBlack60;
|
||||
else if (colorFilter.equals("black80")) return colorFilterBlack80;
|
||||
else if (colorFilter.equals("invert")) return colorFilterInvert;
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -90,6 +92,15 @@ public final class LayeredTileMap {
|
||||
0.00f, 0.00f, 0.00f, 1.0f, 0.0f
|
||||
});
|
||||
}
|
||||
|
||||
private static ColorMatrixColorFilter createInvertColorFilter() {
|
||||
return new ColorMatrixColorFilter(new float[] {
|
||||
-1.00f, 0.00f, 0.00f, 0.0f, 255.0f,
|
||||
0.00f, -1.00f, 0.00f, 0.0f, 255.0f,
|
||||
0.00f, 0.00f, -1.00f, 0.0f, 255.0f,
|
||||
0.00f, 0.00f, 0.00f, 1.0f, 0.0f
|
||||
});
|
||||
}
|
||||
|
||||
public String getCurrentLayoutHash() {
|
||||
return currentLayoutHash;
|
||||
|
||||
@@ -2,11 +2,9 @@ package com.gpl.rpg.AndorsTrail.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Bitmap.Config;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Paint.Style;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Handler;
|
||||
import android.util.AttributeSet;
|
||||
@@ -24,7 +22,13 @@ import com.gpl.rpg.AndorsTrail.controller.InputController;
|
||||
import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.BloodSplatter;
|
||||
import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.SpriteMoveAnimation;
|
||||
import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.VisualEffectAnimation;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.*;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.CombatSelectionListener;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.GameRoundListener;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.MapLayoutListener;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.MonsterMovementListener;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.MonsterSpawnListener;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.PlayerMovementListener;
|
||||
import com.gpl.rpg.AndorsTrail.controller.listeners.VisualEffectFrameListener;
|
||||
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Loot;
|
||||
@@ -118,6 +122,8 @@ public final class MainView extends SurfaceView
|
||||
requestFocus();
|
||||
setOnClickListener(this.inputController);
|
||||
setOnLongClickListener(this.inputController);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -201,7 +207,7 @@ public final class MainView extends SurfaceView
|
||||
}
|
||||
|
||||
private static enum RedrawAllDebugReason {
|
||||
SurfaceChanged, MapChanged, PlayerMoved, MapScrolling
|
||||
SurfaceChanged, MapChanged, PlayerMoved, MapScrolling, FilterAnimation
|
||||
}
|
||||
private static enum RedrawAreaDebugReason {
|
||||
MonsterMoved, MonsterKilled, EffectCompleted
|
||||
|
||||
Reference in New Issue
Block a user