From 20bf775754e0a050449d9f5402f89db42e37e3e0 Mon Sep 17 00:00:00 2001 From: bridgs Date: Thu, 9 May 2019 11:26:46 -0400 Subject: [PATCH] Adding isRenderable param to update and handleEvent --- .castle | 2 +- src/client-server/GameClient.lua | 11 +++++++++-- src/client-server/GameServer.lua | 8 ++++---- src/game/Game.lua | 4 ++-- src/game/GameRunner.lua | 6 ++++-- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.castle b/.castle index 778007a..53b34fc 100644 --- a/.castle +++ b/.castle @@ -6,4 +6,4 @@ primaryColor: FF00FF coverImage: cover-image.png description: Just testing multiplayer: - - enabled: true \ No newline at end of file + - enabled: true diff --git a/src/client-server/GameClient.lua b/src/client-server/GameClient.lua index edff4e1..5f8ceeb 100644 --- a/src/client-server/GameClient.lua +++ b/src/client-server/GameClient.lua @@ -17,10 +17,17 @@ function GameClient:new(params) -- Create a game for the client and a runner for it local runner = GameRunner:new({ game = gameDefinition:new(), + isRenderable = true, allowTimeManipulation = false }) - local runnerWithoutSmoothing = GameRunner:new({ game = gameDefinition:new() }) - local runnerWithoutPrediction = GameRunner:new({ game = gameDefinition:new() }) + local runnerWithoutSmoothing = GameRunner:new({ + game = gameDefinition:new(), + isRenderable = false + }) + local runnerWithoutPrediction = GameRunner:new({ + game = gameDefinition:new(), + isRenderable = false + }) -- Create offset optimizers to minimize time desync and latency local timeSyncOptimizer = OffsetOptimizer:new({ diff --git a/src/client-server/GameServer.lua b/src/client-server/GameServer.lua index c7d04de..8800252 100644 --- a/src/client-server/GameServer.lua +++ b/src/client-server/GameServer.lua @@ -102,10 +102,10 @@ function GameServer:new(params) local maxClientEventFramesEarly = params.maxClientEventFramesEarly or 45 -- Create the game - local game = gameDefinition:new() local runner = GameRunner:new({ - game = game, - framesOfHistory = maxClientEventFramesLate + 1 + game = gameDefinition:new(), + framesOfHistory = maxClientEventFramesLate + 1, + isRenderable = false }) -- Wrap the listener in a message server to make it easier to work with @@ -124,7 +124,7 @@ function GameServer:new(params) _connectCallbacks = {}, -- Public vars - game = game, + game = runner.game, -- Public methods -- Starts the server listening for new client connections diff --git a/src/game/Game.lua b/src/game/Game.lua index 7662071..14042fb 100644 --- a/src/game/Game.lua +++ b/src/game/Game.lua @@ -242,8 +242,8 @@ function Game:new(params) end, -- Methods to override - update = function(self, dt, inputs, events, isTopFrame) end, - handleEvent = function(self, eventType, eventData) end + update = function(self, dt, isRenderable) end, + handleEvent = function(self, eventType, eventData, isRenderable) end } if initialState then diff --git a/src/game/GameRunner.lua b/src/game/GameRunner.lua index ac01e5e..e903c2d 100644 --- a/src/game/GameRunner.lua +++ b/src/game/GameRunner.lua @@ -8,6 +8,7 @@ function GameRunner:new(params) local allowTimeManipulation = params.allowTimeManipulation ~= false local framesOfHistory = params.framesOfHistory or 30 local framesBetweenStateSnapshots = params.framesBetweenStateSnapshots or 5 + local isRenderable = params.isRenderable ~= false return { -- Private vars @@ -17,6 +18,7 @@ function GameRunner:new(params) _transformHistory = {}, _allowTimeManipulation = allowTimeManipulation, _framesBetweenStateSnapshots = framesBetweenStateSnapshots, + _isRenderable = isRenderable, -- Public vars game = game, @@ -254,13 +256,13 @@ function GameRunner:new(params) else table.insert(nonInputEvents, event) self.game:resetEntityIdGeneration('event-' .. event.id .. '-') - self.game:handleEvent(event.type, event.data) + self.game:handleEvent(event.type, event.data, isTopFrame and self._isRenderable) end end -- Update the game self.game:resetEntityIdGeneration('frame-' .. self.game.frame .. '-') self.game:updateEntityMetadata(dt) - self.game:update(dt, self.game.inputs, nonInputEvents, isTopFrame) + self.game:update(dt, isTopFrame and self._isRenderable) -- Check to see if any scheduled states need to applied now for i = #self._futureStates, 1, -1 do if self._futureStates[i].frame == self.game.frame then