crimsonland 0.1.0.dev7__py3-none-any.whl → 0.1.0.dev9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,9 +6,11 @@ import random
6
6
  import pyray as rl
7
7
 
8
8
  from grim.audio import AudioState, shutdown_audio, update_audio
9
+ from grim.console import ConsoleState
9
10
  from grim.fonts.small import SmallFontData, draw_small_text, load_small_font
10
11
  from grim.view import View, ViewContext
11
12
 
13
+ from ..bonuses import BONUS_TABLE, BonusId
12
14
  from ..creatures.spawn import SpawnId
13
15
  from ..game_modes import GameMode
14
16
  from ..game_world import GameWorld
@@ -36,6 +38,7 @@ UI_ERROR = rl.Color(240, 80, 80, 255)
36
38
 
37
39
  ARSENAL_PLAYER_MOVE_SPEED_MULTIPLIER = 6.0
38
40
  ARSENAL_PLAYER_INVULNERABLE_SHIELD_TIMER = 1e-3
41
+ ARSENAL_BONUS_RING_RADIUS = 140.0
39
42
 
40
43
  DEFAULT_SPAWN_IDS = (
41
44
  SpawnId.ZOMBIE_CONST_GREY_42,
@@ -192,6 +195,45 @@ class ArsenalDebugView:
192
195
  rand=self._world.state.rng.rand,
193
196
  )
194
197
 
198
+ def _spawn_all_bonuses(self) -> None:
199
+ player = self._player
200
+ if player is None:
201
+ return
202
+
203
+ bonus_pool = self._world.state.bonus_pool
204
+ bonus_pool.reset()
205
+
206
+ bonus_ids = [int(entry.bonus_id) for entry in BONUS_TABLE if int(entry.bonus_id) != int(BonusId.UNUSED)]
207
+ count = max(1, len(bonus_ids))
208
+
209
+ base_x = float(player.pos_x)
210
+ base_y = float(player.pos_y)
211
+ rng = self._world.state.rng.rand
212
+ current_weapon_id = int(player.weapon_id)
213
+
214
+ for idx, bonus_id in enumerate(bonus_ids):
215
+ angle = float(idx) / float(count) * math.tau
216
+ x = base_x + math.cos(angle) * float(ARSENAL_BONUS_RING_RADIUS)
217
+ y = base_y + math.sin(angle) * float(ARSENAL_BONUS_RING_RADIUS)
218
+
219
+ amount_override = -1
220
+ if bonus_id == int(BonusId.WEAPON) and self._weapon_ids:
221
+ weapon_id = int(current_weapon_id)
222
+ for _ in range(8):
223
+ weapon_id = int(self._weapon_ids[int(rng()) % len(self._weapon_ids)])
224
+ if weapon_id != current_weapon_id:
225
+ break
226
+ amount_override = int(weapon_id)
227
+
228
+ bonus_pool.spawn_at(
229
+ x,
230
+ y,
231
+ bonus_id,
232
+ duration_override=int(amount_override),
233
+ world_width=float(WORLD_SIZE),
234
+ world_height=float(WORLD_SIZE),
235
+ )
236
+
195
237
  def _handle_debug_input(self) -> None:
196
238
  if rl.is_key_pressed(rl.KeyboardKey.KEY_ESCAPE):
197
239
  self.close_requested = True
@@ -209,6 +251,9 @@ class ArsenalDebugView:
209
251
  if rl.is_key_pressed(rl.KeyboardKey.KEY_T):
210
252
  self._reset_creatures()
211
253
 
254
+ if rl.is_key_pressed(rl.KeyboardKey.KEY_B):
255
+ self._spawn_all_bonuses()
256
+
212
257
  if rl.is_key_pressed(rl.KeyboardKey.KEY_BACKSPACE):
213
258
  self._reset_scene()
214
259
 
@@ -387,7 +432,7 @@ class ArsenalDebugView:
387
432
 
388
433
  y += 6.0
389
434
  self._draw_ui_text(
390
- "WASD move LMB fire R reload [/] cycle weapons Space pause T respawn Backspace reset Esc quit",
435
+ "WASD move LMB fire R reload [/] cycle weapons Space pause T respawn B spawn all bonuses Backspace reset Esc quit",
391
436
  x,
392
437
  y,
393
438
  UI_HINT,
crimson/views/player.py CHANGED
@@ -206,7 +206,7 @@ class PlayerSandboxView:
206
206
  self._player.shield_timer = 0.0
207
207
  self._player.speed_bonus_timer = 0.0
208
208
  self._player.fire_bullets_timer = 0.0
209
- bonus_hud_update(self._state, [self._player])
209
+ bonus_hud_update(self._state, [self._player], dt=0.0)
210
210
 
211
211
  def _camera_world_to_screen(self, x: float, y: float) -> tuple[float, float]:
212
212
  return self._camera_x + x, self._camera_y + y
@@ -308,7 +308,7 @@ class PlayerSandboxView:
308
308
  input_state = self._build_input()
309
309
  player_update(self._player, input_state, dt, self._state, world_size=WORLD_SIZE)
310
310
 
311
- bonus_hud_update(self._state, [self._player])
311
+ bonus_hud_update(self._state, [self._player], dt=dt)
312
312
  self._update_camera(dt)
313
313
 
314
314
  def draw(self) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: crimsonland
3
- Version: 0.1.0.dev7
3
+ Version: 0.1.0.dev9
4
4
  Requires-Dist: construct>=2.10.70
5
5
  Requires-Dist: pillow>=12.1.0
6
6
  Requires-Dist: platformdirs>=4.5.1
@@ -7,7 +7,7 @@ crimson/camera.py,sha256=VxTNXTh0qHh5VR1OpkiXr-QcgEWPrWw0A3PFyQFqDkY,2278
7
7
  crimson/cli.py,sha256=Pu4RM_bjGtUgIE_5zZs0uWFY9O8YkhJDseRcVMMPJ8k,14595
8
8
  crimson/creatures/__init__.py,sha256=RJwwR_w98zC_kHF9CwkhzSlf0xjpiP0JU87W4awdAAM,233
9
9
  crimson/creatures/ai.py,sha256=oCuUkDe6Kxya1dThUthEy8GIuObAUjDv8WPfe17HYV4,6353
10
- crimson/creatures/anim.py,sha256=E7MAR9vFBrvmIYrOfPr36UohsfROZZL00jgRvZQf6nc,4971
10
+ crimson/creatures/anim.py,sha256=k_jEpyfwFcJSC9jY2xuhuxtQ8KvE6fSeuRSBLTTAxWo,5016
11
11
  crimson/creatures/damage.py,sha256=pjKIX32nGDVPnFaWCce0LNZ-UZXZqJpNvwHwq-DCWbE,3211
12
12
  crimson/creatures/runtime.py,sha256=1FagJNwGWJuOXZEv4VaWak2IktNskSof82WCYJqui-U,40733
13
13
  crimson/creatures/spawn.py,sha256=ikgtr4sM2KdA2-eyxYdVmobcuZN6aA7xK7ceaIl7RSw,90059
@@ -28,18 +28,18 @@ crimson/frontend/panels/options.py,sha256=0oBAGs9_nnP_H_JRa2hHZ6o-NaaavnuyzTSmeQ
28
28
  crimson/frontend/panels/play_game.py,sha256=_Tqw-vFVzgDUd-H1Q8txyw-sTSZKCEDf3aU0Iw9B26I,24299
29
29
  crimson/frontend/panels/stats.py,sha256=jtIRRfffR4u_q6ayLvwCZ6u2YDdFC6Ei_ytQbxY-Bpo,12713
30
30
  crimson/frontend/transitions.py,sha256=-sAJUDqNZ943zXlqtvJ6jCg2YH8dSi8k7qK8caAfOKI,883
31
- crimson/game.py,sha256=_nPXvZDgu2sqEPk00ww9qx7nD8eQIXlIvU-yKfBuUA8,97537
31
+ crimson/game.py,sha256=6rIXJkYO5FL_z-fDZKTdDfJrb4fkKfWSaaxphUros2c,97712
32
32
  crimson/game_modes.py,sha256=qW7Tt97lSBmGrt0F17Ni5h8vRyngBzyS9XwWM1TFIEI,255
33
33
  crimson/game_world.py,sha256=nfKGcm3LHChPGLHJsurDFAATrHmhRvTmgxcLzUN9m5I,25440
34
- crimson/gameplay.py,sha256=M4ZymFV7WNF7C8zjQN179TNILDNVccfREZeymbuHD4A,89098
34
+ crimson/gameplay.py,sha256=xL1ZKQVRVn_nQ-c7Y_Qj-ggv22Je_By7gX_qbPg0VsY,90027
35
35
  crimson/input_codes.py,sha256=PmSWFZIit8unTBWk3uwifpHWMuk0qMg1ueKX3MGC7D0,5379
36
36
  crimson/modes/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
37
- crimson/modes/base_gameplay_mode.py,sha256=kmXJxkGnCKV5QZL_y5ML7r-p4bw7hMswKseG9XUn2jo,7555
38
- crimson/modes/quest_mode.py,sha256=hcq_n3Vi9CtED899ELi5JZKZWXWvzmDcIBBerVExz7w,19153
39
- crimson/modes/rush_mode.py,sha256=ZspTGjLIyjxXtP9lbEFXQJv_PQEyj52xTNicNEfRSBk,10932
40
- crimson/modes/survival_mode.py,sha256=kuY8s1wDWOII2wE4JfMmSB4_4kbkRxzOYeMbcJebELM,32691
41
- crimson/modes/tutorial_mode.py,sha256=fVYPSZbAsUARI95QP3GamPRMf-v6ix5SKfCoa_0nfAY,26422
42
- crimson/modes/typo_mode.py,sha256=JoiOqGjft922ZtjOzFpLeIy1hv35N7eHO-nsWVlSooY,17396
37
+ crimson/modes/base_gameplay_mode.py,sha256=dZwKv6qO0GGVEaUP8fNXNsKdvOko1N-2sQA2U8R2fDA,10092
38
+ crimson/modes/quest_mode.py,sha256=OFesQwloI9pP4pJv72U7U2GoCC6WQ5eTic8aioeW4_A,37942
39
+ crimson/modes/rush_mode.py,sha256=nioU1SvnezINEQM7GbhOy49hYmxDjmplFD-mp78zvdw,11438
40
+ crimson/modes/survival_mode.py,sha256=-bLq36_UlWo9m4oFI_l4VwtrWlHH84Egkt1wnFMvD1Y,33295
41
+ crimson/modes/tutorial_mode.py,sha256=Sbd_xUsffoyBsx1Er7UQ-wAPEp6LIoKsntFuPBeoOs4,26991
42
+ crimson/modes/typo_mode.py,sha256=cz7bVcevpuQPqtygtUva3-Z5i_fWVVmFDtUmLmfDNJU,17868
43
43
  crimson/paths.py,sha256=JCKauCxHJnP4IIy5ocgs6tvbaSMkMUByQ76Zoz2UGZM,653
44
44
  crimson/perks.py,sha256=JHNhKPOUq2w8h23gU7jpkx-erFKTO4Z8l8aHU8vrkO0,37068
45
45
  crimson/persistence/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
@@ -61,7 +61,7 @@ crimson/quests/timeline.py,sha256=leK898fPt3zq52v-O6dK4c-wJBcY-E6v-y57Fk3kJ3Q,40
61
61
  crimson/quests/types.py,sha256=iSrz8VSiRZh1pUDSyq37ir7B28c0HF8DjdF6OJ3FoBo,1772
62
62
  crimson/render/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
63
63
  crimson/render/terrain_fx.py,sha256=MpBV6ukGwGqDluIO86BQhHRVWUvcFOi8MV-z_TfLsiw,2705
64
- crimson/render/world_renderer.py,sha256=9Gq2uya5duQAv4ievnqbGjJ2kXSAohVUwC36poDAp8M,88852
64
+ crimson/render/world_renderer.py,sha256=6NCNGJScrULtIQQiHfweBj5y1eEpYttiiuJmXkLM_rY,88655
65
65
  crimson/sim/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
66
66
  crimson/sim/world_defs.py,sha256=HiMl--THnII3BTpt6mWAd20Xu-SRzCyHcs5pCR8aMbU,2195
67
67
  crimson/sim/world_state.py,sha256=h_PPaomj-1KPscPsW3zZ07tVFb3DYPM-FQq3pepMGng,15653
@@ -77,12 +77,12 @@ crimson/ui/__init__.py,sha256=0-of-3kMbUcm08RgaXNBkTaWHsqYtG0bk1b0ztpLyww,77
77
77
  crimson/ui/cursor.py,sha256=_6EJ7tnsW_Q4kPUrqBO5FInxhpHKUGGyVpDET5EG38I,2842
78
78
  crimson/ui/demo_trial_overlay.py,sha256=DugDImlPKx6DGe6gaXmA2s7dssjS6E9PMTi_3mOshx8,8724
79
79
  crimson/ui/game_over.py,sha256=hXgV0v4L9peohj2xUIipOSlY1gMRsmAPCxlToo8dj08,29610
80
- crimson/ui/hud.py,sha256=MnCBZGdI2nLMp9JOxaJBA0inErW2X7W95LtNb80vVIo,22283
80
+ crimson/ui/hud.py,sha256=sVJhh7iAmDISMAcB2AALw1tM0828mlddpAFUXJm8E8c,31123
81
81
  crimson/ui/perk_menu.py,sha256=FdbwG_B7UyZmPVdvZho0nJNvkAVc0VVHM2TSrY4eTfM,12740
82
82
  crimson/views/__init__.py,sha256=1UWCzBSsgIeOtcKxqM4Vf12JEfPHKfb9KRZgl2TB84Q,1880
83
83
  crimson/views/aim_debug.py,sha256=2ldQ1MJO8AeG0i9x4ZJ3YLyp1X-HY_nJ0E1mY8jFF7Q,10873
84
84
  crimson/views/animations.py,sha256=iI6uTpYS-lbjnpqz_ihETm5q09V6RqjO7YHqaGjovPc,10660
85
- crimson/views/arsenal_debug.py,sha256=bS_FV6ffknOgSPBcAEZFDJ8CBjWitBziWVanjwXvMfs,14130
85
+ crimson/views/arsenal_debug.py,sha256=zqwBFOCFawPeGDgSVL4OPieRWvDldEeJhExEbSZImI0,15810
86
86
  crimson/views/audio_bootstrap.py,sha256=a2qM91biyI-LlSiIhEceJ8ptYJy-xQ2-b-YjeyXWx7w,1408
87
87
  crimson/views/bonuses.py,sha256=dbGx0IBjMMpqrnuVjBUkscxHq6uErCxAkEAb3uDhFqQ,7454
88
88
  crimson/views/camera_debug.py,sha256=Vi6jANGQpXMK0bpL7hX_QQI_6Rl97ykElaoAuXd06YY,14025
@@ -97,7 +97,7 @@ crimson/views/lighting_debug.py,sha256=T9ce224ZrJtztKTSFUn1G29MY0KYuHVhNdcDU7hlr
97
97
  crimson/views/particles.py,sha256=z3nFPEyItv9aAY_RbByl-jDlwvH22fG30sIMWiaR1aM,10109
98
98
  crimson/views/perk_menu_debug.py,sha256=q4rn3R4tJASlep5jeAXwrBffj5_akJ4a4veq7FIpRiU,17831
99
99
  crimson/views/perks.py,sha256=Uac31DVvHZvjDmMrHpfvkg7LVpXw76xKL1BqwaLAsHU,15052
100
- crimson/views/player.py,sha256=cMZiFbJK_um8yAFR1pFW7Hdq4_Tl6RZmGmZk1FwAiZE,16569
100
+ crimson/views/player.py,sha256=TYcWqNyat5Sl1kU8cYRdCey5R65UaBJpGoct57Oc6qI,16584
101
101
  crimson/views/player_sprite_debug.py,sha256=DDU6kl9sfhZ2nVXzBbsPSUKdIutHf5YNs2DrNQPRb2Q,11158
102
102
  crimson/views/projectile_fx.py,sha256=pmMiXm2hJ1XeGf40VtdPk2TbVJX56aATBYTCRekYOdU,23177
103
103
  crimson/views/projectile_render_debug.py,sha256=gogOiEGT1P_5qD5rMcuxqPac3-WrPJmbJGvg6USvoxE,14347
@@ -119,7 +119,7 @@ grim/app.py,sha256=Wae-tQcpDA0mI99GRupHXoxKnC5F6xfLGxVV8KOxcx4,2702
119
119
  grim/assets.py,sha256=k2rFqNYfcUZfRjFL7r_UBGf1RlcP-urChXCUJ6GzEsI,7661
120
120
  grim/audio.py,sha256=V_TrnfrCb_0e2jeOhN7_kGBu8uMdMsFbk-REoUeWY7Q,3189
121
121
  grim/config.py,sha256=eQk_3ls_na9AiQr1yqbdyNRc2venM3_NS7Cqz75V08g,9644
122
- grim/console.py,sha256=bdhAedOwMpk9yKqwMfMoUsoLG5RQqOET6Ya0Zu2eWro,26598
122
+ grim/console.py,sha256=pqx-Vqq4OAdNrSV2RIl00X-rDf-tw2sASxcXdHYYwFQ,27371
123
123
  grim/fonts/__init__.py,sha256=yd2yLa0C-LTfjzZHpBl_AglynL3-PmPHePkulMiqLh0,81
124
124
  grim/fonts/grim_mono.py,sha256=DdTAuzGyliJF9ufI5YP039yfYYMWnJp3b6j7u9yvd8Q,3587
125
125
  grim/fonts/small.py,sha256=8Fgqhs-iejqXLyPxo2if2jqfKy9YvM2AZRTBj91M4Rs,4495
@@ -133,7 +133,7 @@ grim/sfx.py,sha256=cpn2Mmeio7BSDgbStSft-eZchO9Ot2MrK6iXJqxlLqU,7836
133
133
  grim/sfx_map.py,sha256=FM5iBzKkG30Vtu78SRavVNgXMbGK7ZFcQ8i6lgMlzVw,4697
134
134
  grim/terrain_render.py,sha256=EZ7ySYJyTZwXcrJx1mKbY3ewZtPi7Y270XnZgGJyZG8,31509
135
135
  grim/view.py,sha256=oF4pHZehBqOxPjKMU28TDg3qATh_amMIRJp-vMQnpn4,334
136
- crimsonland-0.1.0.dev7.dist-info/WHEEL,sha256=fAguSjoiATBe7TNBkJwOjyL1Tt4wwiaQGtNtjRPNMQA,80
137
- crimsonland-0.1.0.dev7.dist-info/entry_points.txt,sha256=jzzcExxiE9xpt4Iw2nbB1lwTv2Zj4H14WJTIPMkAjoE,77
138
- crimsonland-0.1.0.dev7.dist-info/METADATA,sha256=6zsYDOJkNTgz5xZz1aIWW8BhL8aEcqZFKarztRyetBw,243
139
- crimsonland-0.1.0.dev7.dist-info/RECORD,,
136
+ crimsonland-0.1.0.dev9.dist-info/WHEEL,sha256=fAguSjoiATBe7TNBkJwOjyL1Tt4wwiaQGtNtjRPNMQA,80
137
+ crimsonland-0.1.0.dev9.dist-info/entry_points.txt,sha256=jzzcExxiE9xpt4Iw2nbB1lwTv2Zj4H14WJTIPMkAjoE,77
138
+ crimsonland-0.1.0.dev9.dist-info/METADATA,sha256=OIZtL8pFrEVbZqJrzWdDTl4aipSITtUMTm25outkCIM,243
139
+ crimsonland-0.1.0.dev9.dist-info/RECORD,,
grim/console.py CHANGED
@@ -651,6 +651,20 @@ def register_boot_commands(
651
651
 
652
652
 
653
653
  def register_core_cvars(console: ConsoleState, width: int, height: int) -> None:
654
+ # Defaults match `register_core_cvars` (0x00402c00) in `crimsonland.exe`.
655
+ console.register_cvar("cv_silentloads", "1")
656
+ console.register_cvar("cv_terrainFilter", "1")
657
+ console.register_cvar("cv_bodiesFade", "1")
658
+ console.register_cvar("cv_uiTransparency", "1")
659
+ console.register_cvar("cv_uiPointFilterPanels", "0")
660
+ console.register_cvar("cv_enableMousePointAndClickMovement", "0")
661
+ console.register_cvar("cv_verbose", "0")
662
+ console.register_cvar("cv_terrainBodiesTransparency", "0")
663
+ console.register_cvar("cv_uiSmallIndicators", "0")
664
+ console.register_cvar("cv_aimEnhancementFade", "0.7")
665
+ console.register_cvar("cv_friendlyFire", "0")
666
+ console.register_cvar("cv_showFPS", "0")
667
+ console.register_cvar("cv_padAimDistMul", "96")
654
668
  console.register_cvar("v_width", str(width))
655
669
  console.register_cvar("v_height", str(height))
656
670