From 6a401534260d922370aa0b2c22bf0a2bb8034774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkki=20Sepp=C3=A4l=C3=A4?= Date: Sun, 19 Oct 2014 13:38:25 +0300 Subject: [PATCH] Indirected player to Scoreboard to allow switching it --- level_state.lua | 5 ++++- scoreboard.lua | 15 ++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/level_state.lua b/level_state.lua index 68d1971..5266417 100644 --- a/level_state.lua +++ b/level_state.lua @@ -55,7 +55,10 @@ function level_state:enter(previous, level_file) local i0 = i - 1 local x = 20 + (i0 * SCOREBOARD_WIDTH) + (i0 * SCOREBOARD_MARGIN) - scoreboards[i] = Scoreboard(x, 20, players[i]) + scoreboards[i] = Scoreboard(x, 20, + function() + return players[i] + end) end end diff --git a/scoreboard.lua b/scoreboard.lua index 8465f59..e8c29fe 100644 --- a/scoreboard.lua +++ b/scoreboard.lua @@ -5,14 +5,15 @@ require 'utils' local SCOREBOARD_FONT = love.graphics.newFont(16) Scoreboard = Class{ - init = function(self, x, y, player) - self.player = player + init = function(self, x, y, getPlayer) + self.getPlayer = getPlayer self.x = x self.y = y end; draw = function(self) - if self.player.plane == nil then + local player = self.getPlayer() + if player.plane == nil then return end @@ -23,13 +24,13 @@ Scoreboard = Class{ love.graphics.setLineWidth(3) love.graphics.rectangle("line", self.x, self.y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT) - love.graphics.print(self.player.name, self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN) + love.graphics.print(player.name, self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN) love.graphics.print("Score", self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 20) - love.graphics.printf(self.player.score, self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 20, SCOREBOARD_WIDTH - 2 * SCOREBOARD_MARGIN, "right") + love.graphics.printf(player.score, self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 20, SCOREBOARD_WIDTH - 2 * SCOREBOARD_MARGIN, "right") love.graphics.setLineWidth(origWidth) - local health_ratio = self.player.plane.health / PLANE_HEALTH + local health_ratio = player.plane.health / PLANE_HEALTH local start_color = {0, 255, 0} local end_color = {255, 0, 0} love.graphics.setColor(colorSlide(start_color, end_color, health_ratio)) @@ -37,7 +38,7 @@ Scoreboard = Class{ love.graphics.setColor({0, 0, 0, 255}) love.graphics.print("Health", self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 45) - local engine_ratio = self.player.plane.motorPower / ENGINE_MAX + local engine_ratio = player.plane.motorPower / ENGINE_MAX local start_color = {0, 255, 0} local end_color = {255, 0, 0} love.graphics.setColor(colorSlide(start_color, end_color, engine_ratio))