-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
125 lines (100 loc) · 3.53 KB
/
main.py
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import logging
import pygame
import pygbase
from data.modules.base.constants import PIXEL_SCALE, SCREEN_WIDTH, SCREEN_HEIGHT
from data.modules.base.paths import IMAGE_DIR, SPRITE_SHEET_DIR
from data.modules.base.registry.registry import Registry
from data.modules.entities.enemies.enemy_loader import EnemyLoader
from data.modules.entities.enemies.melee_enemy import MeleeEnemy
from data.modules.entities.items.energy_sword import EnergySword
from data.modules.entities.models.humanoid_model import HumanoidModel
from data.modules.entities.models.model_loader import ModelLoader
from data.modules.entities.models.model_part import ImageModelPart
from data.modules.entities.states.melee_attack_state import MeleeAttackState
from data.modules.entities.states.stunned_state import StunnedState
from data.modules.entities.states.wander_state import WanderState
from data.modules.game_states.main_menu import MainMenu
from data.modules.objects.altars import RuneAltar
from data.modules.objects.object_loader import ObjectLoader
from data.modules.objects.torch import Torch
def register_types():
logging.info("Registering objects")
Registry.register_type(Torch)
Registry.register_type(RuneAltar)
logging.info("Registering entity states")
Registry.register_type(WanderState)
Registry.register_type(StunnedState)
Registry.register_type(MeleeAttackState)
logging.info("Registering items")
Registry.register_type(EnergySword)
logging.info("Registering model parts")
Registry.register_type(ImageModelPart)
logging.info("Registering models")
Registry.register_type(HumanoidModel)
logging.info("Registering enemies")
Registry.register_type(MeleeEnemy)
logging.debug("Done registering")
def toggle_debug(event: pygame.Event):
if event.key == pygame.K_F3:
pygbase.Debug.toggle_fps()
elif event.key == pygame.K_F4:
pygbase.Debug.toggle()
if __name__ == '__main__':
# profiler = cProfile.Profile()
# profiler.enable()
pygbase.init((SCREEN_WIDTH, SCREEN_HEIGHT), logging_level=logging.DEBUG, rotate_resolution=2, light_radius_interval=3, shadow_ratio=1.6)
# pygbase.Debug.show()
# Events
pygbase.Events.add_handler("all", pygame.KEYDOWN, toggle_debug)
pygbase.Events.create_custom_event("start_game")
# Keybinds
pygbase.Input.set_keybind("left", "a")
pygbase.Input.set_keybind("right", "d")
pygbase.Input.set_keybind("up", "w")
pygbase.Input.set_keybind("down", "s")
pygbase.Input.set_keybind("attack", pygbase.MouseInput.LEFT_CLICK)
pygbase.Input.set_keybind("interact", "e")
# Resources
pygbase.add_image_resource("images", 1, str(IMAGE_DIR), default_scale=PIXEL_SCALE)
pygbase.add_sprite_sheet_resource("sprite_sheets", 2, str(SPRITE_SHEET_DIR), default_scale=PIXEL_SCALE)
pygbase.Common.set_value("particle_manager", pygbase.ParticleManager())
pygbase.Common.set_value("lighting_manager", pygbase.LightingManager(0.3, 0.4))
pygbase.Common.set_value("dialogue_manager", pygbase.DialogueManager(15, 0.05))
pygbase.add_particle_setting(
"fire",
[(255, 40, 30), (255, 90, 0), (255, 154, 0)],
(5, 11),
(6, 10),
(0, 2),
(0, -100),
False,
((0, 0), (0, 0))
)
pygbase.add_particle_setting(
"rune_altar",
[(143, 186, 255), (102, 237, 255), (82, 154, 255)],
(5, 11),
(6, 10),
(0, 2),
(0, -100),
False,
((0, 0), (0, 0))
)
# Run app
app = pygbase.App(
MainMenu,
# Game,,
"Catacombs of Time",
flags=pygame.SCALED,
run_on_load_complete=(
Registry.init,
register_types,
ObjectLoader.init,
ModelLoader.init,
EnemyLoader.init
)
)
app.run()
pygbase.quit()
# profiler.disable()
# profiler.dump_stats("stats.prof")