[core] add color to PlayerState

This commit is contained in:
2019-03-21 12:22:01 +03:00
parent e6f9aa8ba1
commit c6639e11b1
5 changed files with 29 additions and 4 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;