mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-24 07:53:30 +08:00
more c++ reorganizing
This commit is contained in:
parent
7231ff2cfb
commit
b837d3707e
@ -3995,50 +3995,50 @@
|
||||
"assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e",
|
||||
"assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/b2/e5/0ee0561e16257a32830645239f34",
|
||||
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/33/fa/2b4dc04a7e94af821486c0baaadd",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/39/c0/0a8c20d90b3bb0b605f56cf57cd6",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/9d/9e/36bc9196a661b7ac730309363b25",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/78/61/3ee51d8c85ac897cb48326059f4f",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/41/24/ea579f7f46ee8764b99aa1f740e6",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/d7/79/db7ba776fe53a432f501cc524f29",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/67/8c/fd54c4640fe9574c819eb93235de",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d0/23/0ed4f59b045bd996e9e8c3adac25",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/7b/7a/65e4a1a866aa716f339934316888",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/4c/96/40086b7256c6b69500231234816f",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/25/4e/65658e3b1137e29c26e5a250cb7f",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a4/d3/9e94f9f4a3f326ab3fb4563605e8",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/70/82/54ac546d3d6404259c025e4697a6",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/8c/71/35e658ed48d1732ac1ace9a651d0",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/cb/c1/66f115696b5694b203d2a3e3f3b6",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/76/7e/ef8ca6f4baae2d3540658a43238e",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/e5/01/48f01b3bfb0e11dfa298809751d6",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/4e/35/3e14be7308b3b8a4d7ee00223d02",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/2f/8d/5bf66b9999ac4a0b109ce6a93ee9",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/6f/ba/6814ccb61a86032c381b59092b92",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e0/b3/7ccccfd8721033582cabdfe11f73",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/c7/7c/11757954adb7da34c0e8cb6a6470",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/30/4e/361603ee5faf75168ddefd070b44",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b6/2e/e3bd12f2c9e7baa173479686485d",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1e/fe/0f73516a00159f6cd4b4791f010d",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/60/a4/f6798a377123b4f0ea58067173b9",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/60/0d/772009d20e18def687f6b76021f8",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ec/98/ca24d22fa6870cf2fa4b1dc81e2a",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ab/71/616a553794306a406be45697895c",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/41/14/bae7db8e7361d538096253c36792",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/91/5f/d2bfb2b30befdae9270a119d51b5",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d8/07/bd414612e9bf05f2a3c0b531a552",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/49/64/5943868e08758fc103e8ce70f334",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/1a/a9/bae1d4c1840d6e4c1931c529e4f8",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/22/a9/75669c9a475fc8080ce422ce2baa",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e1/87/95cbc6fc53e43e206f43eb3a1c61",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a4/1b/9a6145a32ef40fd3b8357cfbfb30",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/6a/a5/5afd24a1043a652af8ae76ec33ea",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/dd/3a/71c400bbac9edc5fa7b63e099ae7",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/dc/18/7e47d66f054e81314b39c14b26dc",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/43/25/36e8e8fc1eac369727f9639bbcf9",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e7/25/6fb628f1f5260834692bdeab63b0",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/86/d2/d18cbc017a7d64001f96718cc5ed",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/64/9b/78cdb9eda7b30611774769859caa",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8e/e5/cfbcc97e2b8c7ee46d0422e54380",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/06/70/9e5becbdf873ea42fae9541dd123",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8e/1b/8a766948a66967084da94255ad51",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0d/18/6a515fce87613b2293a8f7bf1a35",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a3/47/f46d4455e6ee1ebb397508495d90",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/54/ea/a250bddec2d7285ea5f4e9a29864",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/14/49/890119e5ff8800edf3b3cda113df",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4c/32/de6296fdbd72d6a82d47a2403efd",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d2/1d/c111bdf386178fd46eff2c5a8cff",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3b/a5/e0aa43ca227c6bfa2ae8f44add14",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b5/6d/7506bdad0891a0e7cb6d04c6b018",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/95/bc/affcb077742c90c9d51fd2dc4274",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cd/c2/72b9276880eddb6121542c052b1d",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c8/d2/5df66f66e26c1beb8a1e2b1f0613",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7e/57/593e8ceeee37a65972f1fb30d2cd",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2f/fc/a2ac394899e6527f8def0cad4d8a",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/b9/00/54be93a362cac005b111902cf725",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/cf/33/0aba47dbe0848b9a0fe65e3fe5ac",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/7f/a5/705f0b9b047d439d7b8805e684a1",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/e1/11/91da47c90faced11f80ce365e6ca",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/f0/47/fec8d08adc467bc46516ce39423a",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/c0/cb/36553e332fb3297e8f632387fdbb",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/a7/96/f19a4cc19386511d732533ead3d3",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/0c/23/5d5da73cd643d4fb344849768bf3",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/89/94/c90bb234585a62a097c6f6642e7d",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/39/2c/773ff4c64734bcd6205080a0563d",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0c/18/4a032d351000cf732bb7494d85f7",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4b/9d/be9915b6f1f1a0d83ae11885bd42",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/31/d2/e658b66d64c828f85d84a9b0d482",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/31/26/5c531133795d1381ced85e519b10",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/24/4f/c0a11a834ae10e9706bf92879d23",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a3/c6/d9b0509fe23a07de2ccee6ba1fd4",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/1b/93/23b7d341894fb875acaefe0804c5",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/86/e1/65b4096af71168842a99278708da",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/d8/91/3b918141edeaeb3034e558f54246",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/74/ff/12db4137ed498dbbffd892c5000f",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/41/0a/18695d2503c1062d7b2f47c88380",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/2d/59/5bd72f8f691f041059cab3df99d5",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/3b/63/7eeb46b7832e1135e58345866abf",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/89/e4/0b7890024077f73e328b20b543f5",
|
||||
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/7d/3e/229a581cb2454ed856f1d8b564a7",
|
||||
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/98/12/571b2160d69d42580e8f31fa6a8d"
|
||||
}
|
||||
1
.idea/dictionaries/ericf.xml
generated
1
.idea/dictionaries/ericf.xml
generated
@ -433,6 +433,7 @@
|
||||
<w>clrhdr</w>
|
||||
<w>clrnames</w>
|
||||
<w>clrred</w>
|
||||
<w>cmakelist</w>
|
||||
<w>cmakelists</w>
|
||||
<w>cmakeserver</w>
|
||||
<w>cmath</w>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
### 1.7.7 (build 20806, api 7, 2022-09-10)
|
||||
### 1.7.7 (build 20809, api 7, 2022-09-10)
|
||||
- Added `ba.app.meta.load_exported_classes()` for loading classes discovered by the meta subsystem cleanly in a background thread.
|
||||
- Improved logging of missing playlist game types.
|
||||
- Some ba.Lstr functionality can now be used in background threads.
|
||||
@ -20,8 +20,9 @@
|
||||
- There is now a `_bainternal.py` dummy-module alongside the existing `_ba.py` one. Be sure to exclude it from any script collections used by the game (the same as `_ba.py`).
|
||||
- Added checks to make sure _ba or _bainternal arent used outside of ba. Any 'internal' functionality needed outside of ba should be exposed through ba.internal. _ba and _bainternal are internal implementation details.
|
||||
- Removed C++ Module class and simplified Thread class. The Module class was an old relic of long ago before C++ had lambdas and its existence was pretty pointless and confusing these days.
|
||||
- Renamed C++ App to AppFlavor and AppGlobals to App
|
||||
- Renamed C++ Media to Assets
|
||||
- Renamed C++ App to AppFlavor and AppGlobals to App.
|
||||
- Renamed C++ Media to Assets.
|
||||
- Removed 'scores to beat' list in coop which was only ever functional in limited cases on the Mac version. Perhaps that feature can reappear in a cross-platform way sometime.
|
||||
|
||||
### 1.7.6 (build 20687, api 7, 2022-08-11)
|
||||
- Cleaned up da MetaSubsystem code.
|
||||
|
||||
4
Makefile
4
Makefile
@ -20,6 +20,10 @@ help:
|
||||
# Set env-var BA_ENABLE_IRONY_BUILD_DB=1 to enable creating/updating a
|
||||
# cmake compile-commands database for use with irony for emacs (and possibly
|
||||
# other tools).
|
||||
# FIXME - this can break if we move/rename files and then run 'make update'
|
||||
# because it tries to use the previous cmakelist with the no-longer-valid
|
||||
# filename *before* it updates the cmakelist. Need to rethink order of
|
||||
# operations there.
|
||||
ifeq ($(BA_ENABLE_IRONY_BUILD_DB),1)
|
||||
PREREQ_IRONY = .cache/irony/compile_commands.json
|
||||
endif
|
||||
|
||||
@ -1 +1 @@
|
||||
319717366410279141138094934973337011486
|
||||
174884230264825984620020844009502663721
|
||||
@ -38,7 +38,7 @@ def bootstrap() -> None:
|
||||
|
||||
# Give a soft warning if we're being used with a different binary
|
||||
# version than we expect.
|
||||
expected_build = 20806
|
||||
expected_build = 20809
|
||||
running_build: int = env['build_number']
|
||||
if running_build != expected_build:
|
||||
print(
|
||||
|
||||
@ -55,19 +55,6 @@ class CoopGameActivity(GameActivity[PlayerType, TeamType]):
|
||||
# Preload achievement images in case we get some.
|
||||
_ba.timer(2.0, WeakCall(self._preload_achievements))
|
||||
|
||||
# Let's ask the server for a 'time-to-beat' value.
|
||||
levelname = self._get_coop_level_name()
|
||||
campaign = self.session.campaign
|
||||
assert campaign is not None
|
||||
config_str = (str(len(self.players)) + 'p' + campaign.getlevel(
|
||||
self.settings_raw['name']).get_score_version_string().replace(
|
||||
' ', '_'))
|
||||
_ba.get_scores_to_beat(levelname, config_str,
|
||||
WeakCall(self._on_got_scores_to_beat))
|
||||
|
||||
def _on_got_scores_to_beat(self, scores: list[dict[str, Any]]) -> None:
|
||||
pass
|
||||
|
||||
def _show_standard_scores_to_beat_ui(self,
|
||||
scores: list[dict[str, Any]]) -> None:
|
||||
from efro.util import asserttype
|
||||
|
||||
@ -9,16 +9,16 @@ defensively) in mods.
|
||||
from __future__ import annotations
|
||||
|
||||
from _ba import (
|
||||
get_scores_to_beat, show_online_score_ui, set_ui_input_device,
|
||||
is_party_icon_visible, getinputdevice, add_clean_frame_callback,
|
||||
unlock_all_input, increment_analytics_count, set_debug_speed_exponent,
|
||||
get_special_widget, get_qrcode_texture, get_string_height,
|
||||
get_string_width, show_app_invite, appnameupper, lock_all_input,
|
||||
open_file_externally, fade_screen, appname, have_incentivized_ad,
|
||||
has_video_ads, workspaces_in_use, set_party_icon_always_visible,
|
||||
connect_to_party, get_game_port, end_host_scanning, host_scan_cycle,
|
||||
charstr, get_public_party_enabled, get_public_party_max_size,
|
||||
set_public_party_name, set_public_party_max_size, set_authenticate_clients,
|
||||
show_online_score_ui, set_ui_input_device, is_party_icon_visible,
|
||||
getinputdevice, add_clean_frame_callback, unlock_all_input,
|
||||
increment_analytics_count, set_debug_speed_exponent, get_special_widget,
|
||||
get_qrcode_texture, get_string_height, get_string_width, show_app_invite,
|
||||
appnameupper, lock_all_input, open_file_externally, fade_screen, appname,
|
||||
have_incentivized_ad, has_video_ads, workspaces_in_use,
|
||||
set_party_icon_always_visible, connect_to_party, get_game_port,
|
||||
end_host_scanning, host_scan_cycle, charstr, get_public_party_enabled,
|
||||
get_public_party_max_size, set_public_party_name,
|
||||
set_public_party_max_size, set_authenticate_clients,
|
||||
set_public_party_enabled, reset_random_player_names, new_host_session,
|
||||
get_foreground_host_session, get_local_active_input_devices_count,
|
||||
get_ui_input_device, is_in_replay, set_replay_speed_exponent,
|
||||
@ -78,7 +78,6 @@ from ba._internal import (
|
||||
sign_out_v1, sign_in_v1, mark_config_dirty)
|
||||
|
||||
__all__ = [
|
||||
'get_scores_to_beat',
|
||||
'show_online_score_ui',
|
||||
'set_ui_input_device',
|
||||
'is_party_icon_visible',
|
||||
|
||||
@ -10,7 +10,7 @@ import ba
|
||||
from ba.internal import JoinActivity
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any, Sequence
|
||||
pass
|
||||
|
||||
|
||||
class CoopJoinActivity(JoinActivity):
|
||||
@ -24,17 +24,6 @@ class CoopJoinActivity(JoinActivity):
|
||||
session = self.session
|
||||
assert isinstance(session, ba.CoopSession)
|
||||
|
||||
# Let's show a list of scores-to-beat for 1 player at least.
|
||||
assert session.campaign is not None
|
||||
level_name_full = (session.campaign.name + ':' +
|
||||
session.campaign_level_name)
|
||||
config_str = ('1p' + session.campaign.getlevel(
|
||||
session.campaign_level_name).get_score_version_string().replace(
|
||||
' ', '_'))
|
||||
ba.internal.get_scores_to_beat(
|
||||
level_name_full, config_str,
|
||||
ba.WeakCall(self._on_got_scores_to_beat))
|
||||
|
||||
def on_transition_in(self) -> None:
|
||||
from bastd.actor.controlsguide import ControlsGuide
|
||||
from bastd.actor.text import Text
|
||||
@ -53,143 +42,61 @@ class CoopJoinActivity(JoinActivity):
|
||||
position=(0, -95)).autoretain()
|
||||
ControlsGuide(delay=1.0).autoretain()
|
||||
|
||||
def _on_got_scores_to_beat(self,
|
||||
scores: list[dict[str, Any]] | None) -> None:
|
||||
# pylint: disable=too-many-locals
|
||||
# pylint: disable=too-many-statements
|
||||
from efro.util import asserttype
|
||||
from bastd.actor.text import Text
|
||||
ba.pushcall(self._show_remaining_achievements)
|
||||
|
||||
# Sort by originating date so that the most recent is first.
|
||||
if scores is not None:
|
||||
scores.sort(reverse=True,
|
||||
key=lambda score: asserttype(score['time'], int))
|
||||
def _show_remaining_achievements(self) -> None:
|
||||
from bastd.actor.text import Text
|
||||
|
||||
# We only show achievements and challenges for CoopGameActivities.
|
||||
session = self.session
|
||||
assert isinstance(session, ba.CoopSession)
|
||||
gameinstance = session.get_current_game_instance()
|
||||
if isinstance(gameinstance, ba.CoopGameActivity):
|
||||
score_type = gameinstance.get_score_type()
|
||||
if scores is not None:
|
||||
achievement_challenges = [
|
||||
a for a in scores if a['type'] == 'achievement_challenge'
|
||||
]
|
||||
score_challenges = [
|
||||
a for a in scores if a['type'] == 'score_challenge'
|
||||
]
|
||||
else:
|
||||
achievement_challenges = score_challenges = []
|
||||
if not isinstance(gameinstance, ba.CoopGameActivity):
|
||||
return
|
||||
|
||||
delay = 1.0
|
||||
vpos = -140.0
|
||||
spacing = 25
|
||||
delay_inc = 0.1
|
||||
delay = 1.0
|
||||
vpos = -140.0
|
||||
|
||||
def _add_t(
|
||||
text: str | ba.Lstr,
|
||||
h_offs: float = 0.0,
|
||||
scale: float = 1.0,
|
||||
color: Sequence[float] = (1.0, 1.0, 1.0, 0.46)
|
||||
) -> None:
|
||||
Text(text,
|
||||
scale=scale * 0.76,
|
||||
h_align=Text.HAlign.LEFT,
|
||||
# Now list our remaining achievements for this level.
|
||||
assert self.session.campaign is not None
|
||||
assert isinstance(self.session, ba.CoopSession)
|
||||
levelname = (self.session.campaign.name + ':' +
|
||||
self.session.campaign_level_name)
|
||||
ts_h_offs = 60
|
||||
|
||||
if not (ba.app.demo_mode or ba.app.arcade_mode):
|
||||
achievements = [
|
||||
a for a in ba.app.ach.achievements_for_coop_level(levelname)
|
||||
if not a.complete
|
||||
]
|
||||
have_achievements = bool(achievements)
|
||||
achievements = [a for a in achievements if not a.complete]
|
||||
vrmode = ba.app.vr_mode
|
||||
if have_achievements:
|
||||
Text(ba.Lstr(resource='achievementsRemainingText'),
|
||||
host_only=True,
|
||||
position=(ts_h_offs - 10, vpos),
|
||||
transition=Text.Transition.FADE_IN,
|
||||
scale=1.1 * 0.76,
|
||||
h_attach=Text.HAttach.LEFT,
|
||||
v_attach=Text.VAttach.TOP,
|
||||
transition=Text.Transition.FADE_IN,
|
||||
transition_delay=delay,
|
||||
color=color,
|
||||
position=(60 + h_offs, vpos)).autoretain()
|
||||
|
||||
if score_challenges:
|
||||
_add_t(ba.Lstr(value='${A}:',
|
||||
subs=[('${A}',
|
||||
ba.Lstr(resource='scoreChallengesText'))
|
||||
]),
|
||||
scale=1.1)
|
||||
delay += delay_inc
|
||||
vpos -= spacing
|
||||
for chal in score_challenges:
|
||||
_add_t(str(chal['value'] if score_type == 'points' else ba.
|
||||
timestring(int(chal['value']) * 10,
|
||||
timeformat=ba.TimeFormat.MILLISECONDS
|
||||
).evaluate()) + ' (1 player)',
|
||||
h_offs=30,
|
||||
color=(0.9, 0.7, 1.0, 0.8))
|
||||
delay += delay_inc
|
||||
vpos -= 0.6 * spacing
|
||||
_add_t(chal['player'],
|
||||
h_offs=40,
|
||||
color=(0.8, 1, 0.8, 0.6),
|
||||
scale=0.8)
|
||||
delay += delay_inc
|
||||
vpos -= 1.2 * spacing
|
||||
vpos -= 0.5 * spacing
|
||||
|
||||
if achievement_challenges:
|
||||
_add_t(ba.Lstr(
|
||||
value='${A}:',
|
||||
subs=[('${A}',
|
||||
ba.Lstr(resource='achievementChallengesText'))]),
|
||||
scale=1.1)
|
||||
delay += delay_inc
|
||||
vpos -= spacing
|
||||
for chal in achievement_challenges:
|
||||
_add_t(str(chal['value']),
|
||||
h_offs=30,
|
||||
color=(0.9, 0.7, 1.0, 0.8))
|
||||
delay += delay_inc
|
||||
vpos -= 0.6 * spacing
|
||||
_add_t(chal['player'],
|
||||
h_offs=40,
|
||||
color=(0.8, 1, 0.8, 0.6),
|
||||
scale=0.8)
|
||||
delay += delay_inc
|
||||
vpos -= 1.2 * spacing
|
||||
vpos -= 0.5 * spacing
|
||||
|
||||
# Now list our remaining achievements for this level.
|
||||
assert self.session.campaign is not None
|
||||
assert isinstance(self.session, ba.CoopSession)
|
||||
levelname = (self.session.campaign.name + ':' +
|
||||
self.session.campaign_level_name)
|
||||
ts_h_offs = 60
|
||||
|
||||
if not (ba.app.demo_mode or ba.app.arcade_mode):
|
||||
achievements = [
|
||||
a
|
||||
for a in ba.app.ach.achievements_for_coop_level(levelname)
|
||||
if not a.complete
|
||||
]
|
||||
have_achievements = bool(achievements)
|
||||
achievements = [a for a in achievements if not a.complete]
|
||||
vrmode = ba.app.vr_mode
|
||||
if have_achievements:
|
||||
Text(ba.Lstr(resource='achievementsRemainingText'),
|
||||
color=(1, 1, 1.2, 1) if vrmode else (0.8, 0.8, 1, 1),
|
||||
shadow=1.0,
|
||||
flatness=1.0 if vrmode else 0.6,
|
||||
transition_delay=delay).autoretain()
|
||||
hval = ts_h_offs + 50
|
||||
vpos -= 35
|
||||
for ach in achievements:
|
||||
delay += 0.05
|
||||
ach.create_display(hval, vpos, delay, style='in_game')
|
||||
vpos -= 55
|
||||
if not achievements:
|
||||
Text(ba.Lstr(resource='noAchievementsRemainingText'),
|
||||
host_only=True,
|
||||
position=(ts_h_offs - 10, vpos),
|
||||
position=(ts_h_offs + 15, vpos + 10),
|
||||
transition=Text.Transition.FADE_IN,
|
||||
scale=1.1 * 0.76,
|
||||
scale=0.7,
|
||||
h_attach=Text.HAttach.LEFT,
|
||||
v_attach=Text.VAttach.TOP,
|
||||
color=(1, 1, 1.2, 1) if vrmode else (0.8, 0.8, 1, 1),
|
||||
shadow=1.0,
|
||||
flatness=1.0 if vrmode else 0.6,
|
||||
transition_delay=delay).autoretain()
|
||||
hval = ts_h_offs + 50
|
||||
vpos -= 35
|
||||
for ach in achievements:
|
||||
delay += 0.05
|
||||
ach.create_display(hval, vpos, delay, style='in_game')
|
||||
vpos -= 55
|
||||
if not achievements:
|
||||
Text(ba.Lstr(resource='noAchievementsRemainingText'),
|
||||
host_only=True,
|
||||
position=(ts_h_offs + 15, vpos + 10),
|
||||
transition=Text.Transition.FADE_IN,
|
||||
scale=0.7,
|
||||
h_attach=Text.HAttach.LEFT,
|
||||
v_attach=Text.VAttach.TOP,
|
||||
color=(1, 1, 1, 0.5),
|
||||
transition_delay=delay + 0.5).autoretain()
|
||||
color=(1, 1, 1, 0.5),
|
||||
transition_delay=delay + 0.5).autoretain()
|
||||
|
||||
@ -230,6 +230,7 @@
|
||||
<w>clientinfo</w>
|
||||
<w>clienttobasn</w>
|
||||
<w>clipcount</w>
|
||||
<w>cmakelist</w>
|
||||
<w>cmath</w>
|
||||
<w>cmds</w>
|
||||
<w>cmdvals</w>
|
||||
|
||||
@ -348,15 +348,12 @@ add_executable(ballisticacore
|
||||
${BA_SRC_ROOT}/ballistica/game/friend_score_set.h
|
||||
${BA_SRC_ROOT}/ballistica/game/game.cc
|
||||
${BA_SRC_ROOT}/ballistica/game/game.h
|
||||
${BA_SRC_ROOT}/ballistica/game/game_stream.cc
|
||||
${BA_SRC_ROOT}/ballistica/game/game_stream.h
|
||||
${BA_SRC_ROOT}/ballistica/game/host_activity.cc
|
||||
${BA_SRC_ROOT}/ballistica/game/host_activity.h
|
||||
${BA_SRC_ROOT}/ballistica/game/player.cc
|
||||
${BA_SRC_ROOT}/ballistica/game/player.h
|
||||
${BA_SRC_ROOT}/ballistica/game/player_spec.cc
|
||||
${BA_SRC_ROOT}/ballistica/game/player_spec.h
|
||||
${BA_SRC_ROOT}/ballistica/game/score_to_beat.h
|
||||
${BA_SRC_ROOT}/ballistica/game/session/client_session.cc
|
||||
${BA_SRC_ROOT}/ballistica/game/session/client_session.h
|
||||
${BA_SRC_ROOT}/ballistica/game/session/host_session.cc
|
||||
@ -638,6 +635,8 @@ add_executable(ballisticacore
|
||||
${BA_SRC_ROOT}/ballistica/scene/node/time_display_node.h
|
||||
${BA_SRC_ROOT}/ballistica/scene/scene.cc
|
||||
${BA_SRC_ROOT}/ballistica/scene/scene.h
|
||||
${BA_SRC_ROOT}/ballistica/scene/scene_stream.cc
|
||||
${BA_SRC_ROOT}/ballistica/scene/scene_stream.h
|
||||
${BA_SRC_ROOT}/ballistica/ui/console.cc
|
||||
${BA_SRC_ROOT}/ballistica/ui/console.h
|
||||
${BA_SRC_ROOT}/ballistica/ui/root_ui.cc
|
||||
|
||||
@ -339,15 +339,12 @@
|
||||
<ClInclude Include="..\..\src\ballistica\game\friend_score_set.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\game.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\game.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\game_stream.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\game_stream.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\host_activity.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\host_activity.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\player.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\player.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\player_spec.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\player_spec.h" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\score_to_beat.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\session\client_session.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\session\client_session.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\session\host_session.cc" />
|
||||
@ -629,6 +626,8 @@
|
||||
<ClInclude Include="..\..\src\ballistica\scene\node\time_display_node.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\scene\scene.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\scene\scene_stream.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene_stream.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\ui\console.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\ui\console.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\ui\root_ui.cc" />
|
||||
|
||||
@ -451,12 +451,6 @@
|
||||
<ClInclude Include="..\..\src\ballistica\game\game.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\game\game_stream.cc">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\src\ballistica\game\game_stream.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\game\host_activity.cc">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClCompile>
|
||||
@ -475,9 +469,6 @@
|
||||
<ClInclude Include="..\..\src\ballistica\game\player_spec.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ballistica\game\score_to_beat.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\game\session\client_session.cc">
|
||||
<Filter>ballistica\game\session</Filter>
|
||||
</ClCompile>
|
||||
@ -1321,6 +1312,12 @@
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene.h">
|
||||
<Filter>ballistica\scene</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\scene\scene_stream.cc">
|
||||
<Filter>ballistica\scene</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene_stream.h">
|
||||
<Filter>ballistica\scene</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\ui\console.cc">
|
||||
<Filter>ballistica\ui</Filter>
|
||||
</ClCompile>
|
||||
|
||||
@ -334,15 +334,12 @@
|
||||
<ClInclude Include="..\..\src\ballistica\game\friend_score_set.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\game.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\game.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\game_stream.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\game_stream.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\host_activity.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\host_activity.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\player.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\player.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\player_spec.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\player_spec.h" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\score_to_beat.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\session\client_session.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\game\session\client_session.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\game\session\host_session.cc" />
|
||||
@ -624,6 +621,8 @@
|
||||
<ClInclude Include="..\..\src\ballistica\scene\node\time_display_node.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\scene\scene.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\scene\scene_stream.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene_stream.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\ui\console.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\ui\console.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\ui\root_ui.cc" />
|
||||
|
||||
@ -451,12 +451,6 @@
|
||||
<ClInclude Include="..\..\src\ballistica\game\game.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\game\game_stream.cc">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\src\ballistica\game\game_stream.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\game\host_activity.cc">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClCompile>
|
||||
@ -475,9 +469,6 @@
|
||||
<ClInclude Include="..\..\src\ballistica\game\player_spec.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ballistica\game\score_to_beat.h">
|
||||
<Filter>ballistica\game</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\game\session\client_session.cc">
|
||||
<Filter>ballistica\game\session</Filter>
|
||||
</ClCompile>
|
||||
@ -1321,6 +1312,12 @@
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene.h">
|
||||
<Filter>ballistica\scene</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\scene\scene_stream.cc">
|
||||
<Filter>ballistica\scene</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\src\ballistica\scene\scene_stream.h">
|
||||
<Filter>ballistica\scene</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\ui\console.cc">
|
||||
<Filter>ballistica\ui</Filter>
|
||||
</ClCompile>
|
||||
|
||||
@ -291,15 +291,6 @@ void AppFlavor::PushPurchaseAckCall(const std::string& purchase,
|
||||
[purchase, order_id] { g_platform->PurchaseAck(purchase, order_id); });
|
||||
}
|
||||
|
||||
void AppFlavor::PushGetScoresToBeatCall(const std::string& level,
|
||||
const std::string& config,
|
||||
void* py_callback) {
|
||||
thread()->PushCall([level, config, py_callback] {
|
||||
assert(InMainThread());
|
||||
g_platform->GetScoresToBeat(level, config, py_callback);
|
||||
});
|
||||
}
|
||||
|
||||
void AppFlavor::PushPurchaseCall(const std::string& item) {
|
||||
thread()->PushCall([item] {
|
||||
assert(InMainThread());
|
||||
|
||||
@ -108,9 +108,6 @@ class AppFlavor {
|
||||
const std::string& game_version, int64_t score)
|
||||
-> void;
|
||||
auto PushAchievementReportCall(const std::string& achievement) -> void;
|
||||
auto PushGetScoresToBeatCall(const std::string& level,
|
||||
const std::string& config, void* py_callback)
|
||||
-> void;
|
||||
auto PushOpenURLCall(const std::string& url) -> void;
|
||||
auto PushStringEditCall(const std::string& name, const std::string& value,
|
||||
int max_chars) -> void;
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
|
||||
#include "ballistica/assets/component/collide_model.h"
|
||||
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/python/class/python_class_collide_model.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -12,7 +12,7 @@ CollideModel::CollideModel(const std::string& name, Scene* scene)
|
||||
: AssetComponent(name, scene), dead_(false) {
|
||||
assert(InLogicThread());
|
||||
if (scene) {
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->AddCollideModel(this);
|
||||
}
|
||||
}
|
||||
@ -30,7 +30,7 @@ void CollideModel::MarkDead() {
|
||||
return;
|
||||
}
|
||||
if (Scene* s = scene()) {
|
||||
if (GameStream* os = s->GetGameStream()) {
|
||||
if (SceneStream* os = s->GetSceneStream()) {
|
||||
os->RemoveCollideModel(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
|
||||
#include "ballistica/assets/component/data.h"
|
||||
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/python/class/python_class_data.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -13,7 +13,7 @@ Data::Data(const std::string& name, Scene* scene)
|
||||
assert(InLogicThread());
|
||||
|
||||
if (scene) {
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->AddData(this);
|
||||
}
|
||||
}
|
||||
@ -31,7 +31,7 @@ void Data::MarkDead() {
|
||||
return;
|
||||
}
|
||||
if (Scene* s = scene()) {
|
||||
if (GameStream* os = s->GetGameStream()) {
|
||||
if (SceneStream* os = s->GetSceneStream()) {
|
||||
os->RemoveData(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
|
||||
#include "ballistica/assets/component/model.h"
|
||||
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/python/class/python_class_model.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -13,7 +13,7 @@ Model::Model(const std::string& name, Scene* scene)
|
||||
assert(InLogicThread());
|
||||
|
||||
if (scene) {
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->AddModel(this);
|
||||
}
|
||||
}
|
||||
@ -31,7 +31,7 @@ void Model::MarkDead() {
|
||||
return;
|
||||
}
|
||||
if (Scene* s = scene()) {
|
||||
if (GameStream* os = s->GetGameStream()) {
|
||||
if (SceneStream* os = s->GetSceneStream()) {
|
||||
os->RemoveModel(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,9 +4,9 @@
|
||||
|
||||
#include "ballistica/assets/assets.h"
|
||||
#include "ballistica/assets/data/sound_data.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/python/class/python_class_sound.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -14,7 +14,7 @@ Sound::Sound(const std::string& name, Scene* scene)
|
||||
: AssetComponent(name, scene) {
|
||||
assert(InLogicThread());
|
||||
if (scene) {
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->AddSound(this);
|
||||
}
|
||||
}
|
||||
@ -30,7 +30,7 @@ Sound::~Sound() { MarkDead(); }
|
||||
void Sound::MarkDead() {
|
||||
if (dead_) return;
|
||||
if (Scene* s = scene()) {
|
||||
if (GameStream* os = s->GetGameStream()) {
|
||||
if (SceneStream* os = s->GetSceneStream()) {
|
||||
os->RemoveSound(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
|
||||
#include "ballistica/assets/component/texture.h"
|
||||
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/graphics/renderer.h"
|
||||
#include "ballistica/python/class/python_class_texture.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -15,7 +15,7 @@ Texture::Texture(const std::string& name, Scene* scene)
|
||||
|
||||
// Add to the provided scene to get a numeric ID.
|
||||
if (scene) {
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->AddTexture(this);
|
||||
}
|
||||
}
|
||||
@ -43,7 +43,7 @@ void Texture::MarkDead() {
|
||||
return;
|
||||
}
|
||||
if (Scene* s = scene()) {
|
||||
if (GameStream* os = s->GetGameStream()) {
|
||||
if (SceneStream* os = s->GetSceneStream()) {
|
||||
os->RemoveTexture(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kAppBuildNumber = 20806;
|
||||
const int kAppBuildNumber = 20809;
|
||||
const char* kAppVersion = "1.7.7";
|
||||
|
||||
// Our standalone globals.
|
||||
|
||||
@ -131,7 +131,6 @@ class NodeAttributeConnection;
|
||||
class NodeAttributeUnbound;
|
||||
class Object;
|
||||
class ObjectComponent;
|
||||
class GameStream;
|
||||
class Part;
|
||||
class Python;
|
||||
class Platform;
|
||||
@ -163,6 +162,7 @@ class RootUI;
|
||||
class RootWidget;
|
||||
class Runnable;
|
||||
class Scene;
|
||||
class SceneStream;
|
||||
class ScoreToBeat;
|
||||
class SDLApp;
|
||||
class SDLContext;
|
||||
|
||||
@ -4,10 +4,10 @@
|
||||
|
||||
#include "ballistica/dynamics/dynamics.h"
|
||||
#include "ballistica/dynamics/material/material_context.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/session/client_session.h"
|
||||
#include "ballistica/generic/utils.h"
|
||||
#include "ballistica/graphics/graphics_server.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -17,7 +17,7 @@ auto ImpactSoundMaterialAction::GetFlattenedSize() -> size_t {
|
||||
}
|
||||
|
||||
void ImpactSoundMaterialAction::Flatten(char** buffer,
|
||||
GameStream* output_stream) {
|
||||
SceneStream* output_stream) {
|
||||
assert(sounds.size() < 100);
|
||||
auto sound_count{static_cast<uint8_t>(sounds.size())};
|
||||
Utils::EmbedInt8(buffer, sound_count);
|
||||
|
||||
@ -26,7 +26,7 @@ class ImpactSoundMaterialAction : public MaterialAction {
|
||||
const Object::Ref<MaterialAction>& p) override;
|
||||
auto GetType() const -> Type override { return Type::IMPACT_SOUND; }
|
||||
auto GetFlattenedSize() -> size_t override;
|
||||
void Flatten(char** buffer, GameStream* output_stream) override;
|
||||
void Flatten(char** buffer, SceneStream* output_stream) override;
|
||||
void Restore(const char** buffer, ClientSession* cs) override;
|
||||
|
||||
private:
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
// #include "ballistica/dynamics/material/material_action.h"
|
||||
#include "ballistica/dynamics/material/material_component.h"
|
||||
#include "ballistica/dynamics/material/material_condition_node.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/python/python_sys.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -16,7 +16,7 @@ Material::Material(std::string name_in, Scene* scene)
|
||||
// If we're being made in a scene with an output stream,
|
||||
// write ourself to it.
|
||||
assert(scene);
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->AddMaterial(this);
|
||||
}
|
||||
}
|
||||
@ -30,7 +30,7 @@ void Material::MarkDead() {
|
||||
// If we're in a scene with an output-stream, inform them of our demise.
|
||||
Scene* scene = scene_.get();
|
||||
if (scene) {
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->RemoveMaterial(this);
|
||||
}
|
||||
}
|
||||
@ -62,13 +62,13 @@ void Material::Apply(MaterialContext* s, const Part* src_part,
|
||||
|
||||
void Material::AddComponent(const Object::Ref<MaterialComponent>& c) {
|
||||
// If there's an output stream, push this to that first
|
||||
if (GameStream* output_stream = scene()->GetGameStream()) {
|
||||
if (SceneStream* output_stream = scene()->GetSceneStream()) {
|
||||
output_stream->AddMaterialComponent(this, c.get());
|
||||
}
|
||||
components_.push_back(c);
|
||||
}
|
||||
|
||||
void Material::DumpComponents(GameStream* out) {
|
||||
void Material::DumpComponents(SceneStream* out) {
|
||||
for (auto& i : components_) {
|
||||
assert(i.exists());
|
||||
out->AddMaterialComponent(this, i.get());
|
||||
|
||||
@ -30,7 +30,7 @@ class Material : public Object {
|
||||
auto BorrowPyRef() -> PyObject* { return GetPyRef(false); }
|
||||
void MarkDead();
|
||||
auto scene() const -> Scene* { return scene_.get(); }
|
||||
void DumpComponents(GameStream* out);
|
||||
void DumpComponents(SceneStream* out);
|
||||
auto stream_id() const -> int64_t { return stream_id_; }
|
||||
void set_stream_id(int64_t val) {
|
||||
assert(stream_id_ == -1);
|
||||
|
||||
@ -28,7 +28,7 @@ class MaterialAction : public Object {
|
||||
const Object::Ref<MaterialAction>& p) = 0;
|
||||
virtual void Execute(Node* node1, Node* node2, Scene* scene) {}
|
||||
virtual auto GetFlattenedSize() -> size_t { return 0; }
|
||||
virtual void Flatten(char** buffer, GameStream* output_stream) {}
|
||||
virtual void Flatten(char** buffer, SceneStream* output_stream) {}
|
||||
virtual void Restore(const char** buffer, ClientSession* cs) {}
|
||||
auto IsNeededOnClient() -> bool {
|
||||
switch (GetType()) {
|
||||
|
||||
@ -143,7 +143,7 @@ auto MaterialComponent::GetFlattenedSize() -> size_t {
|
||||
return size;
|
||||
}
|
||||
|
||||
void MaterialComponent::Flatten(char** buffer, GameStream* output_stream) {
|
||||
void MaterialComponent::Flatten(char** buffer, SceneStream* output_stream) {
|
||||
// Embed a byte telling whether we have conditions.
|
||||
Utils::EmbedInt8(buffer, conditions.exists());
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ class MaterialComponent : public Object {
|
||||
}
|
||||
|
||||
auto GetFlattenedSize() -> size_t;
|
||||
void Flatten(char** buffer, GameStream* output_stream);
|
||||
void Flatten(char** buffer, SceneStream* output_stream);
|
||||
void Restore(const char** buffer, ClientSession* cs);
|
||||
|
||||
// Actions are stored as shared pointers so references
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
#include "ballistica/dynamics/material/material_condition_node.h"
|
||||
|
||||
#include "ballistica/dynamics/material/material.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/session/client_session.h"
|
||||
#include "ballistica/generic/utils.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -22,7 +22,7 @@ auto MaterialConditionNode::GetFlattenedSize() -> size_t {
|
||||
return size;
|
||||
}
|
||||
|
||||
void MaterialConditionNode::Flatten(char** buffer, GameStream* output_stream) {
|
||||
void MaterialConditionNode::Flatten(char** buffer, SceneStream* output_stream) {
|
||||
// Pack our opmode in. Or if we're a leaf note stick zero in.
|
||||
Utils::EmbedInt8(buffer, static_cast<int8_t>(opmode));
|
||||
if (opmode == OpMode::LEAF_NODE) {
|
||||
|
||||
@ -50,7 +50,7 @@ class MaterialConditionNode : public Object {
|
||||
}
|
||||
}
|
||||
auto GetFlattenedSize() -> size_t;
|
||||
void Flatten(char** buffer, GameStream* output_stream);
|
||||
void Flatten(char** buffer, SceneStream* output_stream);
|
||||
void Restore(const char** buffer, ClientSession* cs);
|
||||
};
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ class NodeMessageMaterialAction : public MaterialAction {
|
||||
// 1 byte for bools + data
|
||||
return static_cast<int>(1 + data.GetFlattenedSize());
|
||||
}
|
||||
void Flatten(char** buffer, GameStream* output_stream) override {
|
||||
void Flatten(char** buffer, SceneStream* output_stream) override {
|
||||
Utils::EmbedBools(buffer, target_other, at_disconnect);
|
||||
data.embed(buffer);
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ auto NodeModMaterialAction::GetType() const -> MaterialAction::Type {
|
||||
|
||||
auto NodeModMaterialAction::GetFlattenedSize() -> size_t { return 1 + 4; }
|
||||
|
||||
void NodeModMaterialAction::Flatten(char** buffer, GameStream* output_stream) {
|
||||
void NodeModMaterialAction::Flatten(char** buffer, SceneStream* output_stream) {
|
||||
Utils::EmbedInt8(buffer, static_cast<int8_t>(attr));
|
||||
Utils::EmbedFloat32(buffer, attr_val);
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ class NodeModMaterialAction : public MaterialAction {
|
||||
const Object::Ref<MaterialAction>& p) override;
|
||||
auto GetType() const -> Type override;
|
||||
auto GetFlattenedSize() -> size_t override;
|
||||
void Flatten(char** buffer, GameStream* output_stream) override;
|
||||
void Flatten(char** buffer, SceneStream* output_stream) override;
|
||||
void Restore(const char** buffer, ClientSession* cs) override;
|
||||
};
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ auto PartModMaterialAction::GetType() const -> MaterialAction::Type {
|
||||
|
||||
auto PartModMaterialAction::GetFlattenedSize() -> size_t { return 1 + 4; }
|
||||
|
||||
void PartModMaterialAction::Flatten(char** buffer, GameStream* output_stream) {
|
||||
void PartModMaterialAction::Flatten(char** buffer, SceneStream* output_stream) {
|
||||
Utils::EmbedInt8(buffer, static_cast<int8_t>(attr));
|
||||
Utils::EmbedFloat32(buffer, attr_val);
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ class PartModMaterialAction : public MaterialAction {
|
||||
const Object::Ref<MaterialAction>& p) override;
|
||||
auto GetType() const -> Type override;
|
||||
auto GetFlattenedSize() -> size_t override;
|
||||
void Flatten(char** buffer, GameStream* output_stream) override;
|
||||
void Flatten(char** buffer, SceneStream* output_stream) override;
|
||||
void Restore(const char** buffer, ClientSession* cs) override;
|
||||
};
|
||||
|
||||
|
||||
@ -5,17 +5,17 @@
|
||||
#include "ballistica/assets/component/sound.h"
|
||||
#include "ballistica/dynamics/dynamics.h"
|
||||
#include "ballistica/dynamics/material/material_context.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/session/client_session.h"
|
||||
#include "ballistica/generic/utils.h"
|
||||
#include "ballistica/graphics/graphics_server.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
auto RollSoundMaterialAction::GetFlattenedSize() -> size_t { return 4 + 2 + 2; }
|
||||
|
||||
void RollSoundMaterialAction::Flatten(char** buffer,
|
||||
GameStream* output_stream) {
|
||||
SceneStream* output_stream) {
|
||||
Utils::EmbedInt32NBO(buffer, static_cast_check_fit<int32_t>(
|
||||
output_stream->GetSoundID(sound.get())));
|
||||
Utils::EmbedFloat16NBO(buffer, target_impulse);
|
||||
|
||||
@ -24,7 +24,7 @@ class RollSoundMaterialAction : public MaterialAction {
|
||||
const Object::Ref<MaterialAction>& p) override;
|
||||
auto GetType() const -> Type override { return Type::ROLL_SOUND; }
|
||||
auto GetFlattenedSize() -> size_t override;
|
||||
void Flatten(char** buffer, GameStream* output_stream) override;
|
||||
void Flatten(char** buffer, SceneStream* output_stream) override;
|
||||
void Restore(const char** buffer, ClientSession* cs) override;
|
||||
};
|
||||
|
||||
|
||||
@ -4,17 +4,17 @@
|
||||
|
||||
#include "ballistica/dynamics/dynamics.h"
|
||||
#include "ballistica/dynamics/material/material_context.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/session/client_session.h"
|
||||
#include "ballistica/generic/utils.h"
|
||||
#include "ballistica/graphics/graphics_server.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
auto SkidSoundMaterialAction::GetFlattenedSize() -> size_t { return 4 + 2 + 2; }
|
||||
|
||||
void SkidSoundMaterialAction::Flatten(char** buffer,
|
||||
GameStream* output_stream) {
|
||||
SceneStream* output_stream) {
|
||||
Utils::EmbedInt32NBO(buffer, static_cast_check_fit<int32_t>(
|
||||
output_stream->GetSoundID(sound.get())));
|
||||
Utils::EmbedFloat16NBO(buffer, target_impulse);
|
||||
|
||||
@ -24,7 +24,7 @@ class SkidSoundMaterialAction : public MaterialAction {
|
||||
const Object::Ref<MaterialAction>& p) override;
|
||||
auto GetType() const -> Type override { return Type::SKID_SOUND; }
|
||||
auto GetFlattenedSize() -> size_t override;
|
||||
void Flatten(char** buffer, GameStream* output_stream) override;
|
||||
void Flatten(char** buffer, SceneStream* output_stream) override;
|
||||
void Restore(const char** buffer, ClientSession* cs) override;
|
||||
};
|
||||
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
#include "ballistica/dynamics/material/sound_material_action.h"
|
||||
|
||||
#include "ballistica/dynamics/material/material_context.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/session/client_session.h"
|
||||
#include "ballistica/generic/utils.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -18,7 +18,7 @@ void SoundMaterialAction::Apply(MaterialContext* context, const Part* src_part,
|
||||
|
||||
auto SoundMaterialAction::GetFlattenedSize() -> size_t { return 4 + 2; }
|
||||
|
||||
void SoundMaterialAction::Flatten(char** buffer, GameStream* output_stream) {
|
||||
void SoundMaterialAction::Flatten(char** buffer, SceneStream* output_stream) {
|
||||
Utils::EmbedInt32NBO(buffer, static_cast_check_fit<int32_t>(
|
||||
output_stream->GetSoundID(sound_.get())));
|
||||
Utils::EmbedFloat16NBO(buffer, volume_);
|
||||
|
||||
@ -19,7 +19,7 @@ class SoundMaterialAction : public MaterialAction {
|
||||
const Object::Ref<MaterialAction>& p) override;
|
||||
auto GetType() const -> Type override { return Type::SOUND; }
|
||||
auto GetFlattenedSize() -> size_t override;
|
||||
void Flatten(char** buffer, GameStream* output_stream) override;
|
||||
void Flatten(char** buffer, SceneStream* output_stream) override;
|
||||
void Restore(const char** buffer, ClientSession* cs) override;
|
||||
|
||||
private:
|
||||
|
||||
@ -13,7 +13,6 @@
|
||||
#include "ballistica/game/friend_score_set.h"
|
||||
#include "ballistica/game/host_activity.h"
|
||||
#include "ballistica/game/player.h"
|
||||
#include "ballistica/game/score_to_beat.h"
|
||||
#include "ballistica/game/session/client_session.h"
|
||||
#include "ballistica/game/session/host_session.h"
|
||||
#include "ballistica/game/session/net_client_session.h"
|
||||
@ -1171,22 +1170,6 @@ void Game::GameServiceAchievementList(
|
||||
g_app_internal->DispatchRemoteAchievementList(achievements);
|
||||
}
|
||||
|
||||
void Game::PushScoresToBeatResponseCall(bool success,
|
||||
const std::list<ScoreToBeat>& scores,
|
||||
void* py_callback) {
|
||||
thread()->PushCall([this, success, scores, py_callback] {
|
||||
ScoresToBeatResponse(success, scores, py_callback);
|
||||
});
|
||||
}
|
||||
|
||||
void Game::ScoresToBeatResponse(bool success,
|
||||
const std::list<ScoreToBeat>& scores,
|
||||
void* py_callback) {
|
||||
assert(g_python);
|
||||
assert(InLogicThread());
|
||||
g_python->DispatchScoresToBeatResponse(success, scores, py_callback);
|
||||
}
|
||||
|
||||
void Game::PushPlaySoundCall(SystemSoundID sound) {
|
||||
thread()->PushCall(
|
||||
[sound] { g_audio->PlaySound(g_assets->GetSound(sound)); });
|
||||
|
||||
@ -54,9 +54,6 @@ class Game {
|
||||
|
||||
auto PushGameServiceAchievementListCall(
|
||||
const std::set<std::string>& achievements) -> void;
|
||||
auto PushScoresToBeatResponseCall(bool success,
|
||||
const std::list<ScoreToBeat>& scores,
|
||||
void* py_callback) -> void;
|
||||
auto PushToggleCollisionGeometryDisplayCall() -> void;
|
||||
auto PushToggleDebugInfoDisplayCall() -> void;
|
||||
auto PushToggleManualCameraCall() -> void;
|
||||
@ -256,8 +253,6 @@ class Game {
|
||||
float pixel_width, float pixel_height) -> void;
|
||||
auto GameServiceAchievementList(const std::set<std::string>& achievements)
|
||||
-> void;
|
||||
auto ScoresToBeatResponse(bool success, const std::list<ScoreToBeat>& scores,
|
||||
void* py_callback) -> void;
|
||||
|
||||
auto PruneMedia() -> void;
|
||||
auto Update() -> void;
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
#include "ballistica/assets/component/sound.h"
|
||||
#include "ballistica/assets/component/texture.h"
|
||||
#include "ballistica/dynamics/material/material.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/player.h"
|
||||
#include "ballistica/game/session/host_session.h"
|
||||
#include "ballistica/generic/lambda_runnable.h"
|
||||
@ -19,6 +18,7 @@
|
||||
#include "ballistica/python/python_sys.h"
|
||||
#include "ballistica/scene/node/globals_node.h"
|
||||
#include "ballistica/scene/node/node_type.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -36,7 +36,7 @@ HostActivity::HostActivity(HostSession* host_session) {
|
||||
scene_ = Object::New<Scene>(0);
|
||||
|
||||
// If there's an output stream, add to it.
|
||||
if (GameStream* out = host_session->GetGameStream()) {
|
||||
if (SceneStream* out = host_session->GetSceneStream()) {
|
||||
out->AddScene(scene_.get());
|
||||
}
|
||||
}
|
||||
@ -110,9 +110,9 @@ HostActivity::~HostActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
auto HostActivity::GetGameStream() const -> GameStream* {
|
||||
auto HostActivity::GetSceneStream() const -> SceneStream* {
|
||||
if (!host_session_.exists()) return nullptr;
|
||||
return host_session_->GetGameStream();
|
||||
return host_session_->GetSceneStream();
|
||||
}
|
||||
|
||||
auto HostActivity::SetGlobalsNode(GlobalsNode* node) -> void {
|
||||
@ -314,7 +314,7 @@ void HostActivity::SetIsForeground(bool val) {
|
||||
g_game->SetForegroundScene(sg);
|
||||
|
||||
// Also push it to clients.
|
||||
if (GameStream* out = GetGameStream()) {
|
||||
if (SceneStream* out = GetSceneStream()) {
|
||||
out->SetForegroundScene(scene_.get());
|
||||
}
|
||||
}
|
||||
@ -433,7 +433,7 @@ void HostActivity::Draw(FrameDef* frame_def) {
|
||||
scene()->Draw(frame_def);
|
||||
}
|
||||
|
||||
void HostActivity::DumpFullState(GameStream* out) {
|
||||
void HostActivity::DumpFullState(SceneStream* out) {
|
||||
// Add our scene.
|
||||
if (scene_.exists()) {
|
||||
scene_->Dump(out);
|
||||
|
||||
@ -69,8 +69,8 @@ class HostActivity : public ContextTarget {
|
||||
auto getAllowKickIdlePlayers() const -> bool {
|
||||
return allow_kick_idle_players_;
|
||||
}
|
||||
auto GetGameStream() const -> GameStream*;
|
||||
auto DumpFullState(GameStream* out) -> void;
|
||||
auto GetSceneStream() const -> SceneStream*;
|
||||
auto DumpFullState(SceneStream* out) -> void;
|
||||
auto SetGlobalsNode(GlobalsNode* node) -> void;
|
||||
auto SetIsForeground(bool val) -> void;
|
||||
auto RegisterPyActivity(PyObject* pyActivity) -> void;
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
// Released under the MIT License. See LICENSE for details.
|
||||
|
||||
#ifndef BALLISTICA_GAME_SCORE_TO_BEAT_H_
|
||||
#define BALLISTICA_GAME_SCORE_TO_BEAT_H_
|
||||
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
// Do we still need this?
|
||||
class ScoreToBeat {
|
||||
public:
|
||||
ScoreToBeat(std::string player_in, std::string type_in, std::string value_in,
|
||||
double timeIn)
|
||||
: player(std::move(player_in)),
|
||||
type(std::move(type_in)),
|
||||
value(std::move(value_in)),
|
||||
time(timeIn) {}
|
||||
std::string player;
|
||||
std::string type;
|
||||
std::string value;
|
||||
double time;
|
||||
};
|
||||
|
||||
} // namespace ballistica
|
||||
|
||||
#endif // BALLISTICA_GAME_SCORE_TO_BEAT_H_
|
||||
@ -14,13 +14,13 @@
|
||||
#include "ballistica/dynamics/material/material_component.h"
|
||||
#include "ballistica/dynamics/material/material_condition_node.h"
|
||||
#include "ballistica/dynamics/rigid_body.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/graphics/graphics.h"
|
||||
#include "ballistica/networking/networking.h"
|
||||
#include "ballistica/python/python.h"
|
||||
#include "ballistica/scene/node/node_attribute.h"
|
||||
#include "ballistica/scene/node/node_type.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -1063,7 +1063,7 @@ void ClientSession::GetCorrectionMessages(
|
||||
}
|
||||
}
|
||||
|
||||
void ClientSession::DumpFullState(GameStream* out) {
|
||||
void ClientSession::DumpFullState(SceneStream* out) {
|
||||
// Add all scenes.
|
||||
for (auto&& i : scenes()) {
|
||||
if (Scene* sg = i.get()) {
|
||||
|
||||
@ -86,7 +86,7 @@ class ClientSession : public Session {
|
||||
virtual auto FetchMessages() -> void {}
|
||||
virtual void Error(const std::string& description);
|
||||
void End();
|
||||
void DumpFullState(GameStream* out) override;
|
||||
void DumpFullState(SceneStream* out) override;
|
||||
|
||||
/// Reset target base time to equal current. This can be used during command
|
||||
/// buffer underruns to cause playback to pause momentarily instead of
|
||||
|
||||
@ -6,7 +6,6 @@
|
||||
#include "ballistica/assets/component/model.h"
|
||||
#include "ballistica/assets/component/sound.h"
|
||||
#include "ballistica/assets/component/texture.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/host_activity.h"
|
||||
#include "ballistica/game/player.h"
|
||||
#include "ballistica/generic/lambda_runnable.h"
|
||||
@ -17,6 +16,7 @@
|
||||
#include "ballistica/python/python_command.h"
|
||||
#include "ballistica/python/python_context_call.h"
|
||||
#include "ballistica/python/python_sys.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -51,7 +51,7 @@ HostSession::HostSession(PyObject* session_type_obj)
|
||||
do_replay = false;
|
||||
}
|
||||
|
||||
output_stream_ = Object::New<GameStream>(this, do_replay);
|
||||
output_stream_ = Object::New<SceneStream>(this, do_replay);
|
||||
|
||||
// Make a scene for our session-level nodes, etc.
|
||||
scene_ = Object::New<Scene>(0);
|
||||
@ -499,7 +499,7 @@ void HostSession::Update(int time_advance) {
|
||||
|
||||
ProcessPlayerTimeOuts();
|
||||
|
||||
GameStream* output_stream = GetGameStream();
|
||||
SceneStream* output_stream = GetSceneStream();
|
||||
|
||||
// Advance base time by the specified amount,
|
||||
// firing all timers along the way.
|
||||
@ -656,7 +656,7 @@ auto HostSession::GetUnusedPlayerName(Player* p, const std::string& base_name)
|
||||
return name_test;
|
||||
}
|
||||
|
||||
void HostSession::DumpFullState(GameStream* out) {
|
||||
void HostSession::DumpFullState(SceneStream* out) {
|
||||
// Add session-scene.
|
||||
if (scene_.exists()) {
|
||||
scene_->Dump(out);
|
||||
|
||||
@ -64,11 +64,11 @@ class HostSession : public Session {
|
||||
return scene_.get();
|
||||
}
|
||||
void RegisterCall(PythonContextCall* call);
|
||||
auto GetGameStream() const -> GameStream* { return output_stream_.get(); }
|
||||
auto GetSceneStream() const -> SceneStream* { return output_stream_.get(); }
|
||||
auto is_main_menu() const -> bool {
|
||||
return is_main_menu_;
|
||||
} // fixme remove this
|
||||
void DumpFullState(GameStream* out) override;
|
||||
void DumpFullState(SceneStream* out) override;
|
||||
void GetCorrectionMessages(bool blend,
|
||||
std::vector<std::vector<uint8_t> >* messages);
|
||||
auto base_time() const -> millisecs_t { return base_time_; }
|
||||
@ -98,7 +98,7 @@ class HostSession : public Session {
|
||||
void IssuePlayerLeft(Player* player);
|
||||
|
||||
bool is_main_menu_; // FIXME: Remove this.
|
||||
Object::Ref<GameStream> output_stream_;
|
||||
Object::Ref<SceneStream> output_stream_;
|
||||
Timer* step_scene_timer_;
|
||||
millisecs_t base_time_ = 0;
|
||||
TimerList sim_timers_;
|
||||
|
||||
@ -5,13 +5,13 @@
|
||||
#include "ballistica/dynamics/material/material.h"
|
||||
#include "ballistica/game/connection/connection_set.h"
|
||||
#include "ballistica/game/connection/connection_to_client.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/generic/huffman.h"
|
||||
#include "ballistica/generic/utils.h"
|
||||
#include "ballistica/math/vector3f.h"
|
||||
#include "ballistica/networking/networking.h"
|
||||
#include "ballistica/platform/platform.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -67,7 +67,7 @@ void ReplayClientSession::OnClientConnected(ConnectionToClient* c) {
|
||||
// we create a temporary output stream just for the purpose of building
|
||||
// a giant session-commands message that we can send to the client
|
||||
// to build its state up to where we are currently.
|
||||
GameStream out(nullptr, false);
|
||||
SceneStream out(nullptr, false);
|
||||
|
||||
// go ahead and dump our full state..
|
||||
DumpFullState(&out);
|
||||
|
||||
@ -30,7 +30,7 @@ void Session::GraphicsQualityChanged(GraphicsQuality q) {}
|
||||
|
||||
void Session::DebugSpeedMultChanged() {}
|
||||
|
||||
void Session::DumpFullState(GameStream* out) {
|
||||
void Session::DumpFullState(SceneStream* out) {
|
||||
Log("Session::DumpFullState() being called; shouldn't happen.");
|
||||
}
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ class Session : public ContextTarget {
|
||||
virtual void DebugSpeedMultChanged();
|
||||
auto benchmark_type() const -> BenchmarkType { return benchmark_type_; }
|
||||
void set_benchmark_type(BenchmarkType val) { benchmark_type_ = val; }
|
||||
virtual void DumpFullState(GameStream* s);
|
||||
virtual void DumpFullState(SceneStream* s);
|
||||
|
||||
private:
|
||||
BenchmarkType benchmark_type_ = BenchmarkType::kNone;
|
||||
|
||||
@ -57,8 +57,6 @@ class PlatformApple : public Platform {
|
||||
auto IsOSPlayingMusic() -> bool override;
|
||||
auto SetHardwareCursorVisible(bool visible) -> void override;
|
||||
auto QuitApp() -> void override;
|
||||
auto GetScoresToBeat(const std::string& level, const std::string& config,
|
||||
void* py_callback) -> void override;
|
||||
auto OpenFileExternally(const std::string& path) -> void override;
|
||||
auto OpenDirExternally(const std::string& path) -> void override;
|
||||
auto MacMusicAppInit() -> void override;
|
||||
|
||||
@ -24,7 +24,6 @@
|
||||
#include "ballistica/dynamics/bg/bg_dynamics_server.h"
|
||||
#include "ballistica/game/friend_score_set.h"
|
||||
#include "ballistica/game/game.h"
|
||||
#include "ballistica/game/score_to_beat.h"
|
||||
#include "ballistica/generic/utils.h"
|
||||
#include "ballistica/graphics/camera.h"
|
||||
#include "ballistica/graphics/graphics.h"
|
||||
@ -1093,39 +1092,36 @@ void Platform::SetHardwareCursorVisible(bool visible) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void Platform::QuitApp() { exit(g_app->return_value); }
|
||||
auto Platform::QuitApp() -> void { exit(g_app->return_value); }
|
||||
|
||||
void Platform::GetScoresToBeat(const std::string& level,
|
||||
const std::string& config, void* py_callback) {
|
||||
// By default, return nothing.
|
||||
g_game->PushScoresToBeatResponseCall(false, std::list<ScoreToBeat>(),
|
||||
py_callback);
|
||||
}
|
||||
|
||||
void Platform::OpenFileExternally(const std::string& path) {
|
||||
auto Platform::OpenFileExternally(const std::string& path) -> void {
|
||||
Log("OpenFileExternally() unimplemented");
|
||||
}
|
||||
|
||||
void Platform::OpenDirExternally(const std::string& path) {
|
||||
auto Platform::OpenDirExternally(const std::string& path) -> void {
|
||||
Log("OpenDirExternally() unimplemented");
|
||||
}
|
||||
|
||||
void Platform::MacMusicAppInit() { Log("MacMusicAppInit() unimplemented"); }
|
||||
auto Platform::MacMusicAppInit() -> void {
|
||||
Log("MacMusicAppInit() unimplemented");
|
||||
}
|
||||
|
||||
auto Platform::MacMusicAppGetVolume() -> int {
|
||||
Log("MacMusicAppGetVolume() unimplemented");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Platform::MacMusicAppSetVolume(int volume) {
|
||||
auto Platform::MacMusicAppSetVolume(int volume) -> void {
|
||||
Log("MacMusicAppSetVolume() unimplemented");
|
||||
}
|
||||
|
||||
void Platform::MacMusicAppGetLibrarySource() {
|
||||
auto Platform::MacMusicAppGetLibrarySource() -> void {
|
||||
Log("MacMusicAppGetLibrarySource() unimplemented");
|
||||
}
|
||||
|
||||
void Platform::MacMusicAppStop() { Log("MacMusicAppStop() unimplemented"); }
|
||||
auto Platform::MacMusicAppStop() -> void {
|
||||
Log("MacMusicAppStop() unimplemented");
|
||||
}
|
||||
|
||||
auto Platform::MacMusicAppPlayPlaylist(const std::string& playlist) -> bool {
|
||||
Log("MacMusicAppPlayPlaylist() unimplemented");
|
||||
@ -1136,7 +1132,7 @@ auto Platform::MacMusicAppGetPlaylists() -> std::list<std::string> {
|
||||
return {};
|
||||
}
|
||||
|
||||
void Platform::SetCurrentThreadName(const std::string& name) {
|
||||
auto Platform::SetCurrentThreadName(const std::string& name) -> void {
|
||||
// Currently we leave the main thread alone, otherwise we show up as
|
||||
// "BallisticaMainThread" under "top" on linux (should check other platforms).
|
||||
if (InMainThread()) {
|
||||
@ -1149,7 +1145,7 @@ void Platform::SetCurrentThreadName(const std::string& name) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void Platform::Unlink(const char* path) {
|
||||
auto Platform::Unlink(const char* path) -> void {
|
||||
// This default implementation covers non-windows platforms.
|
||||
#if BA_OSTYPE_WINDOWS
|
||||
throw Exception();
|
||||
@ -1186,7 +1182,7 @@ auto Platform::IsEventPushMode() -> bool { return false; }
|
||||
|
||||
auto Platform::GetDisplayResolution(int* x, int* y) -> bool { return false; }
|
||||
|
||||
void Platform::CloseSocket(int socket) {
|
||||
auto Platform::CloseSocket(int socket) -> void {
|
||||
// This default implementation covers non-windows platforms.
|
||||
#if BA_OSTYPE_WINDOWS
|
||||
throw Exception();
|
||||
|
||||
@ -491,11 +491,6 @@ class Platform {
|
||||
/// Quit the app (can be immediate or via posting some high level event).
|
||||
virtual auto QuitApp() -> void;
|
||||
|
||||
// Note to self: do we want to deprecate this?...
|
||||
virtual auto GetScoresToBeat(const std::string& level,
|
||||
const std::string& config, void* py_callback)
|
||||
-> void;
|
||||
|
||||
/// Open a file using the system default method (in another app, etc.)
|
||||
virtual auto OpenFileExternally(const std::string& path) -> void;
|
||||
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
#include <list>
|
||||
|
||||
#include "ballistica/core/thread.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/python/python.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -277,7 +277,7 @@ auto PythonClassNode::HandleMessage(PythonClassNode* self, PyObject* args)
|
||||
if (user_message_obj) {
|
||||
node->DispatchUserMessage(user_message_obj, "Node User-Message dispatch");
|
||||
} else {
|
||||
if (GameStream* output_stream = node->scene()->GetGameStream()) {
|
||||
if (SceneStream* output_stream = node->scene()->GetSceneStream()) {
|
||||
output_stream->NodeMessage(node, b.data(), b.size());
|
||||
}
|
||||
node->DispatchNodeMessage(b.data());
|
||||
@ -335,7 +335,7 @@ auto PythonClassNode::ConnectAttr(PythonClassNode* self, PyObject* args)
|
||||
dst_node->type()->GetAttribute(std::string(dst_attr_name));
|
||||
|
||||
// Push to output_stream first to catch scene mismatch errors.
|
||||
if (GameStream* output_stream = node->scene()->GetGameStream()) {
|
||||
if (SceneStream* output_stream = node->scene()->GetSceneStream()) {
|
||||
output_stream->ConnectNodeAttribute(node, src_attr, dst_node, dst_attr);
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
#include "ballistica/assets/component/texture.h"
|
||||
#include "ballistica/core/logging.h"
|
||||
#include "ballistica/game/connection/connection_set.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/host_activity.h"
|
||||
#include "ballistica/game/session/host_session.h"
|
||||
#include "ballistica/game/session/replay_client_session.h"
|
||||
@ -17,6 +16,7 @@
|
||||
#include "ballistica/python/python.h"
|
||||
#include "ballistica/python/python_context_call_runnable.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
#include "ballistica/ui/ui.h"
|
||||
|
||||
namespace ballistica {
|
||||
@ -499,8 +499,8 @@ auto PyScreenMessage(PyObject* self, PyObject* args, PyObject* keywds)
|
||||
PyExcType::kValue);
|
||||
}
|
||||
Scene* context_scene = Context::current().GetMutableScene();
|
||||
GameStream* output_stream =
|
||||
context_scene ? context_scene->GetGameStream() : nullptr;
|
||||
SceneStream* output_stream =
|
||||
context_scene ? context_scene->GetSceneStream() : nullptr;
|
||||
|
||||
Texture* texture = nullptr;
|
||||
Texture* tint_texture = nullptr;
|
||||
|
||||
@ -12,7 +12,6 @@
|
||||
#include "ballistica/dynamics/material/material_action.h"
|
||||
#include "ballistica/game/connection/connection_set.h"
|
||||
#include "ballistica/game/connection/connection_to_client.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/host_activity.h"
|
||||
#include "ballistica/generic/json.h"
|
||||
#include "ballistica/graphics/graphics.h"
|
||||
@ -25,6 +24,7 @@
|
||||
#include "ballistica/scene/node/node.h"
|
||||
#include "ballistica/scene/node/node_type.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -341,7 +341,7 @@ auto PyEmitFx(PyObject* self, PyObject* args, PyObject* keywds) -> PyObject* {
|
||||
e.spread = spread;
|
||||
e.chunk_type = chunk_type;
|
||||
e.tendril_type = tendril_type;
|
||||
if (GameStream* output_stream = scene->GetGameStream()) {
|
||||
if (SceneStream* output_stream = scene->GetSceneStream()) {
|
||||
output_stream->EmitBGDynamics(e);
|
||||
}
|
||||
#if !BA_HEADLESS_BUILD
|
||||
@ -489,27 +489,6 @@ auto PyGetGameRoster(PyObject* self, PyObject* args, PyObject* keywds)
|
||||
BA_PYTHON_CATCH;
|
||||
}
|
||||
|
||||
auto PyGetScoresToBeat(PyObject* self, PyObject* args, PyObject* keywds)
|
||||
-> PyObject* {
|
||||
BA_PYTHON_TRY;
|
||||
const char* level;
|
||||
const char* config;
|
||||
PyObject* callback_obj = Py_None;
|
||||
static const char* kwlist[] = {"level", "config", "callback", nullptr};
|
||||
if (!PyArg_ParseTupleAndKeywords(args, keywds, "ssO",
|
||||
const_cast<char**>(kwlist), &level, &config,
|
||||
&callback_obj)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Allocate a Call object for this and pass its pointer to the main thread;
|
||||
// we'll ref/de-ref it when it comes back.
|
||||
auto* call = Object::NewDeferred<PythonContextCall>(callback_obj);
|
||||
g_app_flavor->PushGetScoresToBeatCall(level, config, call);
|
||||
Py_RETURN_NONE;
|
||||
BA_PYTHON_CATCH;
|
||||
}
|
||||
|
||||
auto PySetDebugSpeedExponent(PyObject* self, PyObject* args) -> PyObject* {
|
||||
BA_PYTHON_TRY;
|
||||
int speed;
|
||||
@ -627,13 +606,6 @@ auto PythonMethodsGameplay::GetMethods() -> std::vector<PyMethodDef> {
|
||||
"Sets the debug speed scale for the game. Actual speed is "
|
||||
"pow(2,speed)."},
|
||||
|
||||
{"get_scores_to_beat", (PyCFunction)PyGetScoresToBeat,
|
||||
METH_VARARGS | METH_KEYWORDS,
|
||||
"get_scores_to_beat(level: str, config: str, callback: Callable) -> "
|
||||
"None\n"
|
||||
"\n"
|
||||
"(internal)"},
|
||||
|
||||
{"get_game_roster", (PyCFunction)PyGetGameRoster,
|
||||
METH_VARARGS | METH_KEYWORDS,
|
||||
"get_game_roster() -> list[dict[str, Any]]\n"
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
#include "ballistica/app/app_flavor.h"
|
||||
#include "ballistica/assets/assets.h"
|
||||
#include "ballistica/assets/component/texture.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/host_activity.h"
|
||||
#include "ballistica/game/session/host_session.h"
|
||||
#include "ballistica/game/session/replay_client_session.h"
|
||||
@ -21,6 +20,7 @@
|
||||
#include "ballistica/python/python_context_call_runnable.h"
|
||||
#include "ballistica/python/python_sys.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
|
||||
@ -11,10 +11,8 @@
|
||||
#include "ballistica/core/thread.h"
|
||||
#include "ballistica/dynamics/material/material.h"
|
||||
#include "ballistica/game/friend_score_set.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/host_activity.h"
|
||||
#include "ballistica/game/player.h"
|
||||
#include "ballistica/game/score_to_beat.h"
|
||||
#include "ballistica/game/v1_account.h"
|
||||
#include "ballistica/graphics/graphics.h"
|
||||
#include "ballistica/input/device/joystick.h"
|
||||
@ -47,6 +45,7 @@
|
||||
#include "ballistica/python/python_command.h"
|
||||
#include "ballistica/python/python_context_call_runnable.h"
|
||||
#include "ballistica/scene/node/node_attribute.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
#include "ballistica/ui/ui.h"
|
||||
#include "ballistica/ui/widget/text_widget.h"
|
||||
|
||||
@ -1275,33 +1274,6 @@ void Python::HandleLocalChatMessage(const std::string& message) {
|
||||
obj(ObjID::kHandleLocalChatMessageCall).Call(args);
|
||||
}
|
||||
|
||||
void Python::DispatchScoresToBeatResponse(
|
||||
bool success, const std::list<ScoreToBeat>& scores_to_beat,
|
||||
void* callback_in) {
|
||||
// callback_in was a newly allocated PythonContextCall.
|
||||
// This will make it ref-counted so it'll die when we're done with it
|
||||
auto callback(
|
||||
Object::MakeRefCounted(static_cast<PythonContextCall*>(callback_in)));
|
||||
|
||||
// Empty type denotes error.
|
||||
if (!success) {
|
||||
PythonRef args(Py_BuildValue("(O)", Py_None), PythonRef::kSteal);
|
||||
callback->Run(args);
|
||||
} else {
|
||||
PyObject* py_list = PyList_New(0);
|
||||
for (const auto& i : scores_to_beat) {
|
||||
PyObject* val = Py_BuildValue("{sssssssd}", "player", i.player.c_str(),
|
||||
"type", i.type.c_str(), "value",
|
||||
i.value.c_str(), "time", i.time);
|
||||
PyList_Append(py_list, val);
|
||||
Py_DECREF(val);
|
||||
}
|
||||
PythonRef args(Py_BuildValue("(O)", py_list), PythonRef::kSteal);
|
||||
Py_DECREF(py_list);
|
||||
callback->Run(args);
|
||||
}
|
||||
}
|
||||
|
||||
// Put together a node message with all args on the provided tuple (starting
|
||||
// with arg_offset) returns false on failure, true on success.
|
||||
void Python::DoBuildNodeMessage(PyObject* args, int arg_offset, Buffer<char>* b,
|
||||
@ -1506,7 +1478,7 @@ auto Python::GetPythonFileLocation(bool pretty) -> std::string {
|
||||
void Python::SetNodeAttr(Node* node, const char* attr_name,
|
||||
PyObject* value_obj) {
|
||||
assert(node);
|
||||
GameStream* out_stream = node->scene()->GetGameStream();
|
||||
SceneStream* out_stream = node->scene()->GetSceneStream();
|
||||
NodeAttribute attr = node->GetAttribute(attr_name);
|
||||
switch (attr.type()) {
|
||||
case NodeAttributeType::kFloat: {
|
||||
@ -1820,7 +1792,7 @@ auto Python::DoNewNode(PyObject* args, PyObject* keywds) -> Node* {
|
||||
// do.
|
||||
try {
|
||||
// Tell clients to do the same.
|
||||
if (GameStream* output_stream = scene->GetGameStream()) {
|
||||
if (SceneStream* output_stream = scene->GetSceneStream()) {
|
||||
output_stream->NodeOnCreate(node);
|
||||
}
|
||||
node->OnCreate();
|
||||
|
||||
@ -127,10 +127,6 @@ class Python {
|
||||
/// Pass a chat message along to the python UI layer for handling..
|
||||
auto HandleLocalChatMessage(const std::string& message) -> void;
|
||||
|
||||
auto DispatchScoresToBeatResponse(
|
||||
bool success, const std::list<ScoreToBeat>& scores_to_beat,
|
||||
void* PyCallback) -> void;
|
||||
|
||||
/// Pop up an in-game window to show a url (NOT in a browser).
|
||||
auto ShowURL(const std::string& url) -> void;
|
||||
|
||||
|
||||
@ -3,11 +3,11 @@
|
||||
#ifndef BALLISTICA_PYTHON_PYTHON_SYS_H_
|
||||
#define BALLISTICA_PYTHON_PYTHON_SYS_H_
|
||||
|
||||
// Any code that actually runs any python logic should include this.
|
||||
// This header pulls in the actual python includes and also defines some handy
|
||||
// macros and functions for working with python objects.
|
||||
// Any code that actually runs any Python logic should include this.
|
||||
// This header pulls in the actual Python includes and also defines some handy
|
||||
// macros and functions for working with Python objects.
|
||||
|
||||
// This is the ONE place we actually include python.
|
||||
// This is the ONE place we actually include Python.
|
||||
#include <Python.h>
|
||||
#include <frameobject.h>
|
||||
#include <weakrefobject.h>
|
||||
|
||||
@ -3,13 +3,13 @@
|
||||
#include "ballistica/scene/node/node.h"
|
||||
|
||||
#include "ballistica/dynamics/part.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/python/class/python_class_node.h"
|
||||
#include "ballistica/python/python.h"
|
||||
#include "ballistica/python/python_context_call.h"
|
||||
#include "ballistica/scene/node/node_attribute.h"
|
||||
#include "ballistica/scene/node/node_attribute_connection.h"
|
||||
#include "ballistica/scene/scene.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -30,7 +30,7 @@ void Node::AddToScene(Scene* scene) {
|
||||
// id_ = scene->next_node_id_++;
|
||||
// our_iterator_ =
|
||||
// scene->nodes_.insert(scene->nodes_.end(), Object::Ref<Node>(this));
|
||||
if (GameStream* os = scene->GetGameStream()) {
|
||||
if (SceneStream* os = scene->GetSceneStream()) {
|
||||
os->AddNode(this);
|
||||
}
|
||||
}
|
||||
@ -71,7 +71,7 @@ Node::~Node() {
|
||||
|
||||
// If we were going to an output stream, inform them of our demise.
|
||||
assert(scene());
|
||||
if (GameStream* output_stream = scene()->GetGameStream()) {
|
||||
if (SceneStream* output_stream = scene()->GetSceneStream()) {
|
||||
output_stream->RemoveNode(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
#include "ballistica/dynamics/bg/bg_dynamics.h"
|
||||
#include "ballistica/dynamics/dynamics.h"
|
||||
#include "ballistica/dynamics/part.h"
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/game/player.h"
|
||||
#include "ballistica/graphics/camera.h"
|
||||
#include "ballistica/graphics/graphics.h"
|
||||
@ -39,6 +38,7 @@
|
||||
#include "ballistica/scene/node/text_node.h"
|
||||
#include "ballistica/scene/node/texture_sequence_node.h"
|
||||
#include "ballistica/scene/node/time_display_node.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
@ -106,7 +106,7 @@ void Scene::SetupNodeMessageType(const std::string& name, NodeMessageType val,
|
||||
g_app->node_message_formats[static_cast<size_t>(val)] = format;
|
||||
}
|
||||
|
||||
auto Scene::GetGameStream() const -> GameStream* {
|
||||
auto Scene::GetSceneStream() const -> SceneStream* {
|
||||
return output_stream_.get();
|
||||
}
|
||||
|
||||
@ -372,7 +372,7 @@ auto Scene::NewNode(const std::string& type_string, const std::string& name,
|
||||
return node.get(); // NOLINT
|
||||
}
|
||||
|
||||
void Scene::Dump(GameStream* stream) {
|
||||
void Scene::Dump(SceneStream* stream) {
|
||||
assert(InLogicThread());
|
||||
stream->AddScene(this);
|
||||
|
||||
@ -382,7 +382,7 @@ void Scene::Dump(GameStream* stream) {
|
||||
}
|
||||
}
|
||||
|
||||
void Scene::DumpNodes(GameStream* out) {
|
||||
void Scene::DumpNodes(SceneStream* out) {
|
||||
// Dumps commands to the output stream to recreate scene's nodes
|
||||
// in their current state.
|
||||
|
||||
@ -623,7 +623,7 @@ auto Scene::GetCorrectionMessage(bool blended) -> std::vector<uint8_t> {
|
||||
return message;
|
||||
}
|
||||
|
||||
void Scene::SetOutputStream(GameStream* val) { output_stream_ = val; }
|
||||
void Scene::SetOutputStream(SceneStream* val) { output_stream_ = val; }
|
||||
|
||||
auto Scene::AddNode(Node* node, int64_t* node_id, NodeList::iterator* i)
|
||||
-> void {
|
||||
|
||||
@ -53,7 +53,7 @@ class Scene : public Object {
|
||||
auto DeleteNode(Node* node) -> void;
|
||||
auto shutting_down() const -> bool { return shutting_down_; }
|
||||
auto set_shutting_down(bool val) -> void { shutting_down_ = val; }
|
||||
auto GetGameStream() const -> GameStream*;
|
||||
auto GetSceneStream() const -> SceneStream*;
|
||||
auto SetPlayerNode(int id, PlayerNode* n) -> void;
|
||||
auto GetPlayerNode(int id) -> PlayerNode*;
|
||||
auto use_fixed_vr_overlay() const -> bool { return use_fixed_vr_overlay_; }
|
||||
@ -63,11 +63,11 @@ class Scene : public Object {
|
||||
auto increment_bg_cover_count() -> void { bg_cover_count_++; }
|
||||
auto decrement_bg_cover_count() -> void { bg_cover_count_--; }
|
||||
auto has_bg_cover() const -> bool { return (bg_cover_count_ > 0); }
|
||||
auto Dump(GameStream* out) -> void;
|
||||
auto DumpNodes(GameStream* out) -> void;
|
||||
auto Dump(SceneStream* out) -> void;
|
||||
auto DumpNodes(SceneStream* out) -> void;
|
||||
auto GetCorrectionMessage(bool blended) -> std::vector<uint8_t>;
|
||||
|
||||
auto SetOutputStream(GameStream* val) -> void;
|
||||
auto SetOutputStream(SceneStream* val) -> void;
|
||||
auto stream_id() const -> int64_t { return stream_id_; }
|
||||
auto set_stream_id(int64_t val) -> void {
|
||||
assert(stream_id_ == -1);
|
||||
@ -91,7 +91,7 @@ class Scene : public Object {
|
||||
GlobalsNode* globals_node_{}; // Current globals node (if any).
|
||||
std::unordered_map<int, Object::WeakRef<PlayerNode> > player_nodes_;
|
||||
int64_t stream_id_{-1};
|
||||
Object::WeakRef<GameStream> output_stream_;
|
||||
Object::WeakRef<SceneStream> output_stream_;
|
||||
bool use_fixed_vr_overlay_{};
|
||||
Context context_; // Context we were made in.
|
||||
millisecs_t time_{};
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
// Released under the MIT License. See LICENSE for details.
|
||||
|
||||
#include "ballistica/game/game_stream.h"
|
||||
#include "ballistica/scene/scene_stream.h"
|
||||
|
||||
#include "ballistica/app/app.h"
|
||||
#include "ballistica/assets/assets_server.h"
|
||||
@ -25,7 +25,7 @@
|
||||
|
||||
namespace ballistica {
|
||||
|
||||
GameStream::GameStream(HostSession* host_session, bool save_replay)
|
||||
SceneStream::SceneStream(HostSession* host_session, bool save_replay)
|
||||
: time_(0),
|
||||
host_session_(host_session),
|
||||
next_flush_time_(0),
|
||||
@ -50,7 +50,7 @@ GameStream::GameStream(HostSession* host_session, bool save_replay)
|
||||
}
|
||||
}
|
||||
|
||||
GameStream::~GameStream() {
|
||||
SceneStream::~SceneStream() {
|
||||
// Ship our last commands (if it matters..)
|
||||
Flush();
|
||||
|
||||
@ -117,17 +117,17 @@ GameStream::~GameStream() {
|
||||
}
|
||||
|
||||
// Pull the current built-up message.
|
||||
auto GameStream::GetOutMessage() const -> std::vector<uint8_t> {
|
||||
auto SceneStream::GetOutMessage() const -> std::vector<uint8_t> {
|
||||
assert(!host_session_); // this should only be getting used for
|
||||
// standalone temp ones..
|
||||
if (!out_command_.empty()) {
|
||||
Log("Error: GameStream shutting down with non-empty outCommand");
|
||||
Log("Error: SceneStream shutting down with non-empty outCommand");
|
||||
}
|
||||
return out_message_;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
auto GameStream::GetPointerCount(const std::vector<T*>& vec) -> size_t {
|
||||
auto SceneStream::GetPointerCount(const std::vector<T*>& vec) -> size_t {
|
||||
size_t count = 0;
|
||||
|
||||
auto size = vec.size();
|
||||
@ -143,8 +143,8 @@ auto GameStream::GetPointerCount(const std::vector<T*>& vec) -> size_t {
|
||||
// Given a vector of pointers, return an index to an available (nullptr) entry,
|
||||
// expanding the vector if need be.
|
||||
template <typename T>
|
||||
auto GameStream::GetFreeIndex(std::vector<T*>* vec,
|
||||
std::vector<size_t>* free_indices) -> size_t {
|
||||
auto SceneStream::GetFreeIndex(std::vector<T*>* vec,
|
||||
std::vector<size_t>* free_indices) -> size_t {
|
||||
// If we have any free indices, use one of them.
|
||||
if (!free_indices->empty()) {
|
||||
size_t val = free_indices->back();
|
||||
@ -159,8 +159,8 @@ auto GameStream::GetFreeIndex(std::vector<T*>* vec,
|
||||
|
||||
// Add an entry.
|
||||
template <typename T>
|
||||
void GameStream::Add(T* val, std::vector<T*>* vec,
|
||||
std::vector<size_t>* free_indices) {
|
||||
void SceneStream::Add(T* val, std::vector<T*>* vec,
|
||||
std::vector<size_t>* free_indices) {
|
||||
// This should only get used when we're being driven by the host-session.
|
||||
assert(host_session_);
|
||||
assert(val);
|
||||
@ -172,8 +172,8 @@ void GameStream::Add(T* val, std::vector<T*>* vec,
|
||||
|
||||
// Remove an entry.
|
||||
template <typename T>
|
||||
void GameStream::Remove(T* val, std::vector<T*>* vec,
|
||||
std::vector<size_t>* free_indices) {
|
||||
void SceneStream::Remove(T* val, std::vector<T*>* vec,
|
||||
std::vector<size_t>* free_indices) {
|
||||
assert(val);
|
||||
assert(val->stream_id() >= 0);
|
||||
assert(static_cast<int>(vec->size()) > val->stream_id());
|
||||
@ -185,7 +185,7 @@ void GameStream::Remove(T* val, std::vector<T*>* vec,
|
||||
val->clear_stream_id();
|
||||
}
|
||||
|
||||
void GameStream::Fail() {
|
||||
void SceneStream::Fail() {
|
||||
Log("Error writing replay file");
|
||||
if (writing_replay_) {
|
||||
// Sanity check: We should only ever be writing one replay at once.
|
||||
@ -199,9 +199,9 @@ void GameStream::Fail() {
|
||||
}
|
||||
}
|
||||
|
||||
void GameStream::Flush() {
|
||||
void SceneStream::Flush() {
|
||||
if (!out_command_.empty())
|
||||
Log("Error: GameStream flushing down with non-empty outCommand");
|
||||
Log("Error: SceneStream flushing down with non-empty outCommand");
|
||||
if (!out_message_.empty()) {
|
||||
ShipSessionCommandsMessage();
|
||||
}
|
||||
@ -211,7 +211,7 @@ void GameStream::Flush() {
|
||||
#pragma ide diagnostic ignored "ConstantParameter"
|
||||
|
||||
// Writes just a command.
|
||||
void GameStream::WriteCommand(SessionCommand cmd) {
|
||||
void SceneStream::WriteCommand(SessionCommand cmd) {
|
||||
assert(out_command_.empty());
|
||||
|
||||
// For now just use full size values.
|
||||
@ -224,7 +224,7 @@ void GameStream::WriteCommand(SessionCommand cmd) {
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
// Writes a command plus an int to the stream, using whatever size is optimal.
|
||||
void GameStream::WriteCommandInt32(SessionCommand cmd, int32_t value) {
|
||||
void SceneStream::WriteCommandInt32(SessionCommand cmd, int32_t value) {
|
||||
assert(out_command_.empty());
|
||||
|
||||
// For now just use full size values.
|
||||
@ -236,8 +236,8 @@ void GameStream::WriteCommandInt32(SessionCommand cmd, int32_t value) {
|
||||
memcpy(ptr, vals, 4);
|
||||
}
|
||||
|
||||
void GameStream::WriteCommandInt32_2(SessionCommand cmd, int32_t value1,
|
||||
int32_t value2) {
|
||||
void SceneStream::WriteCommandInt32_2(SessionCommand cmd, int32_t value1,
|
||||
int32_t value2) {
|
||||
assert(out_command_.empty());
|
||||
|
||||
// For now just use full size vals.
|
||||
@ -249,8 +249,8 @@ void GameStream::WriteCommandInt32_2(SessionCommand cmd, int32_t value1,
|
||||
memcpy(ptr, vals, 8);
|
||||
}
|
||||
|
||||
void GameStream::WriteCommandInt32_3(SessionCommand cmd, int32_t value1,
|
||||
int32_t value2, int32_t value3) {
|
||||
void SceneStream::WriteCommandInt32_3(SessionCommand cmd, int32_t value1,
|
||||
int32_t value2, int32_t value3) {
|
||||
assert(out_command_.empty());
|
||||
|
||||
// For now just use full size vals.
|
||||
@ -262,9 +262,9 @@ void GameStream::WriteCommandInt32_3(SessionCommand cmd, int32_t value1,
|
||||
memcpy(ptr, vals, 12);
|
||||
}
|
||||
|
||||
void GameStream::WriteCommandInt32_4(SessionCommand cmd, int32_t value1,
|
||||
int32_t value2, int32_t value3,
|
||||
int32_t value4) {
|
||||
void SceneStream::WriteCommandInt32_4(SessionCommand cmd, int32_t value1,
|
||||
int32_t value2, int32_t value3,
|
||||
int32_t value4) {
|
||||
assert(out_command_.empty());
|
||||
|
||||
// For now just use full size vals.
|
||||
@ -280,33 +280,33 @@ void GameStream::WriteCommandInt32_4(SessionCommand cmd, int32_t value1,
|
||||
// adding these placeholders for if/when we do.
|
||||
// They will also catch values greater than 32 bits in debug mode.
|
||||
// We'll need a protocol update to add support for 64 bit over the wire.
|
||||
void GameStream::WriteCommandInt64(SessionCommand cmd, int64_t value) {
|
||||
void SceneStream::WriteCommandInt64(SessionCommand cmd, int64_t value) {
|
||||
WriteCommandInt32(cmd, static_cast_check_fit<int32_t>(value));
|
||||
}
|
||||
|
||||
void GameStream::WriteCommandInt64_2(SessionCommand cmd, int64_t value1,
|
||||
int64_t value2) {
|
||||
void SceneStream::WriteCommandInt64_2(SessionCommand cmd, int64_t value1,
|
||||
int64_t value2) {
|
||||
WriteCommandInt32_2(cmd, static_cast_check_fit<int32_t>(value1),
|
||||
static_cast_check_fit<int32_t>(value2));
|
||||
}
|
||||
|
||||
void GameStream::WriteCommandInt64_3(SessionCommand cmd, int64_t value1,
|
||||
int64_t value2, int64_t value3) {
|
||||
void SceneStream::WriteCommandInt64_3(SessionCommand cmd, int64_t value1,
|
||||
int64_t value2, int64_t value3) {
|
||||
WriteCommandInt32_3(cmd, static_cast_check_fit<int32_t>(value1),
|
||||
static_cast_check_fit<int32_t>(value2),
|
||||
static_cast_check_fit<int32_t>(value3));
|
||||
}
|
||||
|
||||
void GameStream::WriteCommandInt64_4(SessionCommand cmd, int64_t value1,
|
||||
int64_t value2, int64_t value3,
|
||||
int64_t value4) {
|
||||
void SceneStream::WriteCommandInt64_4(SessionCommand cmd, int64_t value1,
|
||||
int64_t value2, int64_t value3,
|
||||
int64_t value4) {
|
||||
WriteCommandInt32_4(cmd, static_cast_check_fit<int32_t>(value1),
|
||||
static_cast_check_fit<int32_t>(value2),
|
||||
static_cast_check_fit<int32_t>(value3),
|
||||
static_cast_check_fit<int32_t>(value4));
|
||||
}
|
||||
|
||||
void GameStream::WriteString(const std::string& s) {
|
||||
void SceneStream::WriteString(const std::string& s) {
|
||||
// Write length int.
|
||||
auto string_size = s.size();
|
||||
auto size = out_command_.size();
|
||||
@ -317,13 +317,13 @@ void GameStream::WriteString(const std::string& s) {
|
||||
}
|
||||
}
|
||||
|
||||
void GameStream::WriteFloat(float val) {
|
||||
void SceneStream::WriteFloat(float val) {
|
||||
auto size = static_cast<int>(out_command_.size());
|
||||
out_command_.resize(size + sizeof(val));
|
||||
memcpy(&out_command_[size], &val, 4);
|
||||
}
|
||||
|
||||
void GameStream::WriteFloats(size_t count, const float* vals) {
|
||||
void SceneStream::WriteFloats(size_t count, const float* vals) {
|
||||
assert(count > 0);
|
||||
auto size = out_command_.size();
|
||||
size_t vals_size = sizeof(float) * count;
|
||||
@ -331,7 +331,7 @@ void GameStream::WriteFloats(size_t count, const float* vals) {
|
||||
memcpy(&(out_command_[size]), vals, vals_size);
|
||||
}
|
||||
|
||||
void GameStream::WriteInts32(size_t count, const int32_t* vals) {
|
||||
void SceneStream::WriteInts32(size_t count, const int32_t* vals) {
|
||||
assert(count > 0);
|
||||
auto size = out_command_.size();
|
||||
size_t vals_size = sizeof(int32_t) * count;
|
||||
@ -339,7 +339,7 @@ void GameStream::WriteInts32(size_t count, const int32_t* vals) {
|
||||
memcpy(&(out_command_[size]), vals, vals_size);
|
||||
}
|
||||
|
||||
void GameStream::WriteInts64(size_t count, const int64_t* vals) {
|
||||
void SceneStream::WriteInts64(size_t count, const int64_t* vals) {
|
||||
// FIXME: we don't actually support writing 64 bit values to the wire
|
||||
// at the moment; will need a protocol update for that.
|
||||
// This is just implemented as a placeholder.
|
||||
@ -350,7 +350,7 @@ void GameStream::WriteInts64(size_t count, const int64_t* vals) {
|
||||
WriteInts32(count, vals32.data());
|
||||
}
|
||||
|
||||
void GameStream::WriteChars(size_t count, const char* vals) {
|
||||
void SceneStream::WriteChars(size_t count, const char* vals) {
|
||||
assert(count > 0);
|
||||
auto size = out_command_.size();
|
||||
auto vals_size = static_cast<size_t>(count);
|
||||
@ -358,7 +358,7 @@ void GameStream::WriteChars(size_t count, const char* vals) {
|
||||
memcpy(&(out_command_[size]), vals, vals_size);
|
||||
}
|
||||
|
||||
void GameStream::ShipSessionCommandsMessage() {
|
||||
void SceneStream::ShipSessionCommandsMessage() {
|
||||
BA_PRECONDITION(!out_message_.empty());
|
||||
|
||||
// Send this message to all client-connections we're attached to.
|
||||
@ -372,7 +372,7 @@ void GameStream::ShipSessionCommandsMessage() {
|
||||
last_send_time_ = GetRealTime();
|
||||
}
|
||||
|
||||
void GameStream::AddMessageToReplay(const std::vector<uint8_t>& message) {
|
||||
void SceneStream::AddMessageToReplay(const std::vector<uint8_t>& message) {
|
||||
assert(writing_replay_);
|
||||
assert(g_assets_server);
|
||||
|
||||
@ -392,7 +392,7 @@ void GameStream::AddMessageToReplay(const std::vector<uint8_t>& message) {
|
||||
g_assets_server->PushAddMessageToReplayCall(message);
|
||||
}
|
||||
|
||||
void GameStream::SendPhysicsCorrection(bool blend) {
|
||||
void SceneStream::SendPhysicsCorrection(bool blend) {
|
||||
assert(host_session_);
|
||||
|
||||
std::vector<std::vector<uint8_t> > messages;
|
||||
@ -410,7 +410,7 @@ void GameStream::SendPhysicsCorrection(bool blend) {
|
||||
}
|
||||
}
|
||||
|
||||
void GameStream::EndCommand(bool is_time_set) {
|
||||
void SceneStream::EndCommand(bool is_time_set) {
|
||||
assert(!out_command_.empty());
|
||||
|
||||
int out_message_size;
|
||||
@ -456,7 +456,7 @@ void GameStream::EndCommand(bool is_time_set) {
|
||||
out_command_.clear();
|
||||
}
|
||||
|
||||
auto GameStream::IsValidScene(Scene* s) -> bool {
|
||||
auto SceneStream::IsValidScene(Scene* s) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -465,7 +465,7 @@ auto GameStream::IsValidScene(Scene* s) -> bool {
|
||||
&& scenes_[s->stream_id()] == s);
|
||||
}
|
||||
|
||||
auto GameStream::IsValidNode(Node* n) -> bool {
|
||||
auto SceneStream::IsValidNode(Node* n) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -474,7 +474,7 @@ auto GameStream::IsValidNode(Node* n) -> bool {
|
||||
&& nodes_[n->stream_id()] == n);
|
||||
}
|
||||
|
||||
auto GameStream::IsValidTexture(Texture* n) -> bool {
|
||||
auto SceneStream::IsValidTexture(Texture* n) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -483,7 +483,7 @@ auto GameStream::IsValidTexture(Texture* n) -> bool {
|
||||
&& textures_[n->stream_id()] == n);
|
||||
}
|
||||
|
||||
auto GameStream::IsValidModel(Model* n) -> bool {
|
||||
auto SceneStream::IsValidModel(Model* n) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -492,7 +492,7 @@ auto GameStream::IsValidModel(Model* n) -> bool {
|
||||
&& models_[n->stream_id()] == n);
|
||||
}
|
||||
|
||||
auto GameStream::IsValidSound(Sound* n) -> bool {
|
||||
auto SceneStream::IsValidSound(Sound* n) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -501,7 +501,7 @@ auto GameStream::IsValidSound(Sound* n) -> bool {
|
||||
&& sounds_[n->stream_id()] == n);
|
||||
}
|
||||
|
||||
auto GameStream::IsValidData(Data* n) -> bool {
|
||||
auto SceneStream::IsValidData(Data* n) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -510,7 +510,7 @@ auto GameStream::IsValidData(Data* n) -> bool {
|
||||
&& datas_[n->stream_id()] == n);
|
||||
}
|
||||
|
||||
auto GameStream::IsValidCollideModel(CollideModel* n) -> bool {
|
||||
auto SceneStream::IsValidCollideModel(CollideModel* n) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -519,7 +519,7 @@ auto GameStream::IsValidCollideModel(CollideModel* n) -> bool {
|
||||
&& collide_models_[n->stream_id()] == n);
|
||||
}
|
||||
|
||||
auto GameStream::IsValidMaterial(Material* n) -> bool {
|
||||
auto SceneStream::IsValidMaterial(Material* n) -> bool {
|
||||
if (!host_session_) {
|
||||
return true; // We don't build lists in this mode so can't verify this.
|
||||
}
|
||||
@ -528,13 +528,13 @@ auto GameStream::IsValidMaterial(Material* n) -> bool {
|
||||
&& materials_[n->stream_id()] == n);
|
||||
}
|
||||
|
||||
void GameStream::SetTime(millisecs_t t) {
|
||||
void SceneStream::SetTime(millisecs_t t) {
|
||||
if (time_ == t) {
|
||||
return; // Ignore redundants.
|
||||
}
|
||||
millisecs_t diff = t - time_;
|
||||
if (diff > 255) {
|
||||
Log("Error: GameStream got time diff > 255; not expected.");
|
||||
Log("Error: SceneStream got time diff > 255; not expected.");
|
||||
diff = 255;
|
||||
}
|
||||
WriteCommandInt64(SessionCommand::kBaseTimeStep, diff);
|
||||
@ -542,7 +542,7 @@ void GameStream::SetTime(millisecs_t t) {
|
||||
EndCommand(true);
|
||||
}
|
||||
|
||||
void GameStream::AddScene(Scene* s) {
|
||||
void SceneStream::AddScene(Scene* s) {
|
||||
// Host mode.
|
||||
if (host_session_) {
|
||||
Add(s, &scenes_, &free_indices_scene_graphs_);
|
||||
@ -556,19 +556,19 @@ void GameStream::AddScene(Scene* s) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveScene(Scene* s) {
|
||||
void SceneStream::RemoveScene(Scene* s) {
|
||||
WriteCommandInt64(SessionCommand::kRemoveSceneGraph, s->stream_id());
|
||||
Remove(s, &scenes_, &free_indices_scene_graphs_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::StepScene(Scene* s) {
|
||||
void SceneStream::StepScene(Scene* s) {
|
||||
assert(IsValidScene(s));
|
||||
WriteCommandInt64(SessionCommand::kStepSceneGraph, s->stream_id());
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddNode(Node* n) {
|
||||
void SceneStream::AddNode(Node* n) {
|
||||
assert(n);
|
||||
if (host_session_) {
|
||||
Add(n, &nodes_, &free_indices_nodes_);
|
||||
@ -583,26 +583,26 @@ void GameStream::AddNode(Node* n) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::NodeOnCreate(Node* n) {
|
||||
void SceneStream::NodeOnCreate(Node* n) {
|
||||
assert(IsValidNode(n));
|
||||
WriteCommandInt64(SessionCommand::kNodeOnCreate, n->stream_id());
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetForegroundScene(Scene* sg) {
|
||||
void SceneStream::SetForegroundScene(Scene* sg) {
|
||||
assert(IsValidScene(sg));
|
||||
WriteCommandInt64(SessionCommand::kSetForegroundSceneGraph, sg->stream_id());
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveNode(Node* n) {
|
||||
void SceneStream::RemoveNode(Node* n) {
|
||||
assert(IsValidNode(n));
|
||||
WriteCommandInt64(SessionCommand::kRemoveNode, n->stream_id());
|
||||
Remove(n, &nodes_, &free_indices_nodes_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddTexture(Texture* t) {
|
||||
void SceneStream::AddTexture(Texture* t) {
|
||||
// Register an ID in host mode.
|
||||
if (host_session_) {
|
||||
Add(t, &textures_, &free_indices_textures_);
|
||||
@ -617,14 +617,14 @@ void GameStream::AddTexture(Texture* t) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveTexture(Texture* t) {
|
||||
void SceneStream::RemoveTexture(Texture* t) {
|
||||
assert(IsValidTexture(t));
|
||||
WriteCommandInt64(SessionCommand::kRemoveTexture, t->stream_id());
|
||||
Remove(t, &textures_, &free_indices_textures_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddModel(Model* t) {
|
||||
void SceneStream::AddModel(Model* t) {
|
||||
// Register an ID in host mode.
|
||||
if (host_session_) {
|
||||
Add(t, &models_, &free_indices_models_);
|
||||
@ -639,14 +639,14 @@ void GameStream::AddModel(Model* t) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveModel(Model* t) {
|
||||
void SceneStream::RemoveModel(Model* t) {
|
||||
assert(IsValidModel(t));
|
||||
WriteCommandInt64(SessionCommand::kRemoveModel, t->stream_id());
|
||||
Remove(t, &models_, &free_indices_models_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddSound(Sound* t) {
|
||||
void SceneStream::AddSound(Sound* t) {
|
||||
// Register an ID in host mode.
|
||||
if (host_session_) {
|
||||
Add(t, &sounds_, &free_indices_sounds_);
|
||||
@ -661,14 +661,14 @@ void GameStream::AddSound(Sound* t) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveSound(Sound* t) {
|
||||
void SceneStream::RemoveSound(Sound* t) {
|
||||
assert(IsValidSound(t));
|
||||
WriteCommandInt64(SessionCommand::kRemoveSound, t->stream_id());
|
||||
Remove(t, &sounds_, &free_indices_sounds_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddData(Data* t) {
|
||||
void SceneStream::AddData(Data* t) {
|
||||
// Register an ID in host mode.
|
||||
if (host_session_) {
|
||||
Add(t, &datas_, &free_indices_datas_);
|
||||
@ -683,14 +683,14 @@ void GameStream::AddData(Data* t) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveData(Data* t) {
|
||||
void SceneStream::RemoveData(Data* t) {
|
||||
assert(IsValidData(t));
|
||||
WriteCommandInt64(SessionCommand::kRemoveData, t->stream_id());
|
||||
Remove(t, &datas_, &free_indices_datas_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddCollideModel(CollideModel* t) {
|
||||
void SceneStream::AddCollideModel(CollideModel* t) {
|
||||
if (host_session_) {
|
||||
Add(t, &collide_models_, &free_indices_collide_models_);
|
||||
} else {
|
||||
@ -704,14 +704,14 @@ void GameStream::AddCollideModel(CollideModel* t) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveCollideModel(CollideModel* t) {
|
||||
void SceneStream::RemoveCollideModel(CollideModel* t) {
|
||||
assert(IsValidCollideModel(t));
|
||||
WriteCommandInt64(SessionCommand::kRemoveCollideModel, t->stream_id());
|
||||
Remove(t, &collide_models_, &free_indices_collide_models_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddMaterial(Material* m) {
|
||||
void SceneStream::AddMaterial(Material* m) {
|
||||
if (host_session_) {
|
||||
Add(m, &materials_, &free_indices_materials_);
|
||||
} else {
|
||||
@ -724,14 +724,14 @@ void GameStream::AddMaterial(Material* m) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::RemoveMaterial(Material* m) {
|
||||
void SceneStream::RemoveMaterial(Material* m) {
|
||||
assert(IsValidMaterial(m));
|
||||
WriteCommandInt64(SessionCommand::kRemoveMaterial, m->stream_id());
|
||||
Remove(m, &materials_, &free_indices_materials_);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::AddMaterialComponent(Material* m, MaterialComponent* c) {
|
||||
void SceneStream::AddMaterialComponent(Material* m, MaterialComponent* c) {
|
||||
assert(IsValidMaterial(m));
|
||||
auto flattened_size = c->GetFlattenedSize();
|
||||
assert(flattened_size > 0 && flattened_size < 10000);
|
||||
@ -750,10 +750,10 @@ void GameStream::AddMaterialComponent(Material* m, MaterialComponent* c) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::ConnectNodeAttribute(Node* src_node,
|
||||
NodeAttributeUnbound* src_attr,
|
||||
Node* dst_node,
|
||||
NodeAttributeUnbound* dst_attr) {
|
||||
void SceneStream::ConnectNodeAttribute(Node* src_node,
|
||||
NodeAttributeUnbound* src_attr,
|
||||
Node* dst_node,
|
||||
NodeAttributeUnbound* dst_attr) {
|
||||
assert(IsValidNode(src_node));
|
||||
assert(IsValidNode(dst_node));
|
||||
assert(src_attr->node_type() == src_node->type());
|
||||
@ -768,7 +768,7 @@ void GameStream::ConnectNodeAttribute(Node* src_node,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::NodeMessage(Node* node, const char* buffer, size_t size) {
|
||||
void SceneStream::NodeMessage(Node* node, const char* buffer, size_t size) {
|
||||
assert(IsValidNode(node));
|
||||
BA_PRECONDITION(size > 0 && size < 10000);
|
||||
WriteCommandInt64_2(SessionCommand::kNodeMessage, node->stream_id(),
|
||||
@ -777,7 +777,7 @@ void GameStream::NodeMessage(Node* node, const char* buffer, size_t size) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, float val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, float val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
WriteCommandInt64_2(SessionCommand::kSetNodeAttrFloat, attr.node->stream_id(),
|
||||
attr.index());
|
||||
@ -785,22 +785,22 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr, float val) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, int64_t val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, int64_t val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
WriteCommandInt64_3(SessionCommand::kSetNodeAttrInt32, attr.node->stream_id(),
|
||||
attr.index(), val);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, bool val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, bool val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
WriteCommandInt64_3(SessionCommand::kSetNodeAttrBool, attr.node->stream_id(),
|
||||
attr.index(), val);
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<float>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<float>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
size_t count{vals.size()};
|
||||
WriteCommandInt64_3(SessionCommand::kSetNodeAttrFloats,
|
||||
@ -812,8 +812,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<int64_t>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<int64_t>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
size_t count{vals.size()};
|
||||
WriteCommandInt64_3(SessionCommand::kSetNodeAttrInt32s,
|
||||
@ -825,8 +825,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::string& val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::string& val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
WriteCommandInt64_2(SessionCommand::kSetNodeAttrString,
|
||||
attr.node->stream_id(), attr.index());
|
||||
@ -834,7 +834,7 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, Node* val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, Node* val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
if (val) {
|
||||
assert(IsValidNode(val));
|
||||
@ -850,8 +850,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr, Node* val) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Node*>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Node*>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
if (g_buildconfig.debug_build()) {
|
||||
for (auto val : vals) {
|
||||
@ -878,12 +878,12 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, Player* val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, Player* val) {
|
||||
// cout << "SET PLAYER ATTR " << attr.getIndex() << endl;
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Material*>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Material*>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
if (g_buildconfig.debug_build()) {
|
||||
for (auto val : vals) {
|
||||
@ -911,7 +911,7 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, Texture* val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, Texture* val) {
|
||||
if (val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
assert(IsValidTexture(val));
|
||||
@ -927,8 +927,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr, Texture* val) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Texture*>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Texture*>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
if (g_buildconfig.debug_build()) {
|
||||
for (auto val : vals) {
|
||||
@ -956,7 +956,7 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, Sound* val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, Sound* val) {
|
||||
if (val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
assert(IsValidSound(val));
|
||||
@ -972,8 +972,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr, Sound* val) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Sound*>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Sound*>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
if (g_buildconfig.debug_build()) {
|
||||
for (auto val : vals) {
|
||||
@ -1001,7 +1001,7 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, Model* val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, Model* val) {
|
||||
if (val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
assert(IsValidModel(val));
|
||||
@ -1017,8 +1017,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr, Model* val) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Model*>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<Model*>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
if (g_buildconfig.debug_build()) {
|
||||
for (auto val : vals) {
|
||||
@ -1045,7 +1045,7 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
}
|
||||
EndCommand();
|
||||
}
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr, CollideModel* val) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr, CollideModel* val) {
|
||||
if (val) {
|
||||
assert(IsValidNode(attr.node));
|
||||
assert(IsValidCollideModel(val));
|
||||
@ -1060,8 +1060,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr, CollideModel* val) {
|
||||
}
|
||||
EndCommand();
|
||||
}
|
||||
void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<CollideModel*>& vals) {
|
||||
void SceneStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
const std::vector<CollideModel*>& vals) {
|
||||
assert(IsValidNode(attr.node));
|
||||
if (g_buildconfig.debug_build()) {
|
||||
for (auto val : vals) {
|
||||
@ -1089,8 +1089,8 @@ void GameStream::SetNodeAttr(const NodeAttribute& attr,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::PlaySoundAtPosition(Sound* sound, float volume, float x,
|
||||
float y, float z) {
|
||||
void SceneStream::PlaySoundAtPosition(Sound* sound, float volume, float x,
|
||||
float y, float z) {
|
||||
assert(IsValidSound(sound));
|
||||
assert(IsValidScene(sound->scene()));
|
||||
|
||||
@ -1103,7 +1103,7 @@ void GameStream::PlaySoundAtPosition(Sound* sound, float volume, float x,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::EmitBGDynamics(const BGDynamicsEmission& e) {
|
||||
void SceneStream::EmitBGDynamics(const BGDynamicsEmission& e) {
|
||||
WriteCommandInt64_4(SessionCommand::kEmitBGDynamics,
|
||||
static_cast<int64_t>(e.emit_type), e.count,
|
||||
static_cast<int64_t>(e.chunk_type),
|
||||
@ -1121,7 +1121,7 @@ void GameStream::EmitBGDynamics(const BGDynamicsEmission& e) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::PlaySound(Sound* sound, float volume) {
|
||||
void SceneStream::PlaySound(Sound* sound, float volume) {
|
||||
assert(IsValidSound(sound));
|
||||
assert(IsValidScene(sound->scene()));
|
||||
|
||||
@ -1131,11 +1131,11 @@ void GameStream::PlaySound(Sound* sound, float volume) {
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::ScreenMessageTop(const std::string& val, float r, float g,
|
||||
float b, Texture* texture,
|
||||
Texture* tint_texture, float tint_r,
|
||||
float tint_g, float tint_b, float tint2_r,
|
||||
float tint2_g, float tint2_b) {
|
||||
void SceneStream::ScreenMessageTop(const std::string& val, float r, float g,
|
||||
float b, Texture* texture,
|
||||
Texture* tint_texture, float tint_r,
|
||||
float tint_g, float tint_b, float tint2_r,
|
||||
float tint2_g, float tint2_b) {
|
||||
assert(IsValidTexture(texture));
|
||||
assert(IsValidTexture(tint_texture));
|
||||
assert(IsValidScene(texture->scene()));
|
||||
@ -1157,8 +1157,8 @@ void GameStream::ScreenMessageTop(const std::string& val, float r, float g,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
void GameStream::ScreenMessageBottom(const std::string& val, float r, float g,
|
||||
float b) {
|
||||
void SceneStream::ScreenMessageBottom(const std::string& val, float r, float g,
|
||||
float b) {
|
||||
WriteCommand(SessionCommand::kScreenMessageBottom);
|
||||
WriteString(val);
|
||||
float color[3];
|
||||
@ -1169,27 +1169,27 @@ void GameStream::ScreenMessageBottom(const std::string& val, float r, float g,
|
||||
EndCommand();
|
||||
}
|
||||
|
||||
auto GameStream::GetSoundID(Sound* s) -> int64_t {
|
||||
auto SceneStream::GetSoundID(Sound* s) -> int64_t {
|
||||
assert(IsValidSound(s));
|
||||
return s->stream_id();
|
||||
}
|
||||
|
||||
auto GameStream::GetMaterialID(Material* m) -> int64_t {
|
||||
auto SceneStream::GetMaterialID(Material* m) -> int64_t {
|
||||
assert(IsValidMaterial(m));
|
||||
return m->stream_id();
|
||||
}
|
||||
|
||||
void GameStream::OnClientConnected(ConnectionToClient* c) {
|
||||
void SceneStream::OnClientConnected(ConnectionToClient* c) {
|
||||
// Sanity check - abort if its on either of our lists already.
|
||||
for (auto& connections_to_client : connections_to_clients_) {
|
||||
if (connections_to_client == c) {
|
||||
Log("Error: GameStream::OnClientConnected() got duplicate connection.");
|
||||
Log("Error: SceneStream::OnClientConnected() got duplicate connection.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (auto& i : connections_to_clients_ignored_) {
|
||||
if (i == c) {
|
||||
Log("Error: GameStream::OnClientConnected() got duplicate connection.");
|
||||
Log("Error: SceneStream::OnClientConnected() got duplicate connection.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -1208,7 +1208,7 @@ void GameStream::OnClientConnected(ConnectionToClient* c) {
|
||||
// We create a temporary output stream just for the purpose of building
|
||||
// a giant session-commands message to reconstruct everything in our
|
||||
// host-session in its current form.
|
||||
GameStream out(nullptr, false);
|
||||
SceneStream out(nullptr, false);
|
||||
|
||||
// Ask the host-session that we came from to dump it's complete state.
|
||||
host_session_->DumpFullState(&out);
|
||||
@ -1226,7 +1226,7 @@ void GameStream::OnClientConnected(ConnectionToClient* c) {
|
||||
}
|
||||
}
|
||||
|
||||
void GameStream::OnClientDisconnected(ConnectionToClient* c) {
|
||||
void SceneStream::OnClientDisconnected(ConnectionToClient* c) {
|
||||
// Search for it on either our ignored or regular lists.
|
||||
for (auto i = connections_to_clients_.begin();
|
||||
i != connections_to_clients_.end(); i++) {
|
||||
@ -1242,7 +1242,7 @@ void GameStream::OnClientDisconnected(ConnectionToClient* c) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
Log("Error: GameStream::OnClientDisconnected() called for connection not on "
|
||||
Log("Error: SceneStream::OnClientDisconnected() called for connection not on "
|
||||
"lists");
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Released under the MIT License. See LICENSE for details.
|
||||
|
||||
#ifndef BALLISTICA_GAME_GAME_STREAM_H_
|
||||
#define BALLISTICA_GAME_GAME_STREAM_H_
|
||||
#ifndef BALLISTICA_SCENE_SCENE_STREAM_H_
|
||||
#define BALLISTICA_SCENE_SCENE_STREAM_H_
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
@ -13,10 +13,10 @@ namespace ballistica {
|
||||
|
||||
// A mechanism for dumping a live session or session-creation-commands to a
|
||||
// stream of messages that can be saved to file or sent over the network.
|
||||
class GameStream : public Object, public ClientControllerInterface {
|
||||
class SceneStream : public Object, public ClientControllerInterface {
|
||||
public:
|
||||
GameStream(HostSession* host_session, bool save_replay);
|
||||
~GameStream() override;
|
||||
SceneStream(HostSession* host_session, bool save_replay);
|
||||
~SceneStream() override;
|
||||
auto SetTime(millisecs_t t) -> void;
|
||||
auto AddScene(Scene* s) -> void;
|
||||
auto RemoveScene(Scene* s) -> void;
|
||||
@ -169,4 +169,4 @@ class GameStream : public Object, public ClientControllerInterface {
|
||||
|
||||
} // namespace ballistica
|
||||
|
||||
#endif // BALLISTICA_GAME_GAME_STREAM_H_
|
||||
#endif // BALLISTICA_SCENE_SCENE_STREAM_H_
|
||||
Loading…
x
Reference in New Issue
Block a user