[editor] tanks colors

This commit is contained in:
2019-03-25 21:17:39 +03:00
parent 5b804c6902
commit a948dfbaad
14 changed files with 60 additions and 24 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "tankz", "name": "tankz",
"version": "0.8.6", "version": "0.8.7",
"private": true, "private": true,
"devDependencies": { "devDependencies": {
"dateformat": "^3.0.3", "dateformat": "^3.0.3",

View File

@@ -1,5 +1,6 @@
package ru.m.tankz.render; package ru.m.tankz.render;
import haxework.view.utils.BitmapUtil;
import flash.display.Bitmap; import flash.display.Bitmap;
import flash.display.DisplayObject; import flash.display.DisplayObject;
import flash.display.Shape; import flash.display.Shape;
@@ -253,6 +254,14 @@ class EagleItem extends BitmapItem<Eagle> {
var suffix = value.death ? '-death' : value.protect.active ? '-protected' : ''; var suffix = value.death ? '-death' : value.protect.active ? '-protected' : '';
return 'resources/image/eagle/eagle${suffix}.png'; return 'resources/image/eagle/eagle${suffix}.png';
} }
override public function redraw():Void {
var image = Assets.getBitmapData(getImage());
if (!value.color.zero) {
image = BitmapUtil.colorize(image, value.color);
}
view.bitmapData = image;
}
} }

View File

@@ -1,7 +1,6 @@
package ru.m.tankz.view; package ru.m.tankz.view;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.ButtonView;
import haxework.view.VGroupView; import haxework.view.VGroupView;
@:template class SettingsFrame extends VGroupView { @:template class SettingsFrame extends VGroupView {
@@ -10,9 +9,7 @@ import haxework.view.VGroupView;
@:provide var frameSwitcher:FrameSwitcher; @:provide var frameSwitcher:FrameSwitcher;
@:view var close:ButtonView; public function close():Void {
public function onPress(_):Void {
frameSwitcher.change(StartFrame.ID); frameSwitcher.change(StartFrame.ID);
} }
} }

View File

@@ -19,4 +19,4 @@ views:
- id: close - id: close
$type: haxework.view.ButtonView $type: haxework.view.ButtonView
skinId: button.close skinId: button.close
+onPress: $this:onPress +onPress: $code:close()

View File

@@ -1,13 +1,15 @@
package ru.m.tankz.core; package ru.m.tankz.core;
import ru.m.tankz.config.Config.EagleConfig; import haxework.color.Color;
import ru.m.geom.Rectangle; import ru.m.geom.Rectangle;
import ru.m.tankz.config.Config;
import ru.m.tankz.Type; import ru.m.tankz.Type;
class Eagle extends Entity { class Eagle extends Entity {
public var team(default, null):TeamId; public var team(default, null):TeamId;
public var config(default, null):EagleConfig; public var config(default, null):EagleConfig;
public var color(default, default):Color;
public var death(default, default):Bool; public var death(default, default):Bool;
public var protect(default, null):Modificator; public var protect(default, null):Modificator;

View File

@@ -139,6 +139,7 @@ class Game {
var eaglePoint = team.spawner.getPoint('eagle'); var eaglePoint = team.spawner.getPoint('eagle');
if (eaglePoint != null) { if (eaglePoint != null) {
var eagle = new Eagle(team.id, team.config.eagle); var eagle = new Eagle(team.id, team.config.eagle);
eagle.color = config.getColor(new PlayerId(eagle.team, -1));
team.eagleId = eagle.id; team.eagleId = eagle.id;
applyPoint(eagle, eaglePoint); applyPoint(eagle, eaglePoint);
engine.spawn(eagle); engine.spawn(eagle);

View File

@@ -1,2 +1,2 @@
points: [{y: 0, team: alpha, x: 0, direction: right, type: tank, index: 0}, {y: 0, team: beta, x: 6, direction: right, type: tank, index: 0}, {y: 0, team: gamma, x: 12, direction: right, type: tank, index: 0}, {y: 0, team: delta, x: 18, direction: right, type: tank, index: 0}, {y: 18, team: epsilon, x: 0, direction: right, type: tank, index: 0}, {y: 18, team: zeta, x: 6, direction: right, type: tank, index: 0}, {y: 18, team: eta, x: 12, direction: right, type: tank, index: 0}, {y: 18, team: theta, x: 18, direction: right, type: tank, index: 0}] points: [{y: 0, type: tank, direction: right, x: 0, team: alpha, index: 0}, {y: 0, type: tank, direction: right, x: 6, team: beta, index: 0}, {y: 0, type: tank, direction: right, x: 12, team: gamma, index: 0}, {y: 0, type: tank, direction: right, x: 18, team: delta, index: 0}, {y: 18, type: tank, direction: right, x: 0, team: epsilon, index: 0}, {y: 18, type: tank, direction: right, x: 6, team: zeta, index: 0}, {y: 18, type: tank, direction: right, x: 12, team: eta, index: 0}, {y: 18, type: tank, direction: right, x: 18, team: theta, index: 0}]
data: "0004400004400004400000044000044000044000555555555555555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555555555555555550004400004400004400000044000044000044000" data: "0004400004400004400000044000044000044000555555555555555555550000000000000000000002520000022000002520055503330550333055500252035502205530252000000352000025300000000000000110000000000525252011110252525005252520111102525250000000000110000000000000035200002530000002520355022055302520055503330550333055500252000002200000252000000000000000000000555555555555555555550004400004400004400000044000044000044000"

View File

@@ -61,12 +61,12 @@ class Editor {
Style.register(); Style.register();
view = new EditorView();
Root.bind(view);
Provider.setFactory(IConfigBundle, ConfigBundle); Provider.setFactory(IConfigBundle, ConfigBundle);
Provider.setFactory(ILevelBundle, LevelBundle); Provider.setFactory(ILevelBundle, LevelBundle);
view = new EditorView();
Root.bind(view);
view.switcher.change(LevelFrame.ID); view.switcher.change(LevelFrame.ID);
} }
} }

View File

@@ -53,12 +53,16 @@ import ru.m.tankz.util.LevelUtil;
resetSelected(); resetSelected();
item.selected = true; item.selected = true;
}); });
}
public function onShow():Void {
setGameType(ClassicGame.TYPE); setGameType(ClassicGame.TYPE);
} }
/*public function onShow():Void {
if (config == null) {
setGameType(ClassicGame.TYPE);
}
}*/
private function setGameType(type:GameType):Void { private function setGameType(type:GameType):Void {
config = configBundle.get(type); config = configBundle.get(type);

View File

@@ -6,6 +6,7 @@ layout.vAlign: top
layout.hAlign: center layout.hAlign: center
views: views:
- $type: haxework.view.HGroupView - $type: haxework.view.HGroupView
layout.margin: 5
views: views:
- $type: haxework.view.ButtonView - $type: haxework.view.ButtonView
skinId: button.simple skinId: button.simple
@@ -43,6 +44,7 @@ views:
margin: 5 margin: 5
factory: $code:ru.m.tankz.editor.level.BrickView.factory factory: $code:ru.m.tankz.editor.level.BrickView.factory
- $type: haxework.view.HGroupView - $type: haxework.view.HGroupView
layout.margin: 5
views: views:
- id: openButton - id: openButton
$type: haxework.view.ButtonView $type: haxework.view.ButtonView

View File

@@ -13,7 +13,7 @@ import haxework.view.VGroupView;
@:view("color") var colorLabel(default, null):InputView; @:view("color") var colorLabel(default, null):InputView;
private var color(default, set):Color; private var color(default, set):Color;
public function onShow():Void { public function init():Void {
color = 0x00ff00; color = 0x00ff00;
} }

View File

@@ -1,5 +1,6 @@
package ru.m.tankz.editor.level; package ru.m.tankz.editor.level;
import haxework.color.Color;
import flash.display.Shape; import flash.display.Shape;
import haxework.view.ImageView; import haxework.view.ImageView;
import openfl.utils.Assets; import openfl.utils.Assets;
@@ -33,10 +34,15 @@ class BrushView<D> extends ImageView {
return null; return null;
} }
private function resolveColor(value:D):Color {
return 0;
}
private function set_data(value:D):D { private function set_data(value:D):D {
data = value; data = value;
var src = resolveSrc(value); var src = resolveSrc(value);
image = Assets.getBitmapData(src); image = Assets.getBitmapData(src);
color = resolveColor(value);
return data; return data;
} }

View File

@@ -1,11 +1,13 @@
package ru.m.tankz.editor.level; package ru.m.tankz.editor.level;
import openfl.Assets;
import flash.display.DisplayObjectContainer; import flash.display.DisplayObjectContainer;
import flash.display.Graphics; import flash.display.Graphics;
import flash.display.Sprite; import flash.display.Sprite;
import flash.events.MouseEvent; import flash.events.MouseEvent;
import haxework.color.Color;
import haxework.view.SpriteView; import haxework.view.SpriteView;
import haxework.view.utils.BitmapUtil;
import openfl.Assets;
import ru.m.geom.Point; import ru.m.geom.Point;
import ru.m.geom.Rectangle; import ru.m.geom.Rectangle;
import ru.m.tankz.config.Config; import ru.m.tankz.config.Config;
@@ -13,6 +15,7 @@ import ru.m.tankz.core.Entity;
import ru.m.tankz.map.Brick; import ru.m.tankz.map.Brick;
import ru.m.tankz.map.LevelMap; import ru.m.tankz.map.LevelMap;
import ru.m.tankz.render.RenderItem; import ru.m.tankz.render.RenderItem;
import ru.m.tankz.Type.PlayerId;
class SpawnPointEntity extends Entity { class SpawnPointEntity extends Entity {
@@ -29,6 +32,7 @@ class SpawnPointItem extends BitmapItem<SpawnPointEntity> {
private var cellX:Int = -1; private var cellX:Int = -1;
private var cellY:Int = -1; private var cellY:Int = -1;
private var src:String; private var src:String;
private var color:Color;
public function new(value:SpawnPoint, config:Config) { public function new(value:SpawnPoint, config:Config) {
src = getSrc(value, config); src = getSrc(value, config);
@@ -38,19 +42,14 @@ class SpawnPointItem extends BitmapItem<SpawnPointEntity> {
config.map.cellWidth * 2, config.map.cellWidth * 2,
config.map.cellHeight * 2 config.map.cellHeight * 2
))); )));
color = config.getColor(new PlayerId(value.team, value.index));
} }
public static function getSrc(value:SpawnPoint, config:Config):String { public static function getSrc(value:SpawnPoint, config:Config):String {
var preset:GamePreset = config.presets[config.presets.length - 1]; var preset:GamePreset = config.presets[config.presets.length - 1];
var tankConfig:TankConfig = null; var tankConfig:TankConfig = null;
if (value.type == 'tank') { if (value.type == 'tank') {
var team:TeamConfig = Lambda.find(preset.teams, function(t) return t.id == value.team); var player = config.getPlayer(new PlayerId(value.team, value.index < 0 ? 0 : value.index));
var player:PlayerConfig = null;
if (value.index > 0) {
player = Lambda.find(team.players, function(p) return p.index == value.index);
} else {
player = team.players[0];
}
var tankType = player.tanks[0]; var tankType = player.tanks[0];
tankConfig = config.getTank(tankType.type); tankConfig = config.getTank(tankType.type);
} }
@@ -63,8 +62,8 @@ class SpawnPointItem extends BitmapItem<SpawnPointEntity> {
override public function update():Void { override public function update():Void {
super.update(); super.update();
var image = Assets.getBitmapData(getImage());
if (cellX != value.point.x || cellY != value.point.y) { if (cellX != value.point.x || cellY != value.point.y) {
var image = Assets.getBitmapData(getImage());
cellX = value.point.x; cellX = value.point.x;
cellY = value.point.y; cellY = value.point.y;
value.rect.x = cellX * (value.rect.width / 2) + (value.rect.width - image.width) / 2; value.rect.x = cellX * (value.rect.width / 2) + (value.rect.width - image.width) / 2;
@@ -73,6 +72,14 @@ class SpawnPointItem extends BitmapItem<SpawnPointEntity> {
} }
} }
override public function redraw():Void {
var image = Assets.getBitmapData(getImage());
if (!color.zero) {
image = BitmapUtil.colorize(image, color);
}
view.bitmapData = image;
}
override private function getImage():String { override private function getImage():String {
return src; return src;
} }

View File

@@ -1,11 +1,19 @@
package ru.m.tankz.editor.level; package ru.m.tankz.editor.level;
import haxework.color.Color;
import haxework.provider.Provider; import haxework.provider.Provider;
import ru.m.tankz.config.Config; import ru.m.tankz.config.Config;
import ru.m.tankz.editor.level.MapEditView; import ru.m.tankz.editor.level.MapEditView;
import ru.m.tankz.Type.PlayerId;
class SpawnPointView extends BrushView<SpawnPoint> { class SpawnPointView extends BrushView<SpawnPoint> {
@:provide var config:Config;
override private function resolveColor(value:SpawnPoint):Color {
return config.getColor(new PlayerId(value.team, value.index));
}
override private function resolveSrc(value:SpawnPoint):String { override private function resolveSrc(value:SpawnPoint):String {
return SpawnPointItem.getSrc(value, Provider.get(Config)); return SpawnPointItem.getSrc(value, Provider.get(Config));
} }