Compare commits
2 Commits
d0f01c0a48
...
4e90ecb885
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e90ecb885 | |||
| 8bb669d6b2 |
@ -122,8 +122,20 @@ class SimulationEngine:
|
|||||||
self._handle_sprint_mode()
|
self._handle_sprint_mode()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Only process one tick per frame if enough time has passed
|
||||||
if not self.input_handler.is_paused:
|
if not self.input_handler.is_paused:
|
||||||
self._handle_simulation_ticks(tick_interval, deltatime)
|
current_time = time.perf_counter()
|
||||||
|
if current_time - self.last_tick_time >= tick_interval:
|
||||||
|
self.last_tick_time += tick_interval
|
||||||
|
self.tick_counter += 1
|
||||||
|
self.total_ticks += 1
|
||||||
|
self.input_handler.update_selected_objects()
|
||||||
|
self.world.tick_all()
|
||||||
|
self.hud.manager.update(deltatime)
|
||||||
|
if current_time - self.last_tps_time >= 1.0:
|
||||||
|
self.actual_tps = self.tick_counter
|
||||||
|
self.tick_counter = 0
|
||||||
|
self.last_tps_time += 1.0
|
||||||
else:
|
else:
|
||||||
self.last_tick_time = time.perf_counter()
|
self.last_tick_time = time.perf_counter()
|
||||||
self.last_tps_time = time.perf_counter()
|
self.last_tps_time = time.perf_counter()
|
||||||
@ -163,9 +175,11 @@ class SimulationEngine:
|
|||||||
self.last_tps_time = time.perf_counter()
|
self.last_tps_time = time.perf_counter()
|
||||||
self.screen.fill(BLACK)
|
self.screen.fill(BLACK)
|
||||||
self.renderer.clear_screen()
|
self.renderer.clear_screen()
|
||||||
self.hud.render_sprint_debug(self.screen, self.actual_tps, self.total_ticks)
|
cell_count = self._count_cells()
|
||||||
|
self.hud.render_sprint_debug(self.screen, self.actual_tps, self.total_ticks, cell_count)
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
self.clock.tick(MAX_FPS)
|
self.clock.tick(MAX_FPS)
|
||||||
|
self.last_tick_time = time.perf_counter()
|
||||||
|
|
||||||
def _handle_simulation_ticks(self, tick_interval, deltatime):
|
def _handle_simulation_ticks(self, tick_interval, deltatime):
|
||||||
current_time = time.perf_counter()
|
current_time = time.perf_counter()
|
||||||
@ -203,8 +217,8 @@ class SimulationEngine:
|
|||||||
self.hud.draw_splitters(self.screen)
|
self.hud.draw_splitters(self.screen)
|
||||||
|
|
||||||
# self.hud.render_mouse_position(self.screen, self.camera, self.sim_view_rect)
|
# self.hud.render_mouse_position(self.screen, self.camera, self.sim_view_rect)
|
||||||
# self.hud.render_fps(self.screen, self.clock)
|
self.hud.render_fps(self.screen, self.clock)
|
||||||
# self.hud.render_tps(self.screen, self.actual_tps)
|
self.hud.render_tps(self.screen, self.actual_tps)
|
||||||
# self.hud.render_tick_count(self.screen, self.total_ticks)
|
# self.hud.render_tick_count(self.screen, self.total_ticks)
|
||||||
# self.hud.render_selected_objects_info(self.screen, self.input_handler.selected_objects)
|
# self.hud.render_selected_objects_info(self.screen, self.input_handler.selected_objects)
|
||||||
self.hud.render_legend(self.screen, self.input_handler.show_legend)
|
self.hud.render_legend(self.screen, self.input_handler.show_legend)
|
||||||
|
|||||||
@ -641,17 +641,20 @@ class HUD:
|
|||||||
screen.blit(surf, (tooltip_rect.left + TOOLTIP_PADDING_X, y))
|
screen.blit(surf, (tooltip_rect.left + TOOLTIP_PADDING_X, y))
|
||||||
y += surf.get_height() + TOOLTIP_LINE_SPACING
|
y += surf.get_height() + TOOLTIP_LINE_SPACING
|
||||||
|
|
||||||
def render_sprint_debug(self, screen, actual_tps, total_ticks):
|
def render_sprint_debug(self, screen, actual_tps, total_ticks, cell_count=None):
|
||||||
"""Render sprint debug info: header, TPS, and tick count."""
|
"""Render sprint debug info: header, TPS, and tick count."""
|
||||||
header = self.font.render("Sprinting...", True, (255, 200, 0))
|
header = self.font.render("Sprinting...", True, (255, 200, 0))
|
||||||
tps_text = self.font.render(f"TPS: {actual_tps}", True, (255, 255, 255))
|
tps_text = self.font.render(f"TPS: {actual_tps}", True, (255, 255, 255))
|
||||||
ticks_text = self.font.render(f"Ticks: {total_ticks}", True, (255, 255, 255))
|
ticks_text = self.font.render(f"Ticks: {total_ticks}", True, (255, 255, 255))
|
||||||
|
cell_text = self.font.render(f"Cells: {cell_count}" if cell_count is not None else "Cells: N/A", True, (255, 255, 255))
|
||||||
|
|
||||||
y = self.screen_height // 2 - 40
|
y = self.screen_height // 2 - 80
|
||||||
header_rect = header.get_rect(center=(self.screen_width // 2, y))
|
header_rect = header.get_rect(center=(self.screen_width // 2, y))
|
||||||
tps_rect = tps_text.get_rect(center=(self.screen_width // 2, y + 40))
|
tps_rect = tps_text.get_rect(center=(self.screen_width // 2, y + 40))
|
||||||
ticks_rect = ticks_text.get_rect(center=(self.screen_width // 2, y + 80))
|
ticks_rect = ticks_text.get_rect(center=(self.screen_width // 2, y + 80))
|
||||||
|
cell_rect = cell_text.get_rect(center=(self.screen_width // 2, y + 120))
|
||||||
|
|
||||||
screen.blit(header, header_rect)
|
screen.blit(header, header_rect)
|
||||||
screen.blit(tps_text, tps_rect)
|
screen.blit(tps_text, tps_rect)
|
||||||
screen.blit(ticks_text, ticks_rect)
|
screen.blit(ticks_text, ticks_rect)
|
||||||
|
screen.blit(cell_text, cell_rect)
|
||||||
|
|||||||
@ -162,6 +162,8 @@ class World:
|
|||||||
"""
|
"""
|
||||||
Advances all objects in the world by one tick, updating their state and handling interactions.
|
Advances all objects in the world by one tick, updating their state and handling interactions.
|
||||||
"""
|
"""
|
||||||
|
print("Ticking all objects in the world")
|
||||||
|
|
||||||
next_buffer: int = 1 - self.current_buffer
|
next_buffer: int = 1 - self.current_buffer
|
||||||
self.buffers[next_buffer].clear()
|
self.buffers[next_buffer].clear()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user