WMICraft/ui/logs.py

39 lines
1.1 KiB
Python
Raw Normal View History

2022-04-12 20:44:27 +02:00
from queue import Queue
2022-03-09 16:59:58 +01:00
import pygame
2022-03-11 19:42:17 +01:00
from common.colors import FONT_DARK, ORANGE, WHITE
2022-04-10 20:28:50 +02:00
from common.constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_SIZE, BORDER_WIDTH, BORDER_RADIUS
2022-03-11 19:42:17 +01:00
from common.helpers import draw_text
2022-03-09 16:59:58 +01:00
class Logs:
2022-04-12 20:44:27 +02:00
def __init__(self, screen):
self.log_queue = Queue(maxsize=7)
self.screen = screen
2022-03-09 16:59:58 +01:00
2022-04-12 20:44:27 +02:00
def draw(self):
2022-04-10 20:28:50 +02:00
x = (GRID_CELL_PADDING + GRID_CELL_SIZE) * COLUMNS + BORDER_WIDTH + 15
2022-03-09 16:59:58 +01:00
y = 470
# background
2022-04-12 20:44:27 +02:00
pygame.draw.rect(self.screen, WHITE, pygame.Rect(x, y, 340, 323), 0, BORDER_RADIUS)
2022-03-09 16:59:58 +01:00
# title
2022-04-12 20:44:27 +02:00
draw_text('LOGS', FONT_DARK, self.screen, x + 120, y + 10, 36)
pygame.draw.rect(self.screen, ORANGE, pygame.Rect(x, y + 65, 340, 3))
2022-03-09 16:59:58 +01:00
# texts
2022-04-12 20:44:27 +02:00
next_y = y + 90
i = 0
start = len(self.log_queue.queue) - 1
for idx in range(start, -1, -1):
draw_text(self.log_queue.queue[idx], FONT_DARK, self.screen, x + 35, next_y + i * 30, 16)
i = i + 1
def enqueue_log(self, text):
if self.log_queue.full():
self.log_queue.get()
self.log_queue.put(text)
self.draw()