Fix credits and settings dropdowns, add high score, fps counter

This commit is contained in:
csd4ni3l
2025-06-17 15:08:24 +02:00
parent da650a5bda
commit ab11d92e3a
7 changed files with 79 additions and 26 deletions

View File

@@ -46,14 +46,21 @@ class Main():
self.pypresence_client = FakePyPresence()
self.pypresence_client.start_time = time.time()
if os.path.exists("data.json"):
with open("data.json", "r") as file:
self.high_score = json.load(file)["high_score"]
else:
self.high_score = 0
self.pypresence_client.update(state='In Main Menu', details='In Main Menu')
button_spacing = .075 * 1.25
base_y = -2
self.menu_parent = Entity(parent=camera.ui, y=.15)
self.main_menu = Entity(parent=self.menu_parent)
self.title_label = Text("Aim Trainer", parent=self.main_menu, y=-0.25 * button_spacing, scale=3, x=-.2)
self.title_label = Text("Aim Trainer", parent=self.main_menu, y=-0.01 * button_spacing, scale=3, x=-.2)
self.high_score_label = Text(f"High Score: {self.high_score}", parent=self.main_menu, scale=1.25, y=-1 * button_spacing, x=-.12)
self.play_button = MenuButton('Play', on_click=Func(self.play), parent=self.main_menu, y=-2 * button_spacing)
self.settings_button = MenuButton('Settings', on_click=Func(self.settings), parent=self.main_menu, y=-3 * button_spacing)
self.quit_button = MenuButton('Quit', on_click=Sequence(Wait(.01), Func(application.quit)), parent=self.main_menu, y=-4 * button_spacing)

View File

@@ -1,9 +1,9 @@
from ursina import *
from ursina.prefabs.slider import ThinSlider
from ursina.prefabs.dropdown_menu import DropdownMenu, DropdownMenuButton
from ursina.prefabs.dropdown_menu import DropdownMenuButton
from ursina.prefabs.button_group import ButtonGroup
import pypresence, json, copy
from utils.utils import FakePyPresence
from utils.utils import FakePyPresence, Dropdown
from utils.constants import discord_presence_id, settings, settings_start_category
from utils.preload import music_sound
@@ -58,20 +58,29 @@ class Settings:
self.ui.append(slider)
else:
items = []
menu_buttons = []
for opt in info['options']:
b = DropdownMenuButton(opt)
b.on_click = lambda btn, n=name: self.update(n, btn.text)
items.append(b)
dm = DropdownMenu(val, buttons=tuple(items))
dm.position = (.2, y)
self.ui.append(dm)
menu_button = DropdownMenuButton(opt)
menu_buttons.append(menu_button)
dropdown_menu = Dropdown(val, buttons=tuple(menu_buttons))
for menu_button in menu_buttons:
menu_button.on_click = lambda dropdown_menu=dropdown_menu, btn=menu_button, n=name: self.dropdown_update(n, dropdown_menu, btn)
dropdown_menu.position = (.2, y)
self.ui.append(dropdown_menu)
y -= .08
self.apply_button = Button('Apply', parent=camera.ui, color=color.green, scale=(.15, .08), position=(.6, -.4), on_click=self.apply_changes)
self.ui.append(self.apply_button)
def dropdown_update(self, n, dropdown_menu, btn):
dropdown_menu.text = btn.text
self.update(n, btn.text)
def update(self, name, value):
self.edits[settings[self.category][name]['config_key']] = value
@@ -146,15 +155,15 @@ class Settings:
text = file.read()
if window.size.x >= 3840:
font_size = 2.4
font_size = 2.3
elif window.size.x >= 2560:
font_size = 1.9
font_size = 1.8
elif window.size.x >= 1920:
font_size = 1.6
font_size = 1.5
elif window.size.x >= 1440:
font_size = 1.3
font_size = 1.2
else:
font_size = 1.1
font_size = 1.0
self.credits_label = Text(text=text, parent=camera.ui, position=(0, 0), origin=(0, 0), scale=font_size, color=color.white)
self.credits_label.type = 'credits_text'