Skip to content

Commit e5190fd

Browse files
committed
Updating hitboxes for collisions to work right
1 parent 24dd3f5 commit e5190fd

4 files changed

Lines changed: 41 additions & 34 deletions

File tree

CLAUDE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ Analytics.hx reports events to Bitlytics. Storage.hx handles local persistence f
105105
## Compile Flags
106106

107107
- `#if debug` / `#if FLX_DEBUG` — debug-only code
108-
- `SKIP_SPLASH` — skip splash screen
108+
- `SKIP_SPLASH` — skip splash screen, go to main menu
109+
- `maingame` — skip all menus, go straight to PlayState (e.g. `lime build hl -debug -Dmaingame`)
109110
- `API_KEY` — analytics token for production
110111
- `dev_analytics` — dev mode analytics
111112
- `llm_bridge` — enable LLM debug bridge (`window.__debug` API for Playwright introspection)

source/Main.hx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ import states.LobbyState;
4242
#if credits
4343
import states.CreditsState;
4444
#end
45+
#if maingame
46+
import states.PlayState;
47+
#end
4548
#if FLX_DEBUG
4649
import plugins.GlobalDebugPlugin;
4750
#end
@@ -70,6 +73,9 @@ class Main extends Sprite {
7073
configureLogging();
7174
initEvents();
7275
Achievements.initAchievements();
76+
#if maingame
77+
FlxG.switchState(() -> new PlayState(null));
78+
#end
7379
});
7480
addChild(new FlxGame(0, 0, startingState, 60, 60, true, false));
7581
#if fullscreen

source/entities/Player.hx

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ class Player extends FlxSprite {
152152
// Footstep dust on foot-plant frames of run animations
153153
if (onFootstep != null && StringTools.startsWith(animName, "run_") && (frameNumber == 2 || frameNumber == 6)) {
154154
// Spawn dust at player's feet (center-bottom of hitbox)
155-
onFootstep(x + width / 2, y + height);
155+
onFootstep(x + width / 2, y + 4);
156156
}
157157

158158
if (castState == CATCH_ANIM && frameNumber == CATCH_RETRACT_FRAME && castBobber != null) {
@@ -318,7 +318,7 @@ class Player extends FlxSprite {
318318
// Capture reticle target for the rock
319319
var dir = lastInputDir.asVector();
320320
var rawX = x + dir.x * 96 + 4;
321-
var rawY = y + dir.y * 96 + 4;
321+
var rawY = y + dir.y * 96 - 8;
322322
var bounds = FlxG.worldBounds;
323323
rockTarget = FlxPoint.get(Math.max(bounds.left, Math.min(bounds.right, rawX)), Math.max(bounds.top, Math.min(bounds.bottom, rawY)));
324324
dir.put();
@@ -344,7 +344,7 @@ class Player extends FlxSprite {
344344
var reticleOffset = lastInputDir.asVector();
345345
var bounds = FlxG.worldBounds;
346346
reticle.setPosition(Math.max(bounds.left, Math.min(bounds.right - reticle.width, last.x + reticleOffset.x * 96 + 4)),
347-
Math.max(bounds.top, Math.min(bounds.bottom - reticle.height, last.y + reticleOffset.y * 96 + 4)));
347+
Math.max(bounds.top, Math.min(bounds.bottom - reticle.height, last.y + reticleOffset.y * 96 - 8)));
348348
reticleOffset.put();
349349
}
350350

@@ -353,40 +353,40 @@ class Player extends FlxSprite {
353353
var frame = animation.curAnim != null ? animation.curAnim.curFrame : 0;
354354
if (castState == CAST_ANIM && frame == CAST_LAUNCH_FRAME) {
355355
return switch (castDirSuffix) {
356-
case "right": FlxPoint.get(x + 12, y);
357-
case "left": FlxPoint.get(x + 4, y);
358-
case "down": FlxPoint.get(x, y + 4);
359-
case "up": FlxPoint.get(x + 12, y + 4);
356+
case "right": FlxPoint.get(x + 12, y - 12);
357+
case "left": FlxPoint.get(x + 2, y - 12);
358+
case "down": FlxPoint.get(x, y - 8);
359+
case "up": FlxPoint.get(x + 12, y - 8);
360360
default: null;
361361
};
362362
}
363363
return switch (castDirSuffix) {
364-
case "down": FlxPoint.get(x + 10, y + 24);
365-
case "right": FlxPoint.get(x + 30, y + 2);
366-
case "up": FlxPoint.get(x + 3, y - 4);
367-
case "left": FlxPoint.get(x - 15, y + 2);
368-
default: FlxPoint.get(x + 8, y + 8);
364+
case "down": FlxPoint.get(x + 10, y + 12);
365+
case "right": FlxPoint.get(x + 30, y - 10);
366+
case "up": FlxPoint.get(x + 3, y - 16);
367+
case "left": FlxPoint.get(x - 15, y - 10);
368+
default: FlxPoint.get(x + 8, y - 4);
369369
};
370370
} else if (castState == CATCH_ANIM || castState == RETURNING) {
371371
var frame = animation.curAnim != null ? animation.curAnim.curFrame : 0;
372372
return switch (castDirSuffix) {
373373
case "down":
374-
if (frame == 0) FlxPoint.get(x + 10, y + 24) else if (frame == 1) FlxPoint.get(x + 1, y + 3) else FlxPoint.get(x + 0, y - 5);
374+
if (frame == 0) FlxPoint.get(x + 10, y + 12) else if (frame == 1) FlxPoint.get(x + 8, y - 9) else FlxPoint.get(x - 1, y - 20);
375375
case "right":
376-
if (frame == 0) FlxPoint.get(x + 30, y + 2) else if (frame == 1) FlxPoint.get(x + 14, y - 4) else FlxPoint.get(x - 6, y - 6);
376+
if (frame == 0) FlxPoint.get(x + 30, y - 10) else if (frame == 1) FlxPoint.get(x + 14, y - 16) else FlxPoint.get(x - 6, y - 18);
377377
case "up":
378-
if (frame == 0) FlxPoint.get(x + 3, y - 6) else if (frame == 1) FlxPoint.get(x + 13, y - 8) else FlxPoint.get(x + 19, y - 8);
378+
if (frame == 0) FlxPoint.get(x + 3, y - 18) else if (frame == 1) FlxPoint.get(x + 13, y - 20) else FlxPoint.get(x + 19, y - 20);
379379
case "left":
380-
if (frame == 0) FlxPoint.get(x - 15, y + 2) else if (frame == 1) FlxPoint.get(x + 1, y - 4) else FlxPoint.get(x + 21, y - 6);
381-
default: FlxPoint.get(x + 8, y + 8);
380+
if (frame == 0) FlxPoint.get(x - 15, y - 10) else if (frame == 1) FlxPoint.get(x + 1, y - 16) else FlxPoint.get(x + 21, y - 18);
381+
default: FlxPoint.get(x + 8, y - 4);
382382
};
383383
} else {
384384
return switch (castDirSuffix) {
385-
case "down": FlxPoint.get(x + 2, y + 10);
386-
case "right": FlxPoint.get(x + 15, y - 5);
387-
case "up": FlxPoint.get(x + 11, y - 6);
388-
case "left": FlxPoint.get(x + 0, y - 5);
389-
default: FlxPoint.get(x + 8, y + 8);
385+
case "down": FlxPoint.get(x + 1, y - 13);
386+
case "right": FlxPoint.get(x + 15, y - 17);
387+
case "up": FlxPoint.get(x + 11, y - 18);
388+
case "left": FlxPoint.get(x + 0, y - 17);
389+
default: FlxPoint.get(x + 8, y - 4);
390390
};
391391
}
392392
}
@@ -479,7 +479,7 @@ class Player extends FlxSprite {
479479
}
480480

481481
function launchRock() {
482-
rockSprite = if (makeRock != null) makeRock(x + 4, y + 4) else new Rock(x + 4, y + 4);
482+
rockSprite = if (makeRock != null) makeRock(x + 4, y - 8) else new Rock(x + 4, y - 8);
483483
rockStartPos = FlxPoint.get(rockSprite.x, rockSprite.y);
484484
var dx = rockTarget.x - rockStartPos.x;
485485
var dy = rockTarget.y - rockStartPos.y;
@@ -540,7 +540,7 @@ class Player extends FlxSprite {
540540
var reticleDir = lastInputDir.asVector();
541541
var castDist = castPower * 96;
542542
var targetX = x + reticleDir.x * castDist + 4;
543-
var targetY = y + reticleDir.y * castDist + 4;
543+
var targetY = y + reticleDir.y * castDist - 8;
544544
reticleDir.put();
545545
castTarget = FlxPoint.get(targetX, targetY);
546546
GameManager.ME.net.sendMessage("cast_line", {x: castTarget.x, y: castTarget.y, dir: getDirSuffix()});
@@ -618,8 +618,8 @@ class Player extends FlxSprite {
618618
castPowerDir = 1;
619619
}
620620
powerBarFill.scale.x = castPower;
621-
powerBarBg.setPosition(x - 8, y + 20);
622-
powerBarFill.setPosition(x - 8, y + 20);
621+
powerBarBg.setPosition(x - 8, y + 8);
622+
powerBarFill.setPosition(x - 8, y + 8);
623623

624624
if (SimpleController.just_released(A)) {
625625
powerBarBg.visible = false;
@@ -828,11 +828,11 @@ class Player extends FlxSprite {
828828

829829
function getRetractTarget():FlxPoint {
830830
return switch (castDirSuffix) {
831-
case "right": FlxPoint.get(x + 8, y - 2);
832-
case "left": FlxPoint.get(x + 8, y - 2);
833-
case "down": FlxPoint.get(x, y + 4);
834-
case "up": FlxPoint.get(x + 12, y + 4);
835-
default: FlxPoint.get(x + 4, y + 4);
831+
case "right": FlxPoint.get(x + 8, y - 14);
832+
case "left": FlxPoint.get(x + 8, y - 14);
833+
case "down": FlxPoint.get(x, y - 8);
834+
case "up": FlxPoint.get(x + 12, y - 8);
835+
default: FlxPoint.get(x + 4, y - 8);
836836
};
837837
}
838838

source/states/PlayState.hx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ class PlayState extends FlxTransitionableState {
294294
if (catcherSessionId == player.sessionId) {
295295
player.onFishDelivered = () -> {
296296
if (!player.inventory.add(Fish(player.caughtFishSpriteIndex))) {
297-
groundFishGroup.addFish(player.x + 8, player.y - 2, player.caughtFishSpriteIndex);
297+
groundFishGroup.addFish(player.x + 8, player.y - 14, player.caughtFishSpriteIndex);
298298
}
299299
player.onFishDelivered = null;
300300
};
@@ -322,7 +322,7 @@ class PlayState extends FlxTransitionableState {
322322
if (sessionId == player.sessionId) {
323323
player.onFishDelivered = () -> {
324324
if (!player.inventory.add(Fish(player.caughtFishSpriteIndex))) {
325-
groundFishGroup.addFish(player.x + 8, player.y - 2, player.caughtFishSpriteIndex);
325+
groundFishGroup.addFish(player.x + 8, player.y - 14, player.caughtFishSpriteIndex);
326326
}
327327
player.onFishDelivered = null;
328328
};

0 commit comments

Comments
 (0)