mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-05 23:13:46 +08:00
Update mainmenu.py
This commit is contained in:
parent
cf02059b60
commit
88bd29d4fe
@ -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
|
||||||
@ -566,7 +567,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 +584,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 +593,65 @@ 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] = x + (random.random() - 0.5) * 0.7 * jitter_scale
|
||||||
time_v += random.random() * 0.1
|
time_v += random.random() * 0.1
|
||||||
bs.animate(cmb, 'input0', keys, loop=True)
|
bs.animate(cmb, 'input0', keys, loop=True)
|
||||||
keys = {}
|
keys = {}
|
||||||
time_v = 0.0
|
time_v = 0.0
|
||||||
for _i in range(10):
|
for _i in range(10):
|
||||||
keys[time_v * self._ts] = (
|
keys[time_v * self._ts] = (
|
||||||
y + (random.random() - 0.5) * 0.7 * jitter_scale
|
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.node.rotate = logo.node.rotate + 4
|
||||||
|
logo.node.scale = (
|
||||||
|
logo.node.scale[0] - 20, logo.node.scale[1] - 20
|
||||||
)
|
)
|
||||||
time_v += random.random() * 0.1
|
if logo.node.rotate >= 355:
|
||||||
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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user