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 { for (view in view.teams.dataViews) { if (view.teamId == id) { return view; } } return null; } private function findPlayerView(id:PlayerId):Null { 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 _: } } }