[core] add color to PlayerState
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz.frame.common;
|
||||
|
||||
import haxework.color.ColorUtil;
|
||||
import ru.m.tankz.control.Control;
|
||||
import haxework.gui.DataView;
|
||||
import haxework.gui.HGroupView;
|
||||
@@ -88,12 +89,14 @@ class TeamSkin implements ISkin<TeamButton> {
|
||||
private function onTeamSelect(team:TeamId) {
|
||||
if (player != null) {
|
||||
player.control = Control.BOT;
|
||||
player.color = 0;
|
||||
player = null;
|
||||
}
|
||||
for (p in data) {
|
||||
if (p.id.team == team && p.control != Control.HUMAN) {
|
||||
player = p;
|
||||
player.control = Control.HUMAN;
|
||||
player.color = ColorUtil.multiply(state.config.getTeam(team).color, 1.7);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz.render;
|
||||
|
||||
import promhx.Promise;
|
||||
import flash.display.DisplayObjectContainer;
|
||||
import flash.display.Graphics;
|
||||
import flash.display.Sprite;
|
||||
@@ -170,16 +171,17 @@ class Render extends SpriteView {
|
||||
}
|
||||
}
|
||||
|
||||
private function playAnimate(point:Point, animate:OnceAnimate):Void {
|
||||
private function playAnimate(point:Point, animate:OnceAnimate):Promise<Dynamic> {
|
||||
animate.x = point.x - animate.width / 2;
|
||||
animate.y = point.y - animate.height / 2;
|
||||
upperLayer.addChild(animate);
|
||||
animate.play().then(function(animate:Animate):Void {
|
||||
return animate.play().then(function(animate:Animate):Void {
|
||||
// ToDo: clean animates on reset
|
||||
if (upperLayer.contains(animate)) {
|
||||
upperLayer.removeChild(animate);
|
||||
}
|
||||
animate.dispose();
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,10 @@ abstract PlayerId(Array<Dynamic>) {
|
||||
@:to public inline function toString():String {
|
||||
return '${team}:${index}';
|
||||
}
|
||||
|
||||
@:op(X == Y) static public inline function equals(x:PlayerId, y:PlayerId):Bool {
|
||||
return x.team == y.team && x.index == y.index;
|
||||
}
|
||||
}
|
||||
|
||||
typedef PresetId = String;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz.game;
|
||||
|
||||
import haxework.color.Color;
|
||||
import haxe.ds.Option;
|
||||
import haxe.Timer;
|
||||
import haxework.provider.Provider;
|
||||
@@ -55,6 +56,19 @@ class Game {
|
||||
return teams[playerId.team].players[playerId.index];
|
||||
}
|
||||
|
||||
public function getPlayerColor(playerId:PlayerId):Color {
|
||||
var player = getPlayer(playerId);
|
||||
var team = getTeam(playerId.team);
|
||||
var color = team.config.color;
|
||||
if (!player.config.color.zero) {
|
||||
color = player.config.color;
|
||||
}
|
||||
if (!player.state.color.zero) {
|
||||
color = player.state.color;
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
private function buildTank(task:SpawnTask):Tank {
|
||||
var player = getPlayer(task.playerId);
|
||||
var tankType:TankType = if (task.tankType != null) {
|
||||
@@ -66,7 +80,7 @@ class Game {
|
||||
}
|
||||
var tankConfig:TankConfig = config.getTank(tankType);
|
||||
var tank = new Tank(task.playerId, tankConfig);
|
||||
tank.color = player.config.color.zero ? teams[task.playerId.team].config.color : player.config.color;
|
||||
tank.color = getPlayerColor(player.id);
|
||||
tank.bonus = Math.random() < player.config.bonus;
|
||||
applyPoint(tank, task.point);
|
||||
if (player.config.protect > 0) {
|
||||
@@ -96,7 +110,7 @@ class Game {
|
||||
teams[team.id] = team;
|
||||
for (player in team.players.iterator()) {
|
||||
var controlType:ControlType = Control.BOT;
|
||||
var nextPlayer:PlayerState = Lambda.find(players, function(p) return p.id != null && p.id.team == team.id);
|
||||
var nextPlayer:PlayerState = Lambda.find(players, function(p) return p.id == player.id);
|
||||
if (nextPlayer != null) {
|
||||
player.state = nextPlayer;
|
||||
players.remove(nextPlayer);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz.game;
|
||||
|
||||
import haxework.color.Color;
|
||||
import ru.m.tankz.bundle.IConfigBundle;
|
||||
import ru.m.tankz.config.Config;
|
||||
import ru.m.tankz.control.Control;
|
||||
@@ -9,6 +10,7 @@ class PlayerState {
|
||||
public var id:PlayerId;
|
||||
public var tank:TankType;
|
||||
public var control:ControlType;
|
||||
public var color:Color;
|
||||
public var life:Int;
|
||||
public var score:Int;
|
||||
public var frags:Int;
|
||||
|
||||
Reference in New Issue
Block a user