Repository navigation
Expand file tree
/
Copy pathmain.py
More file actions
75 lines (55 loc) · 2.54 KB
/
Copy pathmain.py
File metadata and controls
75 lines (55 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File: game.py
import pygame
from rest import *
from rest.utils.hooks import gen_hook
from settings import settings
from content_data.entities_data import entities
from entities.player import PlayerEntity
from behavior import *
class MyGame(Game):
def __init__(self):
super().__init__()
init(settings)
self.camera = Camera(settings.display_size, slowness=settings.camera_slowness, pos=(5, 0))
self.entities_data = entities
def load(self):
self.event_system = G.event_system
self.tilemap = Tilemap()
self.tilemap.load('content_data/maps/1.pmap', spawn_hook=gen_hook())
self.player = PlayerEntity((100, 150))
G.object_collections.register(self.player.get_component('object'), 'entities')
G.object_collections.configure_spatial_collections(['entities', 'particles'])
asset_path = 'content_data/image_data/assets'
G.asset_library.initialize(asset_path)
def update(self):
self.camera.set_target(self.player.get_component('object'))
self.camera.update()
if settings.fps_bar:
G.text['small_font'].renderz((str(round(G.window.fps, 1))), (list(settings.display_size)[0]-20, 5), color=(145, 145, 145))
if G.input.mouse_pressed(1):
self.add_event('click', {'position': G.input.get_mouse_position()})
G.object_collections.update(view_area=self.camera.visible_rect)
self.player.get_component('object').physics_update(self.tilemap)
if hasattr(G, 'sparks'):
dt = G.window.dt
for spark in G.sparks[:]:
if spark.update(dt):
G.sparks.remove(spark)
else:
G.window.renderf(spark.render, offset=(0, 0), z=spark.z, group='ui')
renderable_items = self.tilemap.get_renderable_items(
self.camera.visible_rect,
self.player.get_component('object').get_component('object').hitbox,
offset=self.camera.pos,
group='default',
objects_collection=G.object_collections
)
sorted_items = sorted(renderable_items, key=lambda item: item.z)
for item in sorted_items:
item.render()
G.object_collections.renderz(collection='particles', camera_offset=self.camera.pos)
G.window.cycle()
G.input.update(self)
if __name__ == "__main__":
game = MyGame()
game.run()