diff --git a/.efrocachemap b/.efrocachemap index 6fdbf248..d03e3b1c 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -420,7 +420,7 @@ "assets/build/ba_data/audio/zoeOw.ogg": "https://files.ballistica.net/cache/ba1/14/f1/4f2995d78fc20dd79dfb39c5d554", "assets/build/ba_data/audio/zoePickup01.ogg": "https://files.ballistica.net/cache/ba1/57/ac/6ed0caecd25dc23688debed24c45", "assets/build/ba_data/audio/zoeScream01.ogg": "https://files.ballistica.net/cache/ba1/32/08/38dac4a79ab2acee76a75d32a310", - "assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/0d/86/2973ec3ddaebaff01a35f68b99aa", + "assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/d1/70/6fb5f586794d790395d3797a391c", "assets/build/ba_data/data/languages/arabic.json": "https://files.ballistica.net/cache/ba1/4d/1d/113351f74102015ff852ee3e2e2b", "assets/build/ba_data/data/languages/belarussian.json": "https://files.ballistica.net/cache/ba1/49/92/dbd8af6861dd47b8bca51aa9533c", "assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/b0/0c/fd37e0f8449ab00a345ecea7bd4e", @@ -429,11 +429,11 @@ "assets/build/ba_data/data/languages/czech.json": "https://files.ballistica.net/cache/ba1/f8/63/106bcd08194d23cd8baa7d8be4fc", "assets/build/ba_data/data/languages/danish.json": "https://files.ballistica.net/cache/ba1/3f/46/e4da3c1d2b0ebf916df55c608b28", "assets/build/ba_data/data/languages/dutch.json": "https://files.ballistica.net/cache/ba1/d1/07/37b7adc3dbec7328d26c5325f212", - "assets/build/ba_data/data/languages/english.json": "https://files.ballistica.net/cache/ba1/b6/92/f245bd6c11a4ab2eaff037b38cfe", + "assets/build/ba_data/data/languages/english.json": "https://files.ballistica.net/cache/ba1/b6/e8/5b89a8e607a1eec8e4c86374b7de", "assets/build/ba_data/data/languages/esperanto.json": "https://files.ballistica.net/cache/ba1/6e/fd/685a4e1da031474d47a1d9eb2731", "assets/build/ba_data/data/languages/french.json": "https://files.ballistica.net/cache/ba1/c1/e9/0d7426afb8faa8b66c3b74b35e23", "assets/build/ba_data/data/languages/german.json": "https://files.ballistica.net/cache/ba1/9f/99/500019aa5bc3ea8dca84a06036bd", - "assets/build/ba_data/data/languages/gibberish.json": "https://files.ballistica.net/cache/ba1/17/82/e053185f86ba5c907185881273fb", + "assets/build/ba_data/data/languages/gibberish.json": "https://files.ballistica.net/cache/ba1/13/7c/90fc15be9c187e22c3bebff4bb6f", "assets/build/ba_data/data/languages/greek.json": "https://files.ballistica.net/cache/ba1/93/36/177284765143e14ee6454a59ec0d", "assets/build/ba_data/data/languages/hindi.json": "https://files.ballistica.net/cache/ba1/6d/38/ad3e051c2be890d5a01b6eeca52d", "assets/build/ba_data/data/languages/hungarian.json": "https://files.ballistica.net/cache/ba1/de/1b/d9a8e089566aa2951dc34c8c7173", @@ -441,7 +441,7 @@ "assets/build/ba_data/data/languages/italian.json": "https://files.ballistica.net/cache/ba1/bf/d6/4341a67850096fae618968c327ae", "assets/build/ba_data/data/languages/korean.json": "https://files.ballistica.net/cache/ba1/51/fc/16596c8d421e4961eab3041303d7", "assets/build/ba_data/data/languages/persian.json": "https://files.ballistica.net/cache/ba1/e4/38/446b22f510f74f590cb990394d36", - "assets/build/ba_data/data/languages/polish.json": "https://files.ballistica.net/cache/ba1/fd/6a/16e5602362974033afba3144e2c5", + "assets/build/ba_data/data/languages/polish.json": "https://files.ballistica.net/cache/ba1/03/08/40f887bb92ddd5c565d879efa279", "assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/ce/f8/087671938e6d407d11d95565e67b", "assets/build/ba_data/data/languages/romanian.json": "https://files.ballistica.net/cache/ba1/f3/e5/c6d8fab0509451976c776265f0d0", "assets/build/ba_data/data/languages/russian.json": "https://files.ballistica.net/cache/ba1/4e/e1/f66f6fd33be9bcc380eee870eb74", @@ -3933,26 +3933,26 @@ "assets/build/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/1c/e1/4a1a2eddda2f4aebd5f8b64ab08e", "assets/build/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/50/8d/bc2600ac9491f1b14d659709451f", "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/7e/0c/4811e0c88609ad03a93031e04418", + "build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/16/1e/da5d1a1c78606accf3c4439338ad", "build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/74/1d/fc9e33e565475daaac80da5252f0", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/db/c2/8c9536f275e5271f1c21eeb3923b", - "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c7/4b/8377ba9cd31626637a6804716eda", - "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/be/08/4070595cdc3acae7ae3a13cc64a5", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/14/e7/3bdf7ab648128852e274b7bea0c6", + "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f3/a9/653c04b445c010dab03ab20cbb66", + "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/d2/7b/5483d27ccb29d9e0c96652242c40", "build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9c/7b/ac1a200be0f37078af0991faca3b", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/33/63/382b5d03b6859de55c252e1bc53f", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5a/90/b6ff7f753011448bd1ef10f98525", - "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a1/a6/59d250814162a6277d828c910fb2", - "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/be/2d/6f7814c61e2cdf64196badcc66ff", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/3d/7f/d4a740b66e707e7ce5777e1e6d05", - "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/95/8c/bb66f5c95dfad4d1e065a1c6ec65", - "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/92/f1/a5e76f90c630e2b0353ab17403e6", - "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ee/12/6e765384e0bdc251c83f49d8f4be", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ba/e0/65c4d633bcb6b2108ede1b318a10", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a1/09/37cae1308d189851acc4f4be7e1b", - "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/6c/cb/5b24a85c69eb42f42a1855bfb45b", - "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/46/dc/dfbc5d0bace55610f9a5bccd48bc", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/ac/98/e1116b5b7adbed6309b21baf796d", - "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/3e/21/ce34c716ff3b0c286312fb84a3eb", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a3/06/627d11dcc80f829ea784f20967ba", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a5/22/469309e4c387e0e03e3c22a23bca", + "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/14/74/db5af0a68b77d99668dd19a0dbf0", + "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/e4/1c/fbfd48da2029a8fbbf9089a7602c", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ab/68/0c3ddedc76ac4b22c5ef8a120fb9", + "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a9/8f/87f6795a951c3d659fbeb7e3894b", + "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/1e/84/dde3f07fc30f810b304dc1326dc7", + "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/89/d9/81113dc9a0989e06e7d11ee83e84", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ac/47/05be30983f510cdbe078b594be38", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f9/ea/8a9378ce519e466e9c478b07c116", + "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/62/5d/2e758624968b13f53c006fcaab5a", + "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/58/00/038c9a4d0cf2de4ee5358e0dad24", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/83/52/9e8381520466236ea823faf5e1ec", + "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/1e/48/3c42aa5f72286b00c8dc42f801a9", "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/17/8a/3e4eec6be82a7d51ec68c2cd9134", "build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/18/27/4063e018845b61a43d3fb975dda9", "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/94/8e/b57d1b16f9a97ae6b75f6aa64d24", @@ -3969,12 +3969,12 @@ "build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d8/2e/7c67cb2046cafe06d1446851eb18", "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c1/37/421b9994eb20ec8e8f5c9d9af098", "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/38/fb/b4547e1d925e49887df4a8eb23f1", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/d5/32/8ac16267f62d737032137203e4d1", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/02/16/0ef1ac2956df722d8988cb48711f", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/7c/36/84039cc97f3de9fcb67f88c26be6", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/e9/e7/eeafe83124ac7993ebd103c6b344", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/cc/3e/3ecd83648c37d88b2d0462188249", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/66/64/51fbbd98c6ea8907247ffbb49ad1", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/74/3e/bb7d09412d0860fcb6f3240e073c", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/37/29/9e28c583bed35222d48cdd43f7c7" + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/3f/43/b5c398dd6f751f88139a44246bbe", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/90/71/ccef44d4aa0ba3d2c2ca0767326c", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/fc/78/08f92034c35cac6273d3099e9d60", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/24/df/544aa8b950901a10173da0998c8a", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/9c/97/efd19178425d7d51091e07ed638d", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/5f/bf/ea0c9d71fccb470be331195924bf", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/f7/01/1d3c0b2e08695c820c74398f9be0", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/8a/70/35f16e0cd82a398329a232059b45" } \ No newline at end of file diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml index 78b74c8e..64ea0845 100644 --- a/.idea/dictionaries/ericf.xml +++ b/.idea/dictionaries/ericf.xml @@ -724,6 +724,7 @@ f'fixme factoryclass fakemodule + fakeshake fallbacks farthestpt fback @@ -1069,6 +1070,7 @@ infilepath infos infotextcolor + infotxt inidividual initializers initialplayerinfos @@ -1114,6 +1116,7 @@ itms itmsp itunes + itunesconnectutils ival jackmorgan janktastic @@ -1166,6 +1169,7 @@ langnames langs langtarget + langutils langval larmbeast lasthash @@ -1510,6 +1514,7 @@ objname objs objt + objtoyaml objtype obval occurrances @@ -1595,6 +1600,7 @@ pcall pchild pcommand + pcommands pcstr pdataclass pedit @@ -1828,6 +1834,7 @@ rawkey rawpath rawpaths + rcade rcfile rdict rdir @@ -2523,6 +2530,7 @@ xpos xres xscl + xtweak xval xxdiff xxhdpi @@ -2536,6 +2544,7 @@ ypos yres yscl + ytweak yval zaggy zimbot diff --git a/assets/src/ba_data/python/ba/_input.py b/assets/src/ba_data/python/ba/_input.py index 533ebe87..bd318cac 100644 --- a/assets/src/ba_data/python/ba/_input.py +++ b/assets/src/ba_data/python/ba/_input.py @@ -29,6 +29,27 @@ def get_device_value(device: ba.InputDevice, name: str) -> Any: subplatform = app.subplatform appconfig = _ba.app.config + # iiRcade: hard-code for a/b/c/x for now... + if _ba.app.iircade_mode: + return { + 'triggerRun2': 19, + 'unassignedButtonsRun': False, + 'buttonPickUp': 100, + 'buttonBomb': 98, + 'buttonJump': 97, + 'buttonStart': 83, + 'buttonStart2': 109, + 'buttonPunch': 99, + 'buttonRun2': 102, + 'buttonRun1': 101, + 'triggerRun1': 18, + 'buttonLeft': 22, + 'buttonRight': 23, + 'buttonUp': 20, + 'buttonDown': 21, + 'buttonVRReorient': 110 + }.get(name, -1) + # If there's an entry in our config for this controller, use it. if 'Controllers' in appconfig: ccfgs = appconfig['Controllers'] diff --git a/assets/src/ba_data/python/ba/_tips.py b/assets/src/ba_data/python/ba/_tips.py index a6c04c74..7a2501d5 100644 --- a/assets/src/ba_data/python/ba/_tips.py +++ b/assets/src/ba_data/python/ba/_tips.py @@ -71,18 +71,20 @@ def get_all_tips() -> List[str]: ('You can judge when a bomb is going to explode based on the\n' 'color of sparks from its fuse: yellow..orange..red..BOOM.'), ] - tips += [ - 'If your framerate is choppy, try turning down resolution\nor ' - 'visuals in the game\'s graphics settings.' - ] app = _ba.app - if app.platform in ('android', 'ios') and not app.on_tv: + if not app.iircade_mode: + tips += [ + 'If your framerate is choppy, try turning down resolution\nor ' + 'visuals in the game\'s graphics settings.' + ] + if (app.platform in ('android', 'ios') and not app.on_tv + and not app.iircade_mode): tips += [ ('If your device gets too warm or you\'d like to conserve ' 'battery power,\nturn down "Visuals" or "Resolution" ' 'in Settings->Graphics'), ] - if app.platform in ['mac', 'android']: + if app.platform in ['mac', 'android'] and not app.iircade_mode: tips += [ 'Tired of the soundtrack? Replace it with your own!' '\nSee Settings->Audio->Soundtrack' @@ -90,7 +92,7 @@ def get_all_tips() -> List[str]: # Hot-plugging is currently only on some platforms. # FIXME: Should add a platform entry for this so don't forget to update it. - if app.platform in ['mac', 'android', 'windows']: + if app.platform in ['mac', 'android', 'windows'] and not app.iircade_mode: tips += [ 'Players can join and leave in the middle of most games,\n' 'and you can also plug and unplug controllers on the fly.', diff --git a/assets/src/ba_data/python/bastd/actor/controlsguide.py b/assets/src/ba_data/python/bastd/actor/controlsguide.py index 8f284a2d..db0d8cee 100644 --- a/assets/src/ba_data/python/bastd/actor/controlsguide.py +++ b/assets/src/ba_data/python/bastd/actor/controlsguide.py @@ -57,6 +57,34 @@ class ControlsGuide(ba.Actor): self._update_timer: Optional[ba.Timer] = None self._title_text: Optional[ba.Node] clr: Sequence[float] + extra_pos_1: Optional[Tuple[float, float]] + extra_pos_2: Optional[Tuple[float, float]] + if ba.app.iircade_mode: + xtweak = 0.2 + ytweak = 0.2 + jump_pos = (position[0] + offs * (-1.2 + xtweak), + position[1] + offs * (0.1 + ytweak)) + bomb_pos = (position[0] + offs * (0.0 + xtweak), + position[1] + offs * (0.5 + ytweak)) + punch_pos = (position[0] + offs * (1.2 + xtweak), + position[1] + offs * (0.5 + ytweak)) + + pickup_pos = (position[0] + offs * (-1.4 + xtweak), + position[1] + offs * (-1.2 + ytweak)) + extra_pos_1 = (position[0] + offs * (-0.2 + xtweak), + position[1] + offs * (-0.8 + ytweak)) + extra_pos_2 = (position[0] + offs * (1.0 + xtweak), + position[1] + offs * (-0.8 + ytweak)) + self._force_hide_button_names = True + else: + punch_pos = (position[0] - offs * 1.1, position[1]) + jump_pos = (position[0], position[1] - offs) + bomb_pos = (position[0] + offs * 1.1, position[1]) + pickup_pos = (position[0], position[1] + offs) + extra_pos_1 = None + extra_pos_2 = None + self._force_hide_button_names = False + if show_title: self._title_text_pos_top = (position[0], position[1] + 139.0 * scale) @@ -79,7 +107,7 @@ class ControlsGuide(ba.Actor): }) else: self._title_text = None - pos = (position[0], position[1] - offs) + pos = jump_pos clr = (0.4, 1, 0.4) self._jump_image = ba.newnode( 'image', @@ -104,8 +132,8 @@ class ControlsGuide(ba.Actor): 'position': (pos[0], pos[1] - offs5), 'color': clr }) - pos = (position[0] - offs * 1.1, position[1]) clr = (0.2, 0.6, 1) if ouya else (1, 0.7, 0.3) + pos = punch_pos self._punch_image = ba.newnode( 'image', attrs={ @@ -129,7 +157,7 @@ class ControlsGuide(ba.Actor): 'position': (pos[0], pos[1] - offs5), 'color': clr }) - pos = (position[0] + offs * 1.1, position[1]) + pos = bomb_pos clr = (1, 0.3, 0.3) self._bomb_image = ba.newnode( 'image', @@ -154,7 +182,7 @@ class ControlsGuide(ba.Actor): 'position': (pos[0], pos[1] - offs5), 'color': clr }) - pos = (position[0], position[1] + offs) + pos = pickup_pos clr = (1, 0.8, 0.3) if ouya else (0.8, 0.5, 1) self._pickup_image = ba.newnode( 'image', @@ -208,6 +236,36 @@ class ControlsGuide(ba.Actor): 'h_align': 'center', 'color': clr }) + + if extra_pos_1 is not None: + self._extra_image_1: Optional[ba.Node] = ba.newnode( + 'image', + attrs={ + 'texture': ba.gettexture('nub'), + 'absolute_scale': True, + 'host_only': True, + 'vr_depth': 10, + 'position': extra_pos_1, + 'scale': (image_size, image_size), + 'color': (0.5, 0.5, 0.5) + }) + else: + self._extra_image_1 = None + if extra_pos_2 is not None: + self._extra_image_2: Optional[ba.Node] = ba.newnode( + 'image', + attrs={ + 'texture': ba.gettexture('nub'), + 'absolute_scale': True, + 'host_only': True, + 'vr_depth': 10, + 'position': extra_pos_2, + 'scale': (image_size, image_size), + 'color': (0.5, 0.5, 0.5) + }) + else: + self._extra_image_2 = None + self._nodes = [ self._bomb_image, self._bomb_text, self._punch_image, self._punch_text, self._jump_image, self._jump_text, @@ -217,6 +275,10 @@ class ControlsGuide(ba.Actor): if show_title: assert self._title_text self._nodes.append(self._title_text) + if self._extra_image_1 is not None: + self._nodes.append(self._extra_image_1) + if self._extra_image_2 is not None: + self._nodes.append(self._extra_image_2) # Start everything invisible. for node in self._nodes: @@ -408,6 +470,12 @@ class ControlsGuide(ba.Actor): ('${D}', down_text), ('${R}', right_text), ('${RUN}', run_text)]) + if self._force_hide_button_names: + jump_button_names.clear() + punch_button_names.clear() + bomb_button_names.clear() + pickup_button_names.clear() + self._run_text.text = run_text w_text: Union[ba.Lstr, str] if only_remote and self._lifespan is None: diff --git a/assets/src/ba_data/python/bastd/ui/helpui.py b/assets/src/ba_data/python/bastd/ui/helpui.py index b49e51c8..2fda7f8a 100644 --- a/assets/src/ba_data/python/bastd/ui/helpui.py +++ b/assets/src/ba_data/python/bastd/ui/helpui.py @@ -301,17 +301,20 @@ class HelpWindow(ba.Window): maxwidth=100, text=txt, h_align='right', - color=header, v_align='center', + color=header, flatness=1.0) txt_scale = 0.7 if not app.vr_mode: - txt = ba.Lstr(resource=self._r + '.controllersInfoText', - subs=[('${APP_NAME}', - ba.Lstr(resource='titleText')), - ('${REMOTE_APP_NAME}', - get_remote_app_name())]).evaluate() + infotxt = ('.controllersInfoTextRemoteOnly' + if app.iircade_mode else '.controllersInfoText') + txt = ba.Lstr( + resource=self._r + infotxt, + fallback_resource=self._r + '.controllersInfoText', + subs=[('${APP_NAME}', ba.Lstr(resource='titleText')), + ('${REMOTE_APP_NAME}', get_remote_app_name()) + ]).evaluate() else: txt = ba.Lstr(resource=self._r + '.devicesInfoText', subs=[('${APP_NAME}', diff --git a/ballisticacore-cmake/.idea/dictionaries/ericf.xml b/ballisticacore-cmake/.idea/dictionaries/ericf.xml index 8f3bef90..02fb99ab 100644 --- a/ballisticacore-cmake/.idea/dictionaries/ericf.xml +++ b/ballisticacore-cmake/.idea/dictionaries/ericf.xml @@ -331,6 +331,7 @@ extrascale exts facepts + fakeshake farval fastdot fastldlt @@ -485,6 +486,7 @@ imagewidget incentivized inet + infotxt inides initguid inittab @@ -511,6 +513,7 @@ itri itsclass itunes + itunesconnectutils ival ivals ized @@ -537,6 +540,7 @@ kronk kwds kxyz + langutils lantinga largeish larmbeast @@ -688,6 +692,7 @@ nyffenegger objexists objid + objtoyaml obstack obvs oculus @@ -733,6 +738,7 @@ parameteriv passcode pausable + pcommands pdataclass pdst persp @@ -819,6 +825,7 @@ raspbian rasterizer rawkey + rcade reaaaly readset realloc @@ -1127,6 +1134,7 @@ xmin xmmintrin xoffset + xtweak yclamped ydiff ydist @@ -1134,6 +1142,7 @@ ymin yoffs yooooooo + ytweak zmax zmin zoffset diff --git a/docs/ba_module.md b/docs/ba_module.md index faec8050..2ba1a5fa 100644 --- a/docs/ba_module.md +++ b/docs/ba_module.md @@ -1,5 +1,5 @@ -

last updated on 2021-06-10 for Ballistica version 1.6.4 build 20377

+

last updated on 2021-06-11 for Ballistica version 1.6.4 build 20378

This page documents the Python classes and functions in the 'ba' module, which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please let me know. Happy modding!


diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc index 48408c03..c9b23b50 100644 --- a/src/ballistica/ballistica.cc +++ b/src/ballistica/ballistica.cc @@ -21,7 +21,7 @@ namespace ballistica { // These are set automatically via script; don't modify them here. -const int kAppBuildNumber = 20377; +const int kAppBuildNumber = 20378; const char* kAppVersion = "1.6.4"; // Our standalone globals. diff --git a/src/ballistica/input/device/joystick.cc b/src/ballistica/input/device/joystick.cc index 0df029d6..c8b1f75d 100644 --- a/src/ballistica/input/device/joystick.cc +++ b/src/ballistica/input/device/joystick.cc @@ -205,10 +205,14 @@ auto Joystick::GetButtonName(int index) -> std::string { return "Dpad Right"; case 21: return "Dpad Down"; + case 102: + return "Z"; case 101: return "Y"; case 100: return "X"; + case 99: + return "C"; case 98: return "B"; case 97: diff --git a/tools/batools/build.py b/tools/batools/build.py index 48cb0ca9..0b70e819 100644 --- a/tools/batools/build.py +++ b/tools/batools/build.py @@ -5,11 +5,11 @@ from __future__ import annotations import os import sys -from enum import Enum import datetime -from dataclasses import dataclass import subprocess +from enum import Enum from pathlib import Path +from dataclasses import dataclass from typing import TYPE_CHECKING from efro.error import CleanError @@ -32,7 +32,7 @@ class PipRequirement: # entries; this accounts for manual installations or other nonstandard setups. PIP_REQUIREMENTS = [ PipRequirement(modulename='pylint', minversion=[2, 8, 2]), - PipRequirement(modulename='mypy', minversion=[0, 901]), + PipRequirement(modulename='mypy', minversion=[0, 902]), PipRequirement(modulename='yapf', minversion=[0, 31, 0]), PipRequirement(modulename='cpplint', minversion=[1, 5, 5]), PipRequirement(modulename='pytest', minversion=[6, 2, 4]), diff --git a/tools/batools/pcommand.py b/tools/batools/pcommand.py index 0ab3651c..b9a2eb01 100644 --- a/tools/batools/pcommand.py +++ b/tools/batools/pcommand.py @@ -1,10 +1,6 @@ # Released under the MIT License. See LICENSE for details. # -"""Standard snippets that can be pulled into project pcommand scripts. - -A snippet is a mini-program that directly takes input from stdin and does -some focused task. This module consists of ballistica-specific ones. -""" +"""A nice collection of ready-to-use pcommands for this package.""" from __future__ import annotations # Note: import as little as possible here at the module level to @@ -792,7 +788,7 @@ def update_cmake_prefab_lib() -> None: def cmake_prep_dir() -> None: - """Create a dir, recreating it when cmake/python/etc. version changes. + """Create dir & recreate when cmake/python/etc. version changes. Useful to prevent builds from breaking when cmake or other components are updated. diff --git a/tools/batools/updateproject.py b/tools/batools/updateproject.py index 0c228f4f..820fe3d3 100755 --- a/tools/batools/updateproject.py +++ b/tools/batools/updateproject.py @@ -407,10 +407,8 @@ class Updater: 'tools/devtool', 'tools/version_utils', 'tools/vmshell' ]: if not contents.startswith(f'#!/usr/bin/env python{PYVER}'): - # TEMP: allow this until ballistica.net is updated - if fname != 'tools/staging_server_upkeep': - raise CleanError(f'Incorrect shebang (first line) for ' - f'{fname}.') + raise CleanError(f'Incorrect shebang (first line) for ' + f'{fname}.') else: copyrightline = 0