11import pygame as pg
22import numpy as np
3+ from math import radians
34import sys
45from core .visuals .ui import *
56
@@ -22,12 +23,14 @@ def change_menu_ui_selected_down(self):
2223 if len (self .menus [self .current_menu_item ].selectable_elements ) != 0 :
2324 if self .menu_ui_selected != len (self .menus [self .current_menu_item ].selectable_elements ):
2425 self .previous_menu_ui_select = self .menu_ui_selected
26+ self .menus [self .current_menu_item ].selectable_elements [self .previous_menu_ui_select ].is_selected = False
2527 self .menu_ui_selected += 1
2628
2729 def change_menu_ui_selected_up (self ):
2830 if len (self .menus [self .current_menu_item ].selectable_elements ) != 0 :
2931 if self .menu_ui_selected != 0 :
3032 self .previous_menu_ui_select = self .menu_ui_selected
33+ self .menus [self .current_menu_item ].selectable_elements [self .previous_menu_ui_select ].is_selected = False
3134 self .menu_ui_selected -= 1
3235
3336
@@ -66,11 +69,71 @@ def update(self):
6669 for elem in self .elements :
6770 elem .update ()
6871
69- if len (self .selectable_elements ) != 0 :
70- for elem in self .selectable_elements :
71- elem .update ()
72- self .selectable_elements [self .menumanager .previous_menu_ui_select ].is_selected = False
73- self .selectable_elements [self .menumanager .menu_ui_selected ].is_selected = True
72+ for elem in self .selectable_elements :
73+ elem .update ()
74+ #self.selectable_elements[self.menumanager.previous_menu_ui_select].is_selected = False
75+ self .selectable_elements [self .menumanager .menu_ui_selected ].is_selected = True
76+
77+ class ShotTypeSelectMenu (Menu ):
78+ def __init__ (self , game , menumanager ):
79+ super ().__init__ (game , menumanager )
80+ self .ssc_angle = 0
81+ self .selected_shottype_circle = MenuLabel (self .game , (480 , 320 ), "assets\\ img\\ sprites\\ ui\\ test.png" , sprite_size = [300 , 300 ])
82+ self .elements = [MenuText (self .game , [50 , 50 ], size = 40 ), MenuText (self .game , [50 , 90 ], size = 25 ), MenuText (self .game , [50 , 120 ], size = 25 )]
83+ self .elements [0 ].text = JapaneseFontText (self .game , self .elements [0 ].pos , self .elements [0 ].size , text = "博麗 霊夢" )
84+ self .elements [1 ].text = JapaneseFontText (self .game , self .elements [1 ].pos , self .elements [1 ].size , text = "広範囲をカバーショットタイプ" )
85+ self .elements [2 ].text = JapaneseFontText (self .game , self .elements [2 ].pos , self .elements [2 ].size , text = "速度: 中" )
86+ self .selectable_elements = [
87+ MenuSelectableText (self .game , execute = self .game .new_game_reimu ),
88+ MenuSelectableText (self .game , execute = self .game .new_game_marisa ),
89+ MenuSelectableText (self .game , execute = self .game .new_game_alice ),
90+ MenuSelectableText (self .game , execute = self .menumanager .change_current_menu , args = ["mainmenu" ]),
91+ ]
92+
93+ def rotate_clockwise (self ):
94+ self .ssc_angle -= 3
95+ def rotate_counterclockwise (self ):
96+ self .ssc_angle += 3
97+
98+ def _update (self ):
99+ self .selected_shottype_circle .draw_with_rot (self .ssc_angle )
100+ if self .menumanager .menu_ui_selected == 0 and self .ssc_angle != 0 :
101+ self .elements [0 ].text_str = "博麗 霊夢"
102+ self .elements [1 ].text_str = "広範囲をカバーショットタイプ"
103+ self .elements [2 ].text_str = "速度: 中"
104+ if self .ssc_angle >= 0 :
105+ self .rotate_clockwise ()
106+ else :
107+ self .rotate_counterclockwise ()
108+ if self .menumanager .menu_ui_selected == 1 and self .ssc_angle != 90 :
109+ self .elements [0 ].text_str = "霧雨 魔理沙"
110+ self .elements [1 ].text_str = "前方中心のショットタイプ"
111+ self .elements [2 ].text_str = "速度: 速い"
112+ if self .ssc_angle >= 90 :
113+ self .rotate_clockwise ()
114+ else :
115+ self .rotate_counterclockwise ()
116+ if self .menumanager .menu_ui_selected == 2 and self .ssc_angle != 180 :
117+ self .elements [0 ].text_str = "上海アリス幻樂団"
118+ self .elements [1 ].text_str = "ハイブリッドショットタイプ"
119+ self .elements [2 ].text_str = "速度: 中"
120+ if self .ssc_angle >= 180 :
121+ self .rotate_clockwise ()
122+ else :
123+ self .rotate_counterclockwise ()
124+ if self .menumanager .menu_ui_selected == 3 and self .ssc_angle != 270 :
125+ self .elements [0 ].text_str = "EXIT"
126+ self .elements [1 ].text_str = ""
127+ self .elements [2 ].text_str = ""
128+ if self .ssc_angle >= 270 :
129+ self .rotate_clockwise ()
130+ else :
131+ self .rotate_counterclockwise ()
132+
133+
134+ def update (self ):
135+ self ._update ()
136+ return super ().update ()
74137
75138class MenuBar :
76139 def __init__ (self , game , pos :list = [0 , 0 ], text = None , textcolor = None , barcolor = None , textsize = None , size = None ):
@@ -164,7 +227,7 @@ def on_use(self):
164227 else :
165228 self .text .on_use (* self .args )
166229 except Exception :
167- self .game .soundregistry .rglist ["cancel" ].play ()
230+ self .game .soundregistry .rglist ["cancel" ].play (self . game . soundvolume )
168231 self .game .soundregistry .rglist ["cancel" ].reload ()
169232
170233 def update_status (self ):
@@ -184,16 +247,20 @@ def update(self):
184247
185248
186249class MenuLabel :
187- def __init__ (self , game , pos : list = [0 , 0 ], img_path : pg . Surface = None ):
250+ def __init__ (self , game , pos : list = [0 , 0 ], img_path : str = "" , sprite_size = [] ):
188251 self .game = game
189252 self .pos = pos
190253 try :
191- if img_path is not str or img_path is not None :
192- self .img = pg .image .load (img_path ).convert_alpha ()
254+ if img_path :
255+ self .img = pg .image .load (img_path )# .convert_alpha()
193256 else :
194257 self .img = pg .image .load ("assets/img/guesswhatismissing.png" )
195258 except FileNotFoundError :
196259 self .img = pg .image .load ("assets/img/guesswhatismissing.png" )
260+ if sprite_size == []:
261+ self .sprite_size = list (self .img .get_size ())
262+ else :
263+ self .sprite_size = sprite_size
197264
198265 def no (self ): ... # reserved
199266 def no (self ): ... # reserved
@@ -204,8 +271,6 @@ def no(self): ... # reserved
204271 def no (self ): ... # reserved
205272 def no (self ): ... # reserved
206273 def no (self ): ... # reserved
207- def update (self ):
208- self .game .screen .blit (self .img , self .pos )
209274 def change_img (self , img_path ):
210275 try :
211276 if img_path is not str or img_path is not None :
@@ -220,7 +285,10 @@ def update(self):
220285 self .draw ()
221286
222287 def draw (self ):
223- self .game .screen .blit (self .img , self .pos )
288+ self .game .screen .blit (pg .transform .scale (self .img , self .sprite_size ), self .pos )
289+
290+ def draw_with_rot (self , angle ):
291+ self .game .screen .blit (pg .transform .rotate (pg .transform .scale (self .img , self .sprite_size ), angle ), self .pos )
224292
225293class MenuRect :
226294 '''optional args: \n
0 commit comments