-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmain.py
124 lines (95 loc) · 2.97 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
"""
Main
"""
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.audio import SoundLoader
from kivy.logger import Logger
from Menu import Menu, MenuLevel
from EventDispatchers import MenusEventDispatcher
from LevelManager import LevelManager
class MusicProvider:
"""
Music provider.
"""
sound = None
def __init__(self):
"""
:rtype: void
"""
self.sound = SoundLoader.load('./resources/music/2TalkToMe.wav')
def start_sound(self):
"""
:rtype: void
"""
if self.sound:
self.sound.play()
self.sound.loop = True
def update_sound_state(self, *_):
"""
Update sound status when player click on music button.
:rtype: void
"""
if self.sound.state == 'play':
self.sound.stop()
Logger.info("Music stopped.")
else:
self.sound.play()
Logger.info("Music started.")
class GameApp(App):
"""
Main class of the game.
"""
LOGO_PATH = './resources/other/logo.png'
GAME_TITLE = "'Scape Me"
menus_event_dispatcher = MenusEventDispatcher()
screen_manager = ScreenManager()
music_provider = MusicProvider()
def __init__(self, **kwargs):
"""
:param kwargs:
:rtype: void
"""
super(GameApp, self).__init__(**kwargs)
self.menu_screen = Screen(name="Menu")
self.menu_level_screen = Screen(name="MenuLevel")
self.game_screen = Screen(name="LevelManager")
self.menu_widget = Menu(self.menus_event_dispatcher, self.music_provider)
self.menu_screen.add_widget(self.menu_widget)
self.screen_manager.add_widget(self.menu_screen)
self.game_widget = LevelManager(self.menus_event_dispatcher, self.music_provider)
self.game_screen.add_widget(self.game_widget)
self.screen_manager.add_widget(self.game_screen)
self.menu_level_widget = MenuLevel(self.menus_event_dispatcher)
self.menu_level_screen.add_widget(self.menu_level_widget)
self.screen_manager.add_widget(self.menu_level_screen)
self.menus_event_dispatcher.bind(on_change_screen=self.do_change_screen)
def build(self):
"""
Launch game.
:rtype: void
"""
self.music_provider.start_sound()
self.icon = self.LOGO_PATH
self.title = self.GAME_TITLE
self.screen_manager.current = 'Menu'
return self.screen_manager
def do_change_screen(self, _, value, *args):
"""
When player change screen.
:param _:
:param value:
:param args:
:rtype: void
"""
self.screen_manager.current = value
# when load level
if args[0]:
self.game_widget.load_level_in_set(args[0])
def on_pause(self):
"""
Required method
"""
return True
if __name__ == '__main__':
GameApp().run()