feat: 5x5 entity (27 bodies), terminal viewport up to 250x120

- Entity: 5x5 grid body + 2-cell arm = 27 sub-bodies, radius 0.5
- Terminal: default 200x60, max 250x120 (was 250x80)
- 31 constraints (full grid + arm)
- Spawn height adjusted for 5-tall body
This commit is contained in:
Emil
2026-06-20 21:43:50 +03:00
parent 595edc3006
commit a731d5cbb7
4 changed files with 155 additions and 148 deletions
+118 -118
View File
@@ -1,10 +1,12 @@
=== Verbatim Headless Run: 20 ticks === === Verbatim Headless Run: 20 ticks ===
World: 250x250 World: 250x250
Player start: (125.0, 244.0) Player start: (125.0, 242.0)
Camera: (85, 232) Camera: (85, 230)
=== Tick 0 (initial state) === === Tick 0 (initial state) ===
30
31
32 32
33 33
34 34
@@ -13,12 +15,12 @@ Camera: (85, 232)
37 37
38 38
39 39
40 40 @@@@@
41 41 @@@@@@
42 42 @@@@@@
43 @@@ """"""""""""" 43 @@@@@ """""""""""""
44""" @@@@ "":::::::::::::""" 44""" @@@@@ "":::::::::::::"""
45:::""" @@@ """::::::::::::::::::"" 45:::""" """::::::::::::::::::""
46::::::"" "":::::::::::::::::::::::""" 46::::::"" "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""" 47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -28,12 +30,12 @@ Camera: (85, 232)
52???????????????????????????????????????????????????????????????????????????????? 52????????????????????????????????????????????????????????????????????????????????
53???????????????????????????????????????????????????????????????????????????????? 53????????????????????????????????????????????????????????????????????????????????
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(125.0,242.0) bodies=27/27 on_fire=false"
56????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,244.0) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
=== Tick 2 === === Tick 2 ===
30
31
32 32
33 33
34 34
@@ -42,12 +44,12 @@ Entities: 1
37 37
38 38
39 39
40 40 @@@@@
41 41 @@@@@@
42 42 @@@@@@
43 @@@ """"""""""""" 43 @@@@@ """""""""""""
44""" @@@@ "":::::::::::::""" 44""" @@@@@ "":::::::::::::"""
45:::""" @@@ """::::::::::::::::::"" 45:::""" """::::::::::::::::::""
46::::::"" "":::::::::::::::::::::::""" 46::::::"" "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""" 47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -57,13 +59,13 @@ Entities: 1
52???????????????????????????????????????????????????????????????????????????????? 52????????????????????????????????????????????????????????????????????????????????
53???????????????????????????????????????????????????????????????????????????????? 53????????????????????????????????????????????????????????????????????????????????
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(125.0,242.1) bodies=27/27 on_fire=false"
56????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,244.1) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(125.0, 244.11879)) Alive entities: Player(hp=100, pos=(125.0, 242.11879))
=== Tick 4 === === Tick 4 ===
30
31
32 32
33 33
34 34
@@ -72,12 +74,12 @@ Alive entities: Player(hp=100, pos=(125.0, 244.11879))
37 37
38 38
39 39
40 40 @@@@@
41 41 @@@@@@
42 42 @@@@@@
43 @@@ """"""""""""" 43 @@@@@ """""""""""""
44""" @@@@ "":::::::::::::""" 44""" @@@@@ "":::::::::::::"""
45:::""" @@@ """::::::::::::::::::"" 45:::""" """::::::::::::::::::""
46::::::"" "":::::::::::::::::::::::""" 46::::::"" "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""" 47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -87,13 +89,42 @@ Alive entities: Player(hp=100, pos=(125.0, 244.11879))
52???????????????????????????????????????????????????????????????????????????????? 52????????????????????????????????????????????????????????????????????????????????
53???????????????????????????????????????????????????????????????????????????????? 53????????????????????????????????????????????????????????????????????????????????
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(125.0,242.4) bodies=27/27 on_fire=false"
56????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,244.4) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(125.0, 244.38817)) Alive entities: Player(hp=100, pos=(125.0, 242.38817))
=== Tick 6 === === Tick 6 ===
30
31
32
33
34
35
36
37
38
39
40 @@@@@
41 @@@@@@
42 @@@@@@
43 @@@@@ """""""""""""
44""" @@@@@ "":::::::::::::"""
45:::""" """::::::::::::::::::""
46::::::"" "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,242.8) bodies=27/27 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(125.0, 242.79922))
=== Tick 8 ===
31
32 32
33 33
34 34
@@ -103,11 +134,11 @@ Alive entities: Player(hp=100, pos=(125.0, 244.38817))
38 38
39 39
40 40
41 41 @@@@@
42 42 @@@@@@
43 @@@ """"""""""""" 43 @@@@@@ """""""""""""
44""" @@@@ "":::::::::::::""" 44""" @@@@@ "":::::::::::::"""
45:::""" @@@ """::::::::::::::::::"" 45:::""" @@@@@ """::::::::::::::::::""
46::::::"" "":::::::::::::::::::::::""" 46::::::"" "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""" 47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -118,42 +149,12 @@ Alive entities: Player(hp=100, pos=(125.0, 244.38817))
53???????????????????????????????????????????????????????????????????????????????? 53????????????????????????????????????????????????????????????????????????????????
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? 55????????????????????????????????????????????????????????????????????????????????
56???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(125.0,243.3) bodies=27/27 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(125.0,244.8) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(125.0, 244.79922)) Alive entities: Player(hp=100, pos=(125.0, 243.3436))
=== Tick 8 ===
33
34
35
36
37
38
39
40
41
42
43 """""""""""""
44""" @@@ "":::::::::::::"""
45:::""" @@@@ """::::::::::::::::::""
46::::::"" @@@ "":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################
50????????????????????????????????????????????????????????????????????????????????
51????????????????????????????????????????????????????????????????????????????????
52????????????????????????????????????????????????????????????????????????????????
53????????????????????????????????????????????????????????????????????????????????
54????????????????????????????????????????????????????????????????????????????????
55????????????????????????????????????????????????????????????????????????????????
56????????????????????????????????????????????????????????????????????????????????
57????????????????????????????????????????????????????????????????????????????????
Player: "Player hp=100.0/100.0 pos=(125.0,245.3) bodies=10/10 on_fire=false"
Entities: 1
Alive entities: Player(hp=100, pos=(125.0, 245.3436))
=== Tick 10 === === Tick 10 ===
32
33 33
34 34
35 35
@@ -163,11 +164,11 @@ Alive entities: Player(hp=100, pos=(125.0, 245.3436))
39 39
40 40
41 41
42 42 @@@@@
43 """"""""""""" 43 @@@@@@ """""""""""""
44""" @@@ "":::::::::::::""" 44""" @@@@@@ "":::::::::::::"""
45:::""" @@@@ """::::::::::::::::::"" 45:::""" @@@@@ """::::::::::::::::::""
46::::::"" @@@ "":::::::::::::::::::::::""" 46::::::"" @@@@@"":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""" 47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################ 49################################################################################
@@ -178,12 +179,12 @@ Alive entities: Player(hp=100, pos=(125.0, 245.3436))
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? 55????????????????????????????????????????????????????????????????????????????????
56???????????????????????????????????????????????????????????????????????????????? 56????????????????????????????????????????????????????????????????????????????????
57???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(125.0,244.0) bodies=27/27 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(125.0, 245.55)) Alive entities: Player(hp=100, pos=(125.0, 244.01338))
=== Tick 12 === === Tick 12 ===
32
33 33
34 34
35 35
@@ -193,11 +194,11 @@ Alive entities: Player(hp=100, pos=(125.0, 245.55))
39 39
40 40
41 41
42 42 @@@@@
43 """"""""""""" 43 @@@@@@ """""""""""""
44""" @@@ "":::::::::::::""" 44""" @@@@@@ "":::::::::::::"""
45:::""" @@@@ """::::::::::::::::::"" 45:::""" @@@@@ """::::::::::::::::::""
46::::::"" @@@ "":::::::::::::::::::::::""" 46::::::"" @@@@@"":::::::::::::::::::::::"""
47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""" 47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################ 49################################################################################
@@ -208,12 +209,12 @@ Alive entities: Player(hp=100, pos=(125.0, 245.55))
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? 55????????????????????????????????????????????????????????????????????????????????
56???????????????????????????????????????????????????????????????????????????????? 56????????????????????????????????????????????????????????????????????????????????
57???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(125.0,244.5) bodies=27/27 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(125.0,245.6) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(125.0, 245.55)) Alive entities: Player(hp=100, pos=(125.0, 244.5))
=== Tick 14 === === Tick 14 ===
32
33 33
34 34
35 35
@@ -223,12 +224,12 @@ Alive entities: Player(hp=100, pos=(125.0, 245.55))
39 39
40 40
41 41
42 42 @@@@@
43" """"""""""""" 43 @@@@@@ """""""""""""
44:""" @@@ "":::::::::::::""" 44""" @@@@@@ "":::::::::::::"""
45::::""" @@@@ """::::::::::::::::::"" 45:::""" @@@@@ """::::::::::::::::::""
46:::::::"" @@@ "":::::::::::::::::::::::""" 46::::::"" @@@@@"":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""" 47::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################ 49################################################################################
50???????????????????????????????????????????????????????????????????????????????? 50????????????????????????????????????????????????????????????????????????????????
@@ -238,12 +239,12 @@ Alive entities: Player(hp=100, pos=(125.0, 245.55))
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? 55????????????????????????????????????????????????????????????????????????????????
56???????????????????????????????????????????????????????????????????????????????? 56????????????????????????????????????????????????????????????????????????????????
57???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(125.0,244.5) bodies=27/27 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(124.6,245.6) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(124.55, 245.55)) Alive entities: Player(hp=100, pos=(125.0, 244.5))
=== Tick 16 === === Tick 16 ===
32
33 33
34 34
35 35
@@ -253,11 +254,11 @@ Alive entities: Player(hp=100, pos=(124.55, 245.55))
39 39
40 40
41 41
42 42 @@@@@
43" """"""""""""" 43" @@@@@@ """""""""""""
44:""" @@@ "":::::::::::::""" 44:""" @@@@@@ "":::::::::::::"""
45::::""" @@@@ """::::::::::::::::::"" 45::::""" @@@@@ """::::::::::::::::::""
46:::::::"" @@@ "":::::::::::::::::::::::""" 46:::::::"" @@@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""" 47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################ 49################################################################################
@@ -268,12 +269,12 @@ Alive entities: Player(hp=100, pos=(124.55, 245.55))
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? 55????????????????????????????????????????????????????????????????????????????????
56???????????????????????????????????????????????????????????????????????????????? 56????????????????????????????????????????????????????????????????????????????????
57???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(124.5,244.5) bodies=27/27 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(124.6,245.6) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(124.55, 245.55)) Alive entities: Player(hp=100, pos=(124.5, 244.5))
=== Tick 18 === === Tick 18 ===
32
33 33
34 34
35 35
@@ -283,11 +284,11 @@ Alive entities: Player(hp=100, pos=(124.55, 245.55))
39 39
40 40
41 41
42 42 @@@@@
43" """"""""""""" 43" @@@@@@ """""""""""""
44:""" @@@ "":::::::::::::""" 44:""" @@@@@@ "":::::::::::::"""
45::::""" @@@@ """::::::::::::::::::"" 45::::""" @@@@@ """::::::::::::::::::""
46:::::::"" @@@ "":::::::::::::::::::::::""" 46:::::::"" @@@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""" 47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################ 49################################################################################
@@ -298,12 +299,12 @@ Alive entities: Player(hp=100, pos=(124.55, 245.55))
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? 55????????????????????????????????????????????????????????????????????????????????
56???????????????????????????????????????????????????????????????????????????????? 56????????????????????????????????????????????????????????????????????????????????
57???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(124.5,244.5) bodies=27/27 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(124.6,245.6) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(124.55, 245.55)) Alive entities: Player(hp=100, pos=(124.5, 244.5))
=== Tick 20 === === Tick 20 ===
32
33 33
34 34
35 35
@@ -313,11 +314,11 @@ Alive entities: Player(hp=100, pos=(124.55, 245.55))
39 39
40 40
41 41
42 42 @@@@@
43" """"""""""""" 43" @@@@@@ """""""""""""
44:""" @@@ "":::::::::::::""" 44:""" @@@@@@ "":::::::::::::"""
45::::""" @@@@ """::::::::::::::::::"" 45::::""" @@@@@ """::::::::::::::::::""
46:::::::"" @@@ "":::::::::::::::::::::::""" 46:::::::"" @@@@@ "":::::::::::::::::::::::"""
47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::"""""""" 47:::::::::"""""""""""""""""""""""""""""""""""::::::::::::::::::::::::::::""""""""
48:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
49################################################################################ 49################################################################################
@@ -328,8 +329,7 @@ Alive entities: Player(hp=100, pos=(124.55, 245.55))
54???????????????????????????????????????????????????????????????????????????????? 54????????????????????????????????????????????????????????????????????????????????
55???????????????????????????????????????????????????????????????????????????????? 55????????????????????????????????????????????????????????????????????????????????
56???????????????????????????????????????????????????????????????????????????????? 56????????????????????????????????????????????????????????????????????????????????
57???????????????????????????????????????????????????????????????????????????????? Player: "Player hp=100.0/100.0 pos=(124.5,244.5) bodies=27/27 on_fire=false"
Player: "Player hp=100.0/100.0 pos=(124.6,245.6) bodies=10/10 on_fire=false"
Entities: 1 Entities: 1
Alive entities: Player(hp=100, pos=(124.55, 245.55)) Alive entities: Player(hp=100, pos=(124.5, 244.5))
+32 -25
View File
@@ -107,24 +107,27 @@ impl Entity {
self.cvx = 0.0; self.cvx = 0.0;
self.cvy = 0.0; self.cvy = 0.0;
let r = 0.45; let r = 0.5;
let mat = match self.kind { let mat = match self.kind {
EntityKind::Player => MaterialId::Flesh, EntityKind::Player => MaterialId::Flesh,
EntityKind::Goblin => MaterialId::Flesh, EntityKind::Goblin => MaterialId::Flesh,
EntityKind::Corpse => MaterialId::Flesh, EntityKind::Corpse => MaterialId::Flesh,
}; };
let layout = [ // 5x5 body + 2 arms = 27 bodies
(-1.0, -1.0, mat), // 0: top-left let layout: [(f32, f32, MaterialId); 27] = [
( 0.0, -1.0, mat), // 1: top-center // Row 0 (top): head
( 1.0, -1.0, mat), // 2: top-right (-2.0, -2.0, mat), (-1.0, -2.0, mat), ( 0.0, -2.0, mat), ( 1.0, -2.0, mat), ( 2.0, -2.0, mat),
(-1.0, 0.0, mat), // 3: mid-left // Row 1: shoulders
( 0.0, 0.0, mat), // 4: center (-2.0, -1.0, mat), (-1.0, -1.0, mat), ( 0.0, -1.0, mat), ( 1.0, -1.0, mat), ( 2.0, -1.0, mat),
( 1.0, 0.0, mat), // 5: mid-right // Row 2: torso
(-1.0, 1.0, mat), // 6: bot-left (-2.0, 0.0, mat), (-1.0, 0.0, mat), ( 0.0, 0.0, mat), ( 1.0, 0.0, mat), ( 2.0, 0.0, mat),
( 0.0, 1.0, mat), // 7: bot-center // Row 3: hips
( 1.0, 1.0, mat), // 8: bot-right (-2.0, 1.0, mat), (-1.0, 1.0, mat), ( 0.0, 1.0, mat), ( 1.0, 1.0, mat), ( 2.0, 1.0, mat),
( 2.0, 0.0, mat), // 9: hand // Row 4: legs
(-2.0, 2.0, mat), (-1.0, 2.0, mat), ( 0.0, 2.0, mat), ( 1.0, 2.0, mat), ( 2.0, 2.0, mat),
// Arms
( 3.0, -1.0, mat), ( 3.0, 0.0, mat),
]; ];
for &(ox, oy, m) in &layout { for &(ox, oy, m) in &layout {
@@ -133,19 +136,23 @@ impl Entity {
} }
let mk = |a: usize, b: usize, len: f32| Constraint::new(a, b, len, 1.0); let mk = |a: usize, b: usize, len: f32| Constraint::new(a, b, len, 1.0);
self.constraints.push(mk(0, 1, 1.0));
self.constraints.push(mk(1, 2, 1.0)); // Horizontal connections
self.constraints.push(mk(3, 4, 1.0)); for row in 0..5 {
self.constraints.push(mk(4, 5, 1.0)); let base = row * 5;
self.constraints.push(mk(6, 7, 1.0)); for col in 0..4 {
self.constraints.push(mk(7, 8, 1.0)); self.constraints.push(mk(base + col, base + col + 1, 1.0));
self.constraints.push(mk(0, 3, 1.0)); }
self.constraints.push(mk(3, 6, 1.0)); }
self.constraints.push(mk(1, 4, 1.0)); // Vertical connections
self.constraints.push(mk(4, 7, 1.0)); for col in 0..5 {
self.constraints.push(mk(2, 5, 1.0)); for row in 0..4 {
self.constraints.push(mk(5, 8, 1.0)); self.constraints.push(mk(row * 5 + col, (row + 1) * 5 + col, 1.0));
self.constraints.push(mk(5, 9, 1.0)); }
}
// Arm connections
self.constraints.push(mk(9, 25, 1.0));
self.constraints.push(mk(25, 26, 1.0));
} }
pub fn sync_bodies_to_center(&mut self) { pub fn sync_bodies_to_center(&mut self) {
+2 -2
View File
@@ -79,7 +79,7 @@ impl Game {
break; break;
} }
} }
let cy = (surface_y as f32) - 3.0; let cy = (surface_y as f32) - 5.0;
self.player.spawn_at(&mut self.entities, cx, cy); self.player.spawn_at(&mut self.entities, cx, cy);
let (px, py) = self.player.center(&self.entities); let (px, py) = self.player.center(&self.entities);
@@ -502,7 +502,7 @@ impl Game {
break; break;
} }
} }
let spawn_y = surface_y - 3; let spawn_y = surface_y - 5;
if !self.grid.in_bounds(spawn_x, spawn_y) { if !self.grid.in_bounds(spawn_x, spawn_y) {
return; return;
+3 -3
View File
@@ -31,9 +31,9 @@ impl TerminalRenderer {
} }
fn detect_size(&mut self) -> io::Result<()> { fn detect_size(&mut self) -> io::Result<()> {
let (w, h) = term_size().unwrap_or((120, 40)); let (w, h) = term_size().unwrap_or((200, 60));
self.width = (w as usize).min(250).max(60); self.width = (w as usize).min(250).max(80);
self.height = (h as usize).min(80).max(20); self.height = (h as usize).min(120).max(25);
Ok(()) Ok(())
} }