diff --git a/.efrocachemap b/.efrocachemap
index 15bf8e53..757e08de 100644
--- a/.efrocachemap
+++ b/.efrocachemap
@@ -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/ad/15/3b9d4eb830dd3f65266b90544461",
- "build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/3f/94/ce703438b67755c530ca90d7147e",
- "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/57/49/aef9dbd58c9638d2f57c61fa9dee",
- "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/53/73/7aee5551f9aa8c60bfa36ce86889",
- "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/8d/cd/61b3022a6a3620bb9a0d288a3a07",
- "build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/67/d3/7e7b3147c119bcf9edc62f271755",
- "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/41/81/b4225f4df31a6bb482eee912d1e7",
- "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/8a/3e/9a284ee8d8cb75fef73f31c95a8f",
- "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a5/a2/69829de7375f981ac01464d1271c",
- "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/8f/de/c40022e95c0d51e3ea7d68713ac8",
- "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/2a/e3/74cdea89e9606f525ae01f5fb860",
- "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c2/b3/8f5c7076b293ce6a961b23321ebe",
- "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/45/4b/43950780d121290a40cb444e86c4",
- "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/74/6c/5c8a7cab586c813a07d5180e25c2",
- "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ca/36/94c0d402ec38ffdd74cd165f51c3",
- "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b7/a9/14ea5150ad61a43b5780975551ac",
- "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/23/72/2bdc1106cdf2aa163a591e7c47b8",
- "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/1e/d9/5a7fd190b86683bef223c1cdb0b6",
- "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/2e/f1/27b90831c9a25d2b9d06a266e931",
- "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/17/ce/d3e33370c016fc8110e6dddd120f",
- "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/32/b0/df61f7b69d796fbdf2aa0d11974b",
- "build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/42/31/a45e87e70e5d5232956586620f35",
- "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/94/5e/6ac9534c08e600201b04d28a6069",
- "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5f/5d/52e74182f459f5b7b55ae07b36c6",
- "build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7b/9d/367338622b31482a8ef87621f5aa",
- "build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a8/18/4dff9ab6b2529d258a2ee5607d0c",
- "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/79/b9/e5e9d0f92f82f6cf35abf0c049cf",
- "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4c/b4/2c65b84265e0b2d576317ca86e77",
- "build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d1/86/635b942e0837be18e6d9d859f2c4",
- "build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b0/f5/3da5acc926ca5e6c02307b8a16a6",
- "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a3/51/d624ac150603304183ba23d369a2",
- "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e2/51/5eb2216e4cdc531c500244316f1d",
- "build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b1/2b/c72179ed1d11ae7e11f429b90ae9",
- "build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/52/78/cca5ff0fcc837467cd23239537c7",
- "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e7/6e/eb7102dd939e85172d729ba471b8",
- "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e7/92/b7c90b5dbf614aa056cf467f73e0",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/cf/d9/52c1c145efa1a24ebf54dd71f691",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/31/15/ef849aeaf5a9cc2169e6ec4998c8",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/86/a7/def29184cd6e947469726ae382e1",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/5f/30/42705d0b580994d1345c34651170",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/2f/b1/6a6e8cf45fc5afa4085bf90a526f",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/7e/fb/e7eaee33c6196f9204a2997fc65c",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/5a/39/e00cddb91e8eca83b117235c1332",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/07/dd/6e331996e6e6907f05a21abc20a6",
+ "build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/15/a9/a9a878db308e8fb8e267d606a9f7",
+ "build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ea/05/dc05633b650cf96c75ac3ed1a61d",
+ "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/4d/f6/d118bb50716ae27418bf756702c3",
+ "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/30/a1/637841e59a1c277912aa6941a66f",
+ "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/9e/f4/cc859bd7ef55b939e2090128f307",
+ "build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/12/c9/3301f4529de01e4a6fad66177b32",
+ "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/79/37/7d7547882a64e6b2ce2881d5f2ad",
+ "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7b/8c/4606553615502fcd4a116c0d7fe2",
+ "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/1f/dc/501dfee10c4d4b04e8e7bbf60422",
+ "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/3a/33/69ab076cfff5b561dae8194b5360",
+ "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5a/12/81b9b1d949f44111680758020956",
+ "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ae/a0/1514d1520f12dc4e9c34316310c1",
+ "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/49/6b/f44e345c4133418d816a94690d3b",
+ "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/07/92/e54b6c94216fc811d2c5e3c385a3",
+ "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/55/e1/2a35d261d1f7d29603220f456163",
+ "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e1/ef/ff3bfa49d2ba1c148dde704a4d87",
+ "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/06/b9/54708a2d4619f1cd3706fc79fd01",
+ "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/01/24/143285e78761359b9dfa2a425a34",
+ "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/ca/80/386a30050daa0eb1cec9b6fad36b",
+ "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/0b/6d/32eab56b5d6179fb2b3e9308e3d8",
+ "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/bd/e9/558b331aa2cdde5b8814eeb5323d",
+ "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/49/c2/a8970c6be16183a808c991510aaa",
+ "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/5d/7e/0dc09d6e811dc566ae3530794132",
+ "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/c9/56/f14a3725ad5410f373e3d7bad340",
+ "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/06/03/28c2d1732805a77f322e2d90b6d7",
+ "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/83/93/f88d485633c4307f4d64ba27c615",
+ "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/2e/4a/dd9a19a2e3f475d39c1c2fd63c3a",
+ "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/13/7f/35479d1cdce4dc3a705e040be0d8",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/3d/ca/1f49d1c9ac5a158505de356cb650",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/f2/87/eefb0be2571dd410a1f438baea45",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/3a/a2/fa5c7a6b624a96147b3f9f79ffce",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/9c/96/ca2599d31f947eed5cdc26d64582",
"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"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 70701bdf..e8767974 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-### 1.7.7 (build 20798, api 7, 2022-09-09)
+### 1.7.7 (build 20799, 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.
diff --git a/assets/src/ba_data/python/._bainternal_sources_hash b/assets/src/ba_data/python/._bainternal_sources_hash
index 4f6f8751..595ac638 100644
--- a/assets/src/ba_data/python/._bainternal_sources_hash
+++ b/assets/src/ba_data/python/._bainternal_sources_hash
@@ -1 +1 @@
-64954916459680243860176377055051806996
\ No newline at end of file
+250920245305497630480226719424525454078
\ No newline at end of file
diff --git a/assets/src/ba_data/python/ba/_bootstrap.py b/assets/src/ba_data/python/ba/_bootstrap.py
index 490f64f5..79ed2ff8 100644
--- a/assets/src/ba_data/python/ba/_bootstrap.py
+++ b/assets/src/ba_data/python/ba/_bootstrap.py
@@ -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 = 20798
+ expected_build = 20799
running_build: int = env['build_number']
if running_build != expected_build:
print(
diff --git a/ballisticacore-cmake/CMakeLists.txt b/ballisticacore-cmake/CMakeLists.txt
index 0f58aa0a..c206b385 100644
--- a/ballisticacore-cmake/CMakeLists.txt
+++ b/ballisticacore-cmake/CMakeLists.txt
@@ -298,8 +298,6 @@ add_executable(ballisticacore
${BA_SRC_ROOT}/ballistica/dynamics/part.h
${BA_SRC_ROOT}/ballistica/dynamics/rigid_body.cc
${BA_SRC_ROOT}/ballistica/dynamics/rigid_body.h
- ${BA_SRC_ROOT}/ballistica/game/account.cc
- ${BA_SRC_ROOT}/ballistica/game/account.h
${BA_SRC_ROOT}/ballistica/game/client_controller_interface.h
${BA_SRC_ROOT}/ballistica/game/connection/connection.cc
${BA_SRC_ROOT}/ballistica/game/connection/connection.h
@@ -335,6 +333,8 @@ add_executable(ballisticacore
${BA_SRC_ROOT}/ballistica/game/session/replay_client_session.h
${BA_SRC_ROOT}/ballistica/game/session/session.cc
${BA_SRC_ROOT}/ballistica/game/session/session.h
+ ${BA_SRC_ROOT}/ballistica/game/v1_account.cc
+ ${BA_SRC_ROOT}/ballistica/game/v1_account.h
${BA_SRC_ROOT}/ballistica/generic/base64.cc
${BA_SRC_ROOT}/ballistica/generic/base64.h
${BA_SRC_ROOT}/ballistica/generic/buffer.h
diff --git a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj
index 06cae3fd..266f06d5 100644
--- a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj
+++ b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj
@@ -289,8 +289,6 @@
-
-
@@ -326,6 +324,8 @@
+
+
diff --git a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters
index 0db00d48..521f7a2f 100644
--- a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters
+++ b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters
@@ -301,12 +301,6 @@
ballistica\dynamics
-
- ballistica\game
-
-
- ballistica\game
-
ballistica\game
@@ -412,6 +406,12 @@
ballistica\game\session
+
+ ballistica\game
+
+
+ ballistica\game
+
ballistica\generic
diff --git a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj
index ccbacee1..fafb946a 100644
--- a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj
+++ b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj
@@ -284,8 +284,6 @@
-
-
@@ -321,6 +319,8 @@
+
+
diff --git a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters
index 0db00d48..521f7a2f 100644
--- a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters
+++ b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters
@@ -301,12 +301,6 @@
ballistica\dynamics
-
- ballistica\game
-
-
- ballistica\game
-
ballistica\game
@@ -412,6 +406,12 @@
ballistica\game\session
+
+ ballistica\game
+
+
+ ballistica\game
+
ballistica\generic
diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc
index 9e8a4227..8822fbb2 100644
--- a/src/ballistica/ballistica.cc
+++ b/src/ballistica/ballistica.cc
@@ -10,7 +10,7 @@
#include "ballistica/core/logging.h"
#include "ballistica/core/thread.h"
#include "ballistica/dynamics/bg/bg_dynamics_server.h"
-#include "ballistica/game/account.h"
+#include "ballistica/game/v1_account.h"
#include "ballistica/graphics/graphics_server.h"
#include "ballistica/internal/app_internal.h"
#include "ballistica/media/media_server.h"
@@ -22,7 +22,7 @@
namespace ballistica {
// These are set automatically via script; don't modify them here.
-const int kAppBuildNumber = 20798;
+const int kAppBuildNumber = 20799;
const char* kAppVersion = "1.7.7";
// Our standalone globals.
@@ -30,7 +30,7 @@ const char* kAppVersion = "1.7.7";
// Everything else should go into App (or more ideally into a class).
int g_early_log_writes{10};
-Account* g_account{};
+V1Account* g_v1_account{};
AppConfig* g_app_config{};
App* g_app{};
AppInternal* g_app_internal{};
@@ -103,7 +103,7 @@ auto BallisticaMain(int argc, char** argv) -> int {
g_app_flavor = g_platform->CreateAppFlavor();
g_app_flavor->PostInit();
- g_account = new Account();
+ g_v1_account = new V1Account();
g_utils = new Utils();
Scene::Init();
diff --git a/src/ballistica/ballistica.h b/src/ballistica/ballistica.h
index 325b02a0..d8f15f8d 100644
--- a/src/ballistica/ballistica.h
+++ b/src/ballistica/ballistica.h
@@ -117,7 +117,7 @@ const float kGameStepSeconds =
// Globals.
extern int g_early_log_writes;
-extern Account* g_account;
+extern V1Account* g_v1_account;
extern AppFlavor* g_app_flavor;
extern AppConfig* g_app_config;
extern App* g_app;
diff --git a/src/ballistica/core/types.h b/src/ballistica/core/types.h
index ffb27cf6..1143e129 100644
--- a/src/ballistica/core/types.h
+++ b/src/ballistica/core/types.h
@@ -34,7 +34,6 @@ typedef int64_t millisecs_t;
// avoid pulling in their full headers as much as possible
// to keep compile times down.
-class Account;
class AppFlavor;
class AppConfig;
class App;
@@ -197,6 +196,7 @@ class Vector2f;
class Vector3f;
class Vector4f;
class AppFlavorVR;
+class V1Account;
class VRGraphics;
class Widget;
diff --git a/src/ballistica/game/game.cc b/src/ballistica/game/game.cc
index 31399a63..81bf71d8 100644
--- a/src/ballistica/game/game.cc
+++ b/src/ballistica/game/game.cc
@@ -7,7 +7,6 @@
#include "ballistica/audio/audio.h"
#include "ballistica/core/thread.h"
#include "ballistica/dynamics/bg/bg_dynamics.h"
-#include "ballistica/game/account.h"
#include "ballistica/game/connection/connection_set.h"
#include "ballistica/game/connection/connection_to_client_udp.h"
#include "ballistica/game/connection/connection_to_host_udp.h"
@@ -19,6 +18,7 @@
#include "ballistica/game/session/host_session.h"
#include "ballistica/game/session/net_client_session.h"
#include "ballistica/game/session/replay_client_session.h"
+#include "ballistica/game/v1_account.h"
#include "ballistica/generic/json.h"
#include "ballistica/generic/timer.h"
#include "ballistica/graphics/graphics.h"
@@ -271,10 +271,11 @@ void Game::PushSetV1LoginCall(V1AccountType account_type,
V1LoginState account_state,
const std::string& account_name,
const std::string& account_id) {
- thread()->PushCall([this, account_type, account_state, account_name,
- account_id] {
- g_account->SetLogin(account_type, account_state, account_name, account_id);
- });
+ thread()->PushCall(
+ [this, account_type, account_state, account_name, account_id] {
+ g_v1_account->SetLogin(account_type, account_state, account_name,
+ account_id);
+ });
}
void Game::PushInitialScreenCreatedCall() {
diff --git a/src/ballistica/game/player_spec.cc b/src/ballistica/game/player_spec.cc
index c41c6f29..fc5b4502 100644
--- a/src/ballistica/game/player_spec.cc
+++ b/src/ballistica/game/player_spec.cc
@@ -3,8 +3,8 @@
#include "ballistica/game/player_spec.h"
#include "ballistica/app/app.h"
-#include "ballistica/game/account.h"
#include "ballistica/game/game.h"
+#include "ballistica/game/v1_account.h"
#include "ballistica/generic/json.h"
#include "ballistica/generic/utils.h"
#include "ballistica/platform/platform.h"
@@ -26,7 +26,8 @@ PlayerSpec::PlayerSpec(const std::string& s) {
// Account type may technically be something we don't recognize,
// but that's ok.. it'll just be 'invalid' to us in that case
- account_type_ = Account::AccountTypeFromString(account_obj->valuestring);
+ account_type_ =
+ V1Account::AccountTypeFromString(account_obj->valuestring);
success = true;
}
cJSON_Delete(root_obj);
@@ -40,7 +41,7 @@ PlayerSpec::PlayerSpec(const std::string& s) {
}
auto PlayerSpec::GetDisplayString() const -> std::string {
- return Account::AccountTypeToIconString(account_type_) + name_;
+ return V1Account::AccountTypeToIconString(account_type_) + name_;
}
auto PlayerSpec::GetShortName() const -> std::string {
@@ -60,8 +61,8 @@ auto PlayerSpec::GetSpecString() const -> std::string {
cJSON* root;
root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "n", name_.c_str());
- cJSON_AddStringToObject(root, "a",
- Account::AccountTypeToString(account_type_).c_str());
+ cJSON_AddStringToObject(
+ root, "a", V1Account::AccountTypeToString(account_type_).c_str());
cJSON_AddStringToObject(root, "sn", short_name_.c_str());
char* out = cJSON_PrintUnformatted(root);
std::string out_s = out;
@@ -76,10 +77,10 @@ auto PlayerSpec::GetSpecString() const -> std::string {
auto PlayerSpec::GetAccountPlayerSpec() -> PlayerSpec {
PlayerSpec spec;
- if (g_account->GetLoginState() == V1LoginState::kSignedIn) {
+ if (g_v1_account->GetLoginState() == V1LoginState::kSignedIn) {
spec.account_type_ = g_app->account_type;
spec.name_ =
- Utils::GetValidUTF8(g_account->GetLoginName().c_str(), "bsgaps");
+ Utils::GetValidUTF8(g_v1_account->GetLoginName().c_str(), "bsgaps");
} else {
// Headless builds fall back to V1 public-party name if that's available.
if (g_buildconfig.headless_build()
diff --git a/src/ballistica/game/account.cc b/src/ballistica/game/v1_account.cc
similarity index 80%
rename from src/ballistica/game/account.cc
rename to src/ballistica/game/v1_account.cc
index da5670c4..3b16bd91 100644
--- a/src/ballistica/game/account.cc
+++ b/src/ballistica/game/v1_account.cc
@@ -1,6 +1,6 @@
// Released under the MIT License. See LICENSE for details.
-#include "ballistica/game/account.h"
+#include "ballistica/game/v1_account.h"
#include "ballistica/app/app.h"
#include "ballistica/game/game.h"
@@ -10,7 +10,7 @@
namespace ballistica {
-auto Account::AccountTypeFromString(const std::string& val) -> V1AccountType {
+auto V1Account::AccountTypeFromString(const std::string& val) -> V1AccountType {
if (val == "Game Center") {
return V1AccountType::kGameCenter;
} else if (val == "Game Circle") {
@@ -36,7 +36,7 @@ auto Account::AccountTypeFromString(const std::string& val) -> V1AccountType {
}
}
-auto Account::AccountTypeToString(V1AccountType type) -> std::string {
+auto V1Account::AccountTypeToString(V1AccountType type) -> std::string {
switch (type) {
case V1AccountType::kGameCenter:
return "Game Center";
@@ -63,7 +63,7 @@ auto Account::AccountTypeToString(V1AccountType type) -> std::string {
}
}
-auto Account::AccountTypeToIconString(V1AccountType type) -> std::string {
+auto V1Account::AccountTypeToIconString(V1AccountType type) -> std::string {
switch (type) {
case V1AccountType::kTest:
return g_game->CharStr(SpecialChar::kTestAccount);
@@ -89,34 +89,34 @@ auto Account::AccountTypeToIconString(V1AccountType type) -> std::string {
}
}
-Account::Account() = default;
+V1Account::V1Account() = default;
-auto Account::GetLoginName() -> std::string {
+auto V1Account::GetLoginName() -> std::string {
std::scoped_lock lock(mutex_);
return login_name_;
}
-auto Account::GetLoginID() -> std::string {
+auto V1Account::GetLoginID() -> std::string {
std::scoped_lock lock(mutex_);
return login_id_;
}
-auto Account::GetToken() -> std::string {
+auto V1Account::GetToken() -> std::string {
std::scoped_lock lock(mutex_);
return token_;
}
-auto Account::GetExtra() -> std::string {
+auto V1Account::GetExtra() -> std::string {
std::scoped_lock lock(mutex_);
return extra_;
}
-auto Account::GetExtra2() -> std::string {
+auto V1Account::GetExtra2() -> std::string {
std::scoped_lock lock(mutex_);
return extra_2_;
}
-auto Account::GetLoginState(int* state_num) -> V1LoginState {
+auto V1Account::GetLoginState(int* state_num) -> V1LoginState {
std::scoped_lock lock(mutex_);
if (state_num) {
*state_num = login_state_num_;
@@ -124,18 +124,18 @@ auto Account::GetLoginState(int* state_num) -> V1LoginState {
return login_state_;
}
-void Account::SetExtra(const std::string& extra) {
+void V1Account::SetExtra(const std::string& extra) {
std::scoped_lock lock(mutex_);
extra_ = extra;
}
-void Account::SetExtra2(const std::string& extra) {
+void V1Account::SetExtra2(const std::string& extra) {
std::scoped_lock lock(mutex_);
extra_2_ = extra;
}
-void Account::SetToken(const std::string& account_id,
- const std::string& token) {
+void V1Account::SetToken(const std::string& account_id,
+ const std::string& token) {
std::scoped_lock lock(mutex_);
// Hmm, does this compare logic belong in here?
if (login_id_ == account_id) {
@@ -143,9 +143,9 @@ void Account::SetToken(const std::string& account_id,
}
}
-void Account::SetLogin(V1AccountType account_type, V1LoginState login_state,
- const std::string& login_name,
- const std::string& login_id) {
+void V1Account::SetLogin(V1AccountType account_type, V1LoginState login_state,
+ const std::string& login_name,
+ const std::string& login_id) {
bool call_login_did_change = false;
{
std::scoped_lock lock(mutex_);
@@ -181,7 +181,7 @@ void Account::SetLogin(V1AccountType account_type, V1LoginState login_state,
}
}
-void Account::SetProductsPurchased(const std::vector& products) {
+void V1Account::SetProductsPurchased(const std::vector& products) {
std::scoped_lock lock(mutex_);
std::unordered_map purchases_old = product_purchases_;
product_purchases_.clear();
@@ -193,7 +193,7 @@ void Account::SetProductsPurchased(const std::vector& products) {
}
}
-auto Account::GetProductPurchased(const std::string& product) -> bool {
+auto V1Account::GetProductPurchased(const std::string& product) -> bool {
std::scoped_lock lock(mutex_);
auto i = product_purchases_.find(product);
if (i == product_purchases_.end()) {
diff --git a/src/ballistica/game/account.h b/src/ballistica/game/v1_account.h
similarity index 92%
rename from src/ballistica/game/account.h
rename to src/ballistica/game/v1_account.h
index 099e2ca2..d7c03345 100644
--- a/src/ballistica/game/account.h
+++ b/src/ballistica/game/v1_account.h
@@ -1,7 +1,7 @@
// Released under the MIT License. See LICENSE for details.
-#ifndef BALLISTICA_GAME_ACCOUNT_H_
-#define BALLISTICA_GAME_ACCOUNT_H_
+#ifndef BALLISTICA_GAME_V1_ACCOUNT_H_
+#define BALLISTICA_GAME_V1_ACCOUNT_H_
#include
#include
@@ -13,9 +13,9 @@
namespace ballistica {
/// Global account functionality.
-class Account {
+class V1Account {
public:
- Account();
+ V1Account();
static auto AccountTypeFromString(const std::string& val) -> V1AccountType;
static auto AccountTypeToString(V1AccountType type) -> std::string;
static auto AccountTypeToIconString(V1AccountType type) -> std::string;
@@ -63,4 +63,4 @@ class Account {
} // namespace ballistica
-#endif // BALLISTICA_GAME_ACCOUNT_H_
+#endif // BALLISTICA_GAME_V1_ACCOUNT_H_
diff --git a/src/ballistica/python/methods/python_methods_ui.cc b/src/ballistica/python/methods/python_methods_ui.cc
index 71b2dedc..d249b519 100644
--- a/src/ballistica/python/methods/python_methods_ui.cc
+++ b/src/ballistica/python/methods/python_methods_ui.cc
@@ -4,9 +4,9 @@
#include "ballistica/app/app.h"
#include "ballistica/app/app_flavor.h"
-#include "ballistica/game/account.h"
#include "ballistica/game/connection/connection_set.h"
#include "ballistica/game/game.h"
+#include "ballistica/game/v1_account.h"
#include "ballistica/input/input.h"
#include "ballistica/internal/app_internal.h"
#include "ballistica/python/python.h"
diff --git a/src/ballistica/python/python.cc b/src/ballistica/python/python.cc
index a2b0f7ba..e7540d64 100644
--- a/src/ballistica/python/python.cc
+++ b/src/ballistica/python/python.cc
@@ -6,12 +6,12 @@
#include "ballistica/audio/audio.h"
#include "ballistica/core/thread.h"
#include "ballistica/dynamics/material/material.h"
-#include "ballistica/game/account.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"
#include "ballistica/input/device/keyboard_input.h"