Add game modes: default as training, waves and a 1 minute test, adjust for better scoring

This commit is contained in:
csd4ni3l
2025-06-20 20:53:50 +02:00
parent 525e201090
commit 33877059e0
7 changed files with 164 additions and 45 deletions

38
menus/game_modes.py Normal file
View File

@@ -0,0 +1,38 @@
import json
from utils.constants import game_modes
from ursina import *
class GameModeSelector:
def __init__(self, rpc):
self.rpc = rpc
rpc.update(state='In Game Mode Selector', details='Selecting Game Mode Selector', start=rpc.start_time)
self.data = json.load(open('settings.json'))
self.main = Entity(parent=camera.ui, model='cube', color=color.dark_gray, scale=(1.8, 1.2), z=1)
self.back_button = Button('Back', parent=camera.ui, color=color.gray, scale=(.1, .05), position=(-.8, .45), on_click=self.exit)
self.title_label = Text(text="Select a mode to play.", position=(-0.4, 0.35), scale=3)
self.ui = [self.main, self.back_button, self.title_label]
y = 0.1
for game_mode in game_modes:
button = Button(text=game_mode, scale_x=1, scale_y=0.2, text_size=2, position=(0, y), on_click=lambda game_mode=game_mode: self.play(game_mode))
self.ui.append(button)
y -= 0.21
def play(self, game_mode):
self.hide()
from game.game import Game
Game(self.rpc, game_mode.lower())
def hide(self):
for e in self.ui:
destroy(e)
self.ui.clear()
def exit(self):
self.hide()
from menus.main import Main
Main(pypresence_client=self.rpc)

View File

@@ -67,8 +67,8 @@ class Main():
def play(self):
self.hide()
from game.game import Game
Game(self.pypresence_client)
from menus.game_modes import GameModeSelector
GameModeSelector(self.pypresence_client)
def settings(self):
self.hide()

View File

@@ -16,17 +16,16 @@ class Settings:
self.data = json.load(open('settings.json'))
self.edits = {}
self.category = settings_start_category
self.ui = []
self.main = Entity(parent=camera.ui, model='cube', color=color.dark_gray, scale=(1.8, 1.2), z=1)
self.back = Button('Back', parent=camera.ui, color=color.gray, scale=(.1, .05), position=(-.8, .45), on_click=self.exit)
self.back_button = Button('Back', parent=camera.ui, color=color.gray, scale=(.1, .05), position=(-.8, .45), on_click=self.exit)
self.category_group = ButtonGroup(tuple(settings.keys()), default=self.category, spacing=(.25, 0, 0))
self.category_group.on_value_changed = lambda: self.show(self.category_group.value)
self.category_group.position = (-.6, .4)
self.ui += [self.main, self.back, self.category_group]
self.ui = [self.main, self.back_button, self.category_group]
self.weapon_dmg_inputs = {}
self.weapon_atk_speed_inputs = {}
@@ -298,7 +297,7 @@ class Settings:
def clear(self):
for e in list(self.ui):
if e not in (self.main, self.back, self.category_group):
if e not in (self.main, self.back_button, self.category_group):
destroy(e)
self.ui.remove(e)