[render] tankz colors

This commit is contained in:
2018-02-08 23:12:10 +03:00
parent dd1014e230
commit a7effef412
26 changed files with 66 additions and 61 deletions

View File

@@ -8,8 +8,9 @@ import flash.display.BitmapData;
class BitmapUtil {
public static function colorize(data: BitmapData, color: Color):BitmapData {
if (color.zero) return data;
var result = data.clone();
var transform = new ColorTransform(1, 1, 1, 1, color.red, color.green, color.blue, color.alpha);
var transform = new ColorTransform(color.red / 255, color.green / 255, color.blue / 255, 1, 0, 0, 0, 0);
result.colorTransform(new Rectangle(0, 0, result.width, result.height), transform);
return result;
}

View File

@@ -5,6 +5,7 @@ abstract Color(Int) {
public var red(get, never):Int;
public var green(get, never):Int;
public var blue(get, never):Int;
public var zero(get, never):Bool;
public inline function new(value:Int) {
this = value;
@@ -26,6 +27,15 @@ abstract Color(Int) {
return this & 255;
}
private inline function get_zero():Bool {
return this == 0;
}
@:from
static public inline function fromInt(value:Int):Color {
return new Color(value);
}
@:from
static public inline function fromString(value:String):Color {
return new Color(Std.parseInt('0x${value.split('#').pop()}'));

View File

@@ -155,32 +155,14 @@ class TankItem extends RenderItem<Tank, Sprite> {
}
override public function redraw():Void {
// ToDo: ImageBundle
tankView.frames = getFrames().map(function(s) return BitmapUtil.colorize(Assets.getBitmapData(s), '#cc0000'));
}
public static function getTankFrames(team:TeamId, index:Int, type:TankType, hits:Int=0):Array<String> {
var group = type.group;
if (team == 'radiant') {
index = 0;
}
if (team == 'dire') {
index = 1;
}
if (team == 'human' || team == 'radiant' || team == 'dire') {
group = 'player';
}
if (team == 'bot') {
index = hits;
}
return [
'resources/images/tank/${group}/tank_${group.charAt(0)}${type.type}_${index}-0.png',
'resources/images/tank/${group}/tank_${group.charAt(0)}${type.type}_${index}-1.png',
];
tankView.frames = getFrames().map(function(src) return BitmapUtil.colorize(Assets.getBitmapData(src), value.color));
}
private function getFrames():Array<String> {
return getTankFrames(value.playerId.team, value.playerId.index, value.config, value.hits);
return [
'resources/image/tank/${value.config.skin}-0.png',
'resources/image/tank/${value.config.skin}-1.png',
];
}
override public function update():Void {

View File

@@ -19,7 +19,6 @@ bricks:
teams:
- id: human
spawnInterval: 0
tanks:
- {group: human, type: 0, rate: 1}
- id: bot
@@ -54,6 +53,7 @@ tanks:
<<: *bullet
speed: 8.0
bullets: 1
skin: pa
- type: 1
width: 40
@@ -63,6 +63,7 @@ tanks:
<<: *bullet
speed: 8.5
bullets: 1
skin: pb
- type: 2
width: 40
@@ -72,6 +73,7 @@ tanks:
<<: *bullet
speed: 9.0
bullets: 2
skin: pc
- type: 3
width: 42
@@ -82,6 +84,8 @@ tanks:
speed: 9.0
piercing: 3
bullets: 2
hits: 1
skin: pd
bot:
- type: 0
@@ -93,6 +97,7 @@ tanks:
speed: 7.0
bullets: 1
score: 100
skin: ba
- type: 1
width: 40
@@ -103,6 +108,7 @@ tanks:
speed: 7.0
bullets: 1
score: 200
skin: bb
- type: 2
width: 38
@@ -113,6 +119,7 @@ tanks:
speed: 9.0
bullets: 1
score: 300
skin: bc
- type: 3
width: 40
@@ -124,3 +131,4 @@ tanks:
bullets: 1
score: 400
hits: 3
skin: bd

View File

@@ -19,17 +19,16 @@ bricks:
team_tanks: &team_tanks
tanks:
- {group: any, type: 0, rate: 0.25}
- {group: any, type: 1, rate: 0.25}
- {group: any, type: 2, rate: 0.25}
- {group: any, type: 0, rate: 0.5}
- {group: any, type: 1, rate: 0.5}
teams:
- <<: *team_tanks
id: radiant
spawnInterval: 0
color: 0xff5555
- <<: *team_tanks
id: dire
spawnInterval: 0
color: 0x5555ff
points:
- {team: radiant, type: eagle, index: -1, direction: right, x: 0, y: 28}
@@ -54,38 +53,21 @@ bullet: &bullet
tanks:
any:
- type: 0
width: 36
width: 38
height: 36
speed: 2.5
speed: 2.0
bullet:
<<: *bullet
speed: 8.0
speed: 10.0
bullets: 1
skin: bc
- type: 1
width: 40
height: 36
speed: 3.0
speed: 4.0
bullet:
<<: *bullet
speed: 8.5
speed: 7.0
bullets: 1
- type: 2
width: 40
height: 36
speed: 3.0
bullet:
<<: *bullet
speed: 9.0
bullets: 2
- type: 3
width: 42
height: 38
speed: 2.9
bullet:
<<: *bullet
speed: 9.0
piercing: 3
bullets: 2
skin: bb

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB