Merge pull request #723 from vishal332008/main

Rotating Logo and some other fixes
This commit is contained in:
Eric Froemling 2024-09-09 09:08:26 -07:00 committed by GitHub
commit 5868b074cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 79 additions and 46 deletions

View File

@ -396,7 +396,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
bui.buttonwidget( bui.buttonwidget(
parent=rootc, parent=rootc,
color=(0.45, 0.4, 0.5), color=(0.45, 0.4, 0.5),
position=(160, v_offs + 480), position=(160, v_offs + 439),
size=(350, 62), size=(350, 62),
label=( label=(
bui.Lstr(resource='tournamentStandingsText') bui.Lstr(resource='tournamentStandingsText')
@ -489,8 +489,8 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
x_offs_extra = 0 if show_next_button else -100 x_offs_extra = 0 if show_next_button else -100
self._corner_button_offs = ( self._corner_button_offs = (
h_offs + 300.0 + 100.0 + x_offs_extra, h_offs + 300.0 + x_offs_extra,
v_offs + 560.0, v_offs + 519.0,
) )
if env.demo or env.arcade: if env.demo or env.arcade:
@ -499,7 +499,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
else: else:
self._league_rank_button = LeagueRankButton( self._league_rank_button = LeagueRankButton(
parent=rootc, parent=rootc,
position=(h_offs + 300 + 100 + x_offs_extra, v_offs + 560), position=(h_offs + 300 + x_offs_extra, v_offs + 519),
size=(100, 60), size=(100, 60),
scale=0.9, scale=0.9,
color=(0.4, 0.4, 0.9), color=(0.4, 0.4, 0.9),
@ -509,7 +509,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
) )
self._store_button_instance = StoreButton( self._store_button_instance = StoreButton(
parent=rootc, parent=rootc,
position=(h_offs + 400 + 100 + x_offs_extra, v_offs + 560), position=(h_offs + 400 + x_offs_extra, v_offs + 519),
show_tickets=True, show_tickets=True,
sale_scale=0.85, sale_scale=0.85,
size=(100, 60), size=(100, 60),
@ -536,9 +536,8 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
) )
def _update_corner_button_positions(self) -> None: def _update_corner_button_positions(self) -> None:
offs = -55
assert self._corner_button_offs is not None assert self._corner_button_offs is not None
pos_x = self._corner_button_offs[0] + offs pos_x = self._corner_button_offs[0]
pos_y = self._corner_button_offs[1] pos_y = self._corner_button_offs[1]
if self._league_rank_button is not None: if self._league_rank_button is not None:
self._league_rank_button.set_position((pos_x, pos_y)) self._league_rank_button.set_position((pos_x, pos_y))
@ -716,7 +715,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
color=(0.5, 1, 0.5, 1), color=(0.5, 1, 0.5, 1),
h_align='center', h_align='center',
scale=0.4, scale=0.4,
position=(0, 292), position=(0, 255),
jitter=1.0, jitter=1.0,
).autoretain() ).autoretain()
Text( Text(
@ -1277,7 +1276,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
), ),
position=( position=(
ts_h_offs - 35 + 95, ts_h_offs - 35 + 95,
ts_height / 2 + 6 + v_offs, ts_height / 2 + 6 + v_offs - 41,
), ),
color=(0.4, 0.4, 0.4, 1.0), color=(0.4, 0.4, 0.4, 1.0),
scale=0.7, scale=0.7,
@ -1344,7 +1343,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
ts_height / 2 ts_height / 2
+ -ts_height * (i + 1) / 10 + -ts_height * (i + 1) / 10
+ v_offs + v_offs
+ 11.0, - 30.0,
), ),
h_align=Text.HAlign.RIGHT, h_align=Text.HAlign.RIGHT,
v_align=Text.VAlign.CENTER, v_align=Text.VAlign.CENTER,
@ -1361,7 +1360,7 @@ class CoopScoreScreen(bs.Activity[bs.Player, bs.Team]):
+ -ts_height * (i + 1) / 10 + -ts_height * (i + 1) / 10
+ v_offs_names + v_offs_names
+ v_offs + v_offs
+ 11.0, - 30.0,
), ),
maxwidth=80.0 + 100.0 * len(self._playerinfos), maxwidth=80.0 + 100.0 * len(self._playerinfos),
v_align=Text.VAlign.CENTER, v_align=Text.VAlign.CENTER,

View File

@ -7,6 +7,7 @@ from __future__ import annotations
import time import time
import random import random
import weakref import weakref
import functools
from typing import TYPE_CHECKING, override from typing import TYPE_CHECKING, override
import bascenev1 as bs import bascenev1 as bs
@ -42,6 +43,7 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]):
self._update_timer: bs.Timer | None = None self._update_timer: bs.Timer | None = None
self._news: NewsDisplay | None = None self._news: NewsDisplay | None = None
self._attract_mode_timer: bs.Timer | None = None self._attract_mode_timer: bs.Timer | None = None
self._logo_rotate_timer: bs.Timer | None = None
@override @override
def on_transition_in(self) -> None: def on_transition_in(self) -> None:
@ -566,7 +568,6 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]):
vr_depth_offset: float = 0.0, vr_depth_offset: float = 0.0,
) -> None: ) -> None:
# pylint: disable=too-many-locals # pylint: disable=too-many-locals
# Temp easter goodness. # Temp easter goodness.
if custom_texture is None: if custom_texture is None:
custom_texture = self._get_custom_logo_tex_name() custom_texture = self._get_custom_logo_tex_name()
@ -584,6 +585,7 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]):
bs.newnode( bs.newnode(
'image', 'image',
attrs={ attrs={
'position': (x, y),
'texture': ltex, 'texture': ltex,
'mesh_opaque': mopaque, 'mesh_opaque': mopaque,
'mesh_transparent': mtrans, 'mesh_transparent': mtrans,
@ -592,47 +594,68 @@ class MainMenuActivity(bs.Activity[bs.Player, bs.Team]):
'attach': 'center', 'attach': 'center',
'tilt_translate': 0.21, 'tilt_translate': 0.21,
'absolute_scale': True, 'absolute_scale': True,
'scale': (
(2000.0,2000.0) if custom_texture is None
else None
)
}, },
) )
) )
self._logo_node = logo.node self._logo_node = logo.node
self._word_actors.append(logo) self._word_actors.append(logo)
# Add a bit of stop-motion-y jitter to the logo (unless we're in # Add a bit of stop-motion-y jitter to the logo
# VR mode in which case its best to leave things still). # (unless we're in VR mode in which case its best to
# leave things still).
assert logo.node assert logo.node
if not bs.app.env.vr: def jitter() -> None:
cmb = bs.newnode('combine', owner=logo.node, attrs={'size': 2}) if not bs.app.env.vr:
cmb.connectattr('output', logo.node, 'position') cmb = bs.newnode('combine', owner=logo.node, attrs={'size': 2})
keys = {} cmb.connectattr('output', logo.node, 'position')
time_v = 0.0 keys = {}
time_v = 0.0
# Gen some random keys for that stop-motion-y look # Gen some random keys for that stop-motion-y look
for _i in range(10): for _i in range(10):
keys[time_v] = x + (random.random() - 0.5) * 0.7 * jitter_scale keys[time_v] = (
time_v += random.random() * 0.1 x + (random.random() - 0.5) * 0.7 * jitter_scale
bs.animate(cmb, 'input0', keys, loop=True) )
keys = {} time_v += random.random() * 0.1
time_v = 0.0 bs.animate(cmb, 'input0', keys, loop=True)
for _i in range(10): keys = {}
keys[time_v * self._ts] = ( time_v = 0.0
y + (random.random() - 0.5) * 0.7 * jitter_scale for _i in range(10):
keys[time_v * self._ts] = (
y + (random.random() - 0.5) * 0.7 * jitter_scale
)
time_v += random.random() * 0.1
bs.animate(cmb, 'input1', keys, loop=True)
if custom_texture is None:
def rotate_logo() -> None:
logo_scale = logo.node.scale
logo.node.rotate = logo.node.rotate + 4
logo.node.scale = (
logo_scale[0] - 20, logo_scale[1] - 20
) )
time_v += random.random() * 0.1 if logo.node.rotate >= 356:
bs.animate(cmb, 'input1', keys, loop=True) self._logo_rotate_timer = None
jitter()
self._logo_rotate_timer = bs.Timer(
0.001, functools.partial(rotate_logo), repeat = True
)
else: else:
logo.node.position = (x, y) jitter()
cmb = bs.newnode('combine', owner=logo.node, attrs={'size': 2})
cmb = bs.newnode('combine', owner=logo.node, attrs={'size': 2}) keys = {
delay: 0.0,
keys = { delay + 0.1: 700.0 * scale,
delay: 0.0, delay + 0.2: 600.0 * scale,
delay + 0.1: 700.0 * scale, }
delay + 0.2: 600.0 * scale, bs.animate(cmb, 'input0', keys)
} bs.animate(cmb, 'input1', keys)
bs.animate(cmb, 'input0', keys) cmb.connectattr('output', logo.node, 'scale')
bs.animate(cmb, 'input1', keys)
cmb.connectattr('output', logo.node, 'scale')
def _start_preloads(self) -> None: def _start_preloads(self) -> None:
# FIXME: The func that calls us back doesn't save/restore state # FIXME: The func that calls us back doesn't save/restore state

View File

@ -592,3 +592,6 @@ class InGameMenuWindow(bui.MainWindow):
logging.exception('Error in classic resume callback.') logging.exception('Error in classic resume callback.')
classic.main_menu_resume_callbacks.clear() classic.main_menu_resume_callbacks.clear()
def __del__(self) -> None:
self._resume()

View File

@ -132,7 +132,7 @@ class AdvancedSettingsWindow(bui.MainWindow):
self._height - (57 if uiscale is bui.UIScale.SMALL else 40), self._height - (57 if uiscale is bui.UIScale.SMALL else 40),
), ),
size=(0, 0), size=(0, 0),
scale=0.5 if uiscale is bui.UIScale.SMALL else 1.0, scale=0.65 if uiscale is bui.UIScale.SMALL else 1.0,
text=bui.Lstr(resource=f'{self._r}.titleText'), text=bui.Lstr(resource=f'{self._r}.titleText'),
color=app.ui_v1.title_color, color=app.ui_v1.title_color,
h_align='center', h_align='center',

View File

@ -148,7 +148,9 @@ class ControlsSettingsWindow(bui.MainWindow):
bui.textwidget( bui.textwidget(
parent=self._root_widget, parent=self._root_widget,
position=(0, height - 49 + yoffs), position=(0, height + yoffs - (
75 if uiscale is bui.UIScale.SMALL else 50)
),
size=(width, 25), size=(width, 25),
text=bui.Lstr(resource=f'{self._r}.titleText'), text=bui.Lstr(resource=f'{self._r}.titleText'),
color=bui.app.ui_v1.title_color, color=bui.app.ui_v1.title_color,
@ -296,7 +298,8 @@ class ControlsSettingsWindow(bui.MainWindow):
xinput_checkbox = bui.checkboxwidget( xinput_checkbox = bui.checkboxwidget(
parent=self._root_widget, parent=self._root_widget,
position=(100, v + 3), position=(width * (
0.35 if uiscale is bui.UIScale.SMALL else 0.25), v + 3),
size=(120, 30), size=(120, 30),
value=(not bui.get_low_level_config_value('enablexinput', 1)), value=(not bui.get_low_level_config_value('enablexinput', 1)),
maxwidth=200, maxwidth=200,

View File

@ -2499,6 +2499,7 @@ static auto PySetPartyWindowOpen(PyObject* self, PyObject* args,
// } // }
// root_ui->set_party_window_open(static_cast<bool>(value)); // root_ui->set_party_window_open(static_cast<bool>(value));
g_ui_v1->set_party_window_open(static_cast<bool>(value));
Py_RETURN_NONE; Py_RETURN_NONE;
BA_PYTHON_CATCH; BA_PYTHON_CATCH;
} }

View File

@ -102,7 +102,7 @@ bool UIV1FeatureSet::PartyWindowOpen() {
// if (auto* r = root_ui()) { // if (auto* r = root_ui()) {
// return r->party_window_open(); // return r->party_window_open();
// } // }
return false; return party_window_open_;
} }
void UIV1FeatureSet::Draw(base::FrameDef* frame_def) { void UIV1FeatureSet::Draw(base::FrameDef* frame_def) {

View File

@ -125,6 +125,9 @@ class UIV1FeatureSet : public FeatureSetNativeComponent,
auto always_use_internal_on_screen_keyboard() const { auto always_use_internal_on_screen_keyboard() const {
return always_use_internal_on_screen_keyboard_; return always_use_internal_on_screen_keyboard_;
} }
auto set_party_window_open(bool value) {
party_window_open_ = value;
}
auto HasQuitConfirmDialog() -> bool override; auto HasQuitConfirmDialog() -> bool override;
void ConfirmQuit(QuitType quit_type) override; void ConfirmQuit(QuitType quit_type) override;
@ -135,6 +138,7 @@ class UIV1FeatureSet : public FeatureSetNativeComponent,
Object::Ref<ContainerWidget> overlay_root_widget_; Object::Ref<ContainerWidget> overlay_root_widget_;
Object::Ref<RootWidget> root_widget_; Object::Ref<RootWidget> root_widget_;
bool always_use_internal_on_screen_keyboard_{}; bool always_use_internal_on_screen_keyboard_{};
bool party_window_open_{false};
int ui_lock_count_{}; int ui_lock_count_{};
int language_state_{}; int language_state_{};
}; };