InteligentnySaper/classes/system.py

98 lines
3.2 KiB
Python
Raw Normal View History

2022-03-09 01:36:46 +01:00
import pygame
2022-03-09 01:36:46 +01:00
class Window:
window: None
width: int
height: int
title: str
icon_path: str
paused: bool
pause_menu: None
2022-04-07 18:27:35 +02:00
search: pygame.Surface
def __init__(self, width: int = 640, height: int = 480, title="", icon_path=""):
self.set_resolution(width, height)
2022-03-09 01:36:46 +01:00
self.set_title(title)
self.set_icon(icon_path)
self.mount()
self.paused = False
2022-04-07 18:27:35 +02:00
self.pause_menu = pygame.Surface((width, height))
self.pause_menu.set_alpha(128)
self.pause_menu.fill((0, 0, 0))
2022-04-07 18:27:35 +02:00
self.search = pygame.Surface((width, height), flags=pygame.SRCALPHA)
def set_resolution(self, width: int, height: int):
2022-03-09 01:36:46 +01:00
self.width = width
self.height = height
def set_title(self, title: str):
self.title = title
def set_icon(self, icon_path: str):
self.icon_path = icon_path
2022-03-09 01:36:46 +01:00
def mount(self):
self.window = pygame.display.set_mode((self.width, self.height))
2022-03-09 01:36:46 +01:00
pygame.display.set_caption(self.title)
if self.icon_path != "":
icon = pygame.image.load(self.icon_path)
2022-04-07 18:27:35 +02:00
pygame.display.set_icon(icon)
def pause(self, paused: bool):
self.paused = paused
2022-04-07 18:27:35 +02:00
if self.paused:
self.window.blit(self.pause_menu, (0, 0))
2022-04-07 18:27:35 +02:00
pygame.display.update()
def draw_search(self, pos1: list = [0, 0], pos2: list = [0, 0], tile_size: int = 64, map=None, saper=None):
2022-04-21 18:20:00 +02:00
map.draw_tiles()
map.draw_objects()
saper.draw(self.window, 0.1)
self.window.blit(self.pause_menu, (0, 0))
2022-04-21 18:20:00 +02:00
self.search = pygame.Surface((self.width, self.height), flags=pygame.SRCALPHA)
pos1 = [pos1[0] * tile_size + (tile_size / 2), pos1[1] * tile_size + (tile_size / 2)]
pos2 = [pos2[0] * tile_size + (tile_size / 2), pos2[1] * tile_size + (tile_size / 2)]
pygame.draw.line(self.search, pygame.Color(255, 0, 0), pos1, pos2, 5)
2022-04-28 17:42:50 +02:00
n = 10
p1 = 0
p2 = 0
p3 = 0
if (pos2[0] - pos1[0]) != 0:
a1 = (pos2[1] - pos1[1]) / (pos2[0] - pos1[0])
b1 = (pos1[1] - a1 * pos1[0])
if a1 != 0:
a2 = -(1 / a1)
b2 = pos2[1] - a2 * pos2[0]
y = a2 * (pos2[0] + n) + b2
p1 = (pos2[0] + n, y)
y = a2 * (pos2[0] - n) + b2
p2 = (pos2[0] - n, y)
if pos1[0] > pos2[0]:
y = a1 * (pos2[0] - n) + b1
p3 = (pos2[0] - n, y)
2022-04-28 17:42:50 +02:00
else:
y = a1 * (pos2[0] + n) + b1
p3 = (pos2[0] + n, y)
2022-04-28 17:42:50 +02:00
else:
p1 = (pos2[0], pos2[1] + n)
p2 = (pos2[0], pos2[1] - n)
if pos1[0] > pos2[0]:
p3 = (pos2[0] - n, pos2[1])
2022-04-28 17:42:50 +02:00
else:
p3 = (pos2[0] + n, pos2[1])
2022-04-28 17:42:50 +02:00
else:
p1 = (pos2[0] - n, pos2[1])
p2 = (pos2[0] + n, pos2[1])
if pos1[1] > pos2[1]:
p3 = (pos2[0], pos2[1] - n)
2022-04-28 17:42:50 +02:00
else:
p3 = (pos2[0], pos2[1] + n)
2022-04-28 17:42:50 +02:00
pygame.draw.polygon(self.search, pygame.Color(255, 0, 0), (p1, p2, p3))
self.window.blit(self.search, (0, 0))
pygame.display.update()