ADD decoupling from FPS and game state
This commit is contained in:
@@ -2,7 +2,7 @@ from models.player import Player
|
|||||||
from models.team import Team
|
from models.team import Team
|
||||||
|
|
||||||
class Match:
|
class Match:
|
||||||
def __init__(self, map_name, game_info, team_1: Team, team_2: Team, game_events, tick_rate=128):
|
def __init__(self, map_name, game_info, team_1: Team, team_2: Team, game_events, tick_rate=64):
|
||||||
self.team_1 = team_1
|
self.team_1 = team_1
|
||||||
self.team_2 = team_2
|
self.team_2 = team_2
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ class Team:
|
|||||||
self.players = []
|
self.players = []
|
||||||
self.score = 0
|
self.score = 0
|
||||||
self.id = 1
|
self.id = 1
|
||||||
|
self.set_ct()
|
||||||
|
|
||||||
def add_player(self, player: Player):
|
def add_player(self, player: Player):
|
||||||
self.players.append(player)
|
self.players.append(player)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import time
|
||||||
from states.game_state import GameState
|
from states.game_state import GameState
|
||||||
from controllers.player_controller import PlayerController
|
from controllers.player_controller import PlayerController
|
||||||
from render.map_renderer import MapRenderer
|
from render.map_renderer import MapRenderer
|
||||||
@@ -18,6 +19,10 @@ class Game(GameState):
|
|||||||
self.match_data_path = f"assets/maps/config/{self.match.map_name}.json"
|
self.match_data_path = f"assets/maps/config/{self.match.map_name}.json"
|
||||||
self.match_image_path = f"assets/maps/overview/{self.match.map_name}.png"
|
self.match_image_path = f"assets/maps/overview/{self.match.map_name}.png"
|
||||||
|
|
||||||
|
self.game_update_interval = 1 / self.match.tick_rate
|
||||||
|
self.elapsed_time = 0
|
||||||
|
self.last_time = time.perf_counter()
|
||||||
|
|
||||||
self.__init_screen_areas()
|
self.__init_screen_areas()
|
||||||
self.__init_utils()
|
self.__init_utils()
|
||||||
self.__init_renderers()
|
self.__init_renderers()
|
||||||
@@ -49,7 +54,6 @@ class Game(GameState):
|
|||||||
self.info_controller = InfoController(self.info_render, self.player_controller)
|
self.info_controller = InfoController(self.info_render, self.player_controller)
|
||||||
self.control_controller = ControlController(self.control_render, self.control_box_top_left)
|
self.control_controller = ControlController(self.control_render, self.control_box_top_left)
|
||||||
|
|
||||||
|
|
||||||
def handle_events(self, events):
|
def handle_events(self, events):
|
||||||
"""Handles user inputs."""
|
"""Handles user inputs."""
|
||||||
for event in events:
|
for event in events:
|
||||||
@@ -61,8 +65,15 @@ class Game(GameState):
|
|||||||
self.control_controller.update(event)
|
self.control_controller.update(event)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Updates game objects."""
|
"""Fixed-timestep update decoupled from frame rate."""
|
||||||
|
now = time.perf_counter()
|
||||||
|
delta = now - self.last_time
|
||||||
|
self.last_time = now
|
||||||
|
self.elapsed_time += delta
|
||||||
|
|
||||||
|
while self.elapsed_time >= self.game_update_interval:
|
||||||
self.match.next_tick()
|
self.match.next_tick()
|
||||||
|
self.elapsed_time -= self.game_update_interval
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
"""Draws everything on screen."""
|
"""Draws everything on screen."""
|
||||||
|
|||||||
Reference in New Issue
Block a user