Implemented screen initialization
This commit is contained in:
parent
5e33e55396
commit
14fac73279
@ -1,6 +1,7 @@
|
||||
{
|
||||
"window": {
|
||||
"width": 1280,
|
||||
"height": 720
|
||||
"height": 720,
|
||||
"name": "Adventure Survival"
|
||||
}
|
||||
}
|
@ -2,9 +2,12 @@ import pygame
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from game.Screen import Screen
|
||||
|
||||
|
||||
class Game:
|
||||
def __init__(self):
|
||||
self.running = True
|
||||
print("Loading configuration...", end=" ")
|
||||
|
||||
try:
|
||||
@ -24,5 +27,21 @@ class Game:
|
||||
|
||||
print("Initializing screen, params: " + str(self.config["window"]) + "...", end=" ")
|
||||
|
||||
# Vertical rotation is unsupported due to UI layout
|
||||
if self.config["window"]["height"] > self.config["window"]["width"]:
|
||||
print("The screen cannot be in a vertical orientation. Exiting...")
|
||||
exit(1)
|
||||
|
||||
self.screen = Screen(self, self.config["window"])
|
||||
print("OK")
|
||||
|
||||
self.spritesList = pygame.sprite.Group()
|
||||
|
||||
self.mainLoop()
|
||||
|
||||
def mainLoop(self):
|
||||
self.spritesList.draw(self.screen.pygameScreen)
|
||||
pygame.display.flip()
|
||||
|
||||
|
||||
game = Game()
|
||||
|
@ -1,4 +1,35 @@
|
||||
import math
|
||||
import pygame
|
||||
|
||||
# minimum UI width
|
||||
MARGIN = 300
|
||||
|
||||
|
||||
class Screen:
|
||||
def __init__(self):
|
||||
self.map
|
||||
self.ui
|
||||
def __init__(self, gameObject, windowConfig):
|
||||
self.gameObject = gameObject
|
||||
self.winX = windowConfig["width"]
|
||||
self.winY = windowConfig["height"]
|
||||
pygame.display.set_caption(windowConfig["name"])
|
||||
self.pygameScreen = pygame.display.set_mode((self.winX, self.winY))
|
||||
|
||||
# map is a square inside the screen
|
||||
self.mapSize = self.calculateMapDimensions()
|
||||
|
||||
# mapCoord is a top leftmost pixel
|
||||
self.mapCoord = math.floor((self.winX - self.mapSize) / 2)
|
||||
|
||||
# draw a white rect to resemble map
|
||||
pygame.draw.rect(self.pygameScreen, (255, 255, 255), [self.mapCoord, 0, self.mapSize, self.mapSize])
|
||||
|
||||
def calculateMapDimensions(self):
|
||||
result = 0
|
||||
expectedSize = self.winY
|
||||
|
||||
# when there's not enough space for the UI on the sides
|
||||
if self.winX - expectedSize < MARGIN:
|
||||
result = expectedSize - (MARGIN - (self.winX - expectedSize))
|
||||
else:
|
||||
result = expectedSize
|
||||
|
||||
return result
|
||||
|
Loading…
Reference in New Issue
Block a user