crimsonland 0.1.0.dev14__py3-none-any.whl → 0.1.0.dev16__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.
Files changed (73) hide show
  1. crimson/cli.py +63 -0
  2. crimson/creatures/damage.py +111 -36
  3. crimson/creatures/runtime.py +246 -156
  4. crimson/creatures/spawn.py +7 -3
  5. crimson/debug.py +9 -0
  6. crimson/demo.py +38 -45
  7. crimson/effects.py +7 -13
  8. crimson/frontend/high_scores_layout.py +81 -0
  9. crimson/frontend/panels/base.py +4 -1
  10. crimson/frontend/panels/controls.py +0 -15
  11. crimson/frontend/panels/databases.py +291 -3
  12. crimson/frontend/panels/mods.py +0 -15
  13. crimson/frontend/panels/play_game.py +0 -16
  14. crimson/game.py +689 -3
  15. crimson/gameplay.py +921 -569
  16. crimson/modes/base_gameplay_mode.py +33 -12
  17. crimson/modes/components/__init__.py +2 -0
  18. crimson/modes/components/highscore_record_builder.py +58 -0
  19. crimson/modes/components/perk_menu_controller.py +325 -0
  20. crimson/modes/quest_mode.py +94 -272
  21. crimson/modes/rush_mode.py +12 -43
  22. crimson/modes/survival_mode.py +109 -330
  23. crimson/modes/tutorial_mode.py +46 -247
  24. crimson/modes/typo_mode.py +11 -38
  25. crimson/oracle.py +396 -0
  26. crimson/perks.py +5 -2
  27. crimson/player_damage.py +95 -36
  28. crimson/projectiles.py +539 -320
  29. crimson/render/projectile_draw_registry.py +637 -0
  30. crimson/render/projectile_render_registry.py +110 -0
  31. crimson/render/secondary_projectile_draw_registry.py +206 -0
  32. crimson/render/world_renderer.py +58 -707
  33. crimson/sim/world_state.py +118 -61
  34. crimson/typo/spawns.py +5 -12
  35. crimson/ui/demo_trial_overlay.py +3 -11
  36. crimson/ui/formatting.py +24 -0
  37. crimson/ui/game_over.py +12 -58
  38. crimson/ui/hud.py +72 -39
  39. crimson/ui/layout.py +20 -0
  40. crimson/ui/perk_menu.py +9 -34
  41. crimson/ui/quest_results.py +28 -70
  42. crimson/ui/text_input.py +20 -0
  43. crimson/views/_ui_helpers.py +27 -0
  44. crimson/views/aim_debug.py +15 -32
  45. crimson/views/animations.py +18 -28
  46. crimson/views/arsenal_debug.py +22 -32
  47. crimson/views/bonuses.py +23 -36
  48. crimson/views/camera_debug.py +16 -29
  49. crimson/views/camera_shake.py +9 -33
  50. crimson/views/corpse_stamp_debug.py +13 -21
  51. crimson/views/decals_debug.py +36 -23
  52. crimson/views/fonts.py +8 -25
  53. crimson/views/ground.py +4 -21
  54. crimson/views/lighting_debug.py +42 -45
  55. crimson/views/particles.py +33 -42
  56. crimson/views/perk_menu_debug.py +3 -10
  57. crimson/views/player.py +50 -44
  58. crimson/views/player_sprite_debug.py +24 -31
  59. crimson/views/projectile_fx.py +57 -52
  60. crimson/views/projectile_render_debug.py +24 -33
  61. crimson/views/projectiles.py +24 -37
  62. crimson/views/spawn_plan.py +13 -29
  63. crimson/views/sprites.py +14 -29
  64. crimson/views/terrain.py +6 -23
  65. crimson/views/ui.py +7 -24
  66. crimson/views/wicons.py +28 -33
  67. {crimsonland-0.1.0.dev14.dist-info → crimsonland-0.1.0.dev16.dist-info}/METADATA +1 -1
  68. {crimsonland-0.1.0.dev14.dist-info → crimsonland-0.1.0.dev16.dist-info}/RECORD +73 -62
  69. {crimsonland-0.1.0.dev14.dist-info → crimsonland-0.1.0.dev16.dist-info}/WHEEL +1 -1
  70. grim/config.py +29 -1
  71. grim/console.py +7 -10
  72. grim/math.py +12 -0
  73. {crimsonland-0.1.0.dev14.dist-info → crimsonland-0.1.0.dev16.dist-info}/entry_points.txt +0 -0
grim/console.py CHANGED
@@ -8,6 +8,7 @@ import math
8
8
  import pyray as rl
9
9
 
10
10
  from . import paq
11
+ from grim.math import clamp
11
12
  from grim.fonts.grim_mono import (
12
13
  GrimMonoFont,
13
14
  draw_grim_mono_text,
@@ -121,16 +122,12 @@ def _load_script_from_paq(console: "ConsoleState", target: Path) -> str | None:
121
122
  return None
122
123
 
123
124
 
124
- def _clamp(value: float, low: float, high: float) -> float:
125
- return max(low, min(high, value))
126
-
127
-
128
125
  def _rgba(r: float, g: float, b: float, a: float) -> rl.Color:
129
126
  return rl.Color(
130
- int(_clamp(r, 0.0, 1.0) * 255),
131
- int(_clamp(g, 0.0, 1.0) * 255),
132
- int(_clamp(b, 0.0, 1.0) * 255),
133
- int(_clamp(a, 0.0, 1.0) * 255),
127
+ int(clamp(r, 0.0, 1.0) * 255),
128
+ int(clamp(g, 0.0, 1.0) * 255),
129
+ int(clamp(b, 0.0, 1.0) * 255),
130
+ int(clamp(a, 0.0, 1.0) * 255),
134
131
  )
135
132
 
136
133
 
@@ -518,12 +515,12 @@ class ConsoleState:
518
515
  def _open_ratio(self, height: float) -> float:
519
516
  if height <= 0.0:
520
517
  return 0.0
521
- return _clamp((height + self._offset_y) / height, 0.0, 1.0)
518
+ return clamp((height + self._offset_y) / height, 0.0, 1.0)
522
519
 
523
520
  def _caret_blink_alpha(self) -> float:
524
521
  pulse = math.sin(self._blink_time * CONSOLE_BLINK_SPEED)
525
522
  value = max(0.2, abs(pulse) ** 2)
526
- return _clamp(value, 0.0, 1.0)
523
+ return clamp(value, 0.0, 1.0)
527
524
 
528
525
  def _use_mono_font(self) -> bool:
529
526
  cvar = self.cvars.get("con_monoFont")
grim/math.py CHANGED
@@ -1,5 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import math
4
+
3
5
 
4
6
  def clamp(value: float, low: float, high: float) -> float:
5
7
  if value < low:
@@ -15,3 +17,13 @@ def clamp01(value: float) -> float:
15
17
 
16
18
  def lerp(a: float, b: float, t: float) -> float:
17
19
  return a + (b - a) * t
20
+
21
+
22
+ def distance_sq(x0: float, y0: float, x1: float, y1: float) -> float:
23
+ dx = float(x1) - float(x0)
24
+ dy = float(y1) - float(y0)
25
+ return dx * dx + dy * dy
26
+
27
+
28
+ def distance(x0: float, y0: float, x1: float, y1: float) -> float:
29
+ return math.sqrt(distance_sq(x0, y0, x1, y1))