[core] add color to PlayerState
This commit is contained in:
@@ -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