Moss/sprite_stacking_engine/scene.py
2024-07-19 13:38:42 +02:00

46 lines
1.3 KiB
Python

#!/usr/bin/python3
from stacked_sprite import *
from random import uniform
P = "player"
A, B, C = "Robot", "Building", "Bla"
MAP = [ # two dimensional object matrix
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, B, B, B, B],
[0, 0, A, A, 0, B, B, B, B],
[0, 0, A, A, P, B, B, B, B],
[0, 0, A, A, 0, B, B, B, B],
[0, 0, 0, 0, C, B, B, B, B],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
]
MAP_SIZE = MAP_WIDTH, MAP_HEIGHT = vec2(len(MAP), len(MAP[0]))
MAP_CENTER = MAP_SIZE / 2
class Scene:
def __init__(self, app):
self.app = app
self.load_scene()
def load_scene(self):
rand_rot = lambda: uniform(0, 360)
rand_pos = lambda pos: pos + vec2(uniform(-0.25, 0.25))
for j, row in enumerate(MAP): # loop through all objects on the map
for i, name in enumerate(row):
pos = vec2(i, j) + vec2(0.5)
if name == "player":
self.app.player.offset = pos * TILE_SIZE
elif name:
if name == "Bla":
AnimatedStackedSprite(self.app, name=name, pos=rand_pos(pos), rot=rand_rot())
else:
StackedSprite(self.app, name=name, pos=rand_pos(pos), rot=rand_rot())