Files
tankz/src/client/haxe/ru/m/tankz/view/game/GameViewHelper.hx
shmyga 30325f6d16 [common] add boat bonus
[client] add active style to gamepad buttons
2019-09-16 14:41:12 +03:00

85 lines
2.7 KiB
Haxe

package ru.m.tankz.view.game;
import ru.m.tankz.config.Config;
import ru.m.tankz.game.GameEvent;
import ru.m.tankz.Type;
using ru.m.tankz.view.ViewUtil;
class GameViewHelper {
private var view:IGameView;
private var config:Config;
private var onelinelevel:Bool;
public function new(view:IGameView, config:Config, onelinelevel:Bool = false) {
this.view = view;
this.config = config;
this.onelinelevel = onelinelevel;
}
private function findTeamView(id:TeamId):Null<TeamView> {
for (view in view.teams.dataViews) {
if (view.teamId == id) {
return view;
}
}
return null;
}
private function findPlayerView(id:PlayerId):Null<PlayerView> {
var teamView = findTeamView(id.team);
if (teamView != null) {
for (view in teamView.dataViews) {
if (view.playerId == id) {
return view;
}
}
}
return null;
}
public function onGameEvent(event:GameEvent):Void {
switch event {
case START(start):
view.level.text = start.level.toLevelLabel(onelinelevel);
view.teams.data = [for (team in start.state.teams) team];
// ToDo: PlayerState default tank?
for (teamView in view.teams.dataViews) {
for (playerView in teamView.dataViews) {
var tank = config.getPlayerTank(playerView.playerId);
playerView.tank = {
type: tank.type,
skin: tank.skin,
hits: 0,
bonus: false,
boat: false,
color: config.getColor(playerView.playerId),
};
}
}
case CHANGE(TEAM_LIFE(teamId, life)):
var view = findPlayerView([teamId, -1]);
if (view != null) {
view.life = life;
}
case CHANGE(TEAM_SCORE(teamId, score)):
var view = findPlayerView([teamId, -1]);
if (view != null) {
view.score = score;
}
case CHANGE(PLAYER_LIFE(playerId, life)):
var view = findPlayerView(playerId);
if (view != null) {
view.life = life;
}
case CHANGE(PLAYER_SCORE(playerId, score)):
var view = findPlayerView(playerId);
if (view != null) {
view.score = score;
}
case _:
}
}
}