Skip to content
This repository was archived by the owner on Oct 18, 2025. It is now read-only.

Commit 02ab7ad

Browse files
i'm retarded: ttnte (Fixed Characters Position & Characters Camera)
1 parent af86e99 commit 02ab7ad

File tree

2 files changed

+23
-32
lines changed

2 files changed

+23
-32
lines changed

source/funkin/states/PlayState.hx

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,9 @@ class PlayState extends ScriptState
520520
character[0], cast character[1]
521521
);
522522

523+
object.x += object.data.position[0];
524+
object.y += object.data.position[1];
525+
523526
charactersArray.push(object);
524527

525528
switch (type)
@@ -1105,26 +1108,17 @@ class PlayState extends ScriptState
11051108
switch (char.type)
11061109
{
11071110
case OPPONENT:
1108-
camPosition.x = char.getMidpoint().x + 150;
1109-
camPosition.x += char.cameraPosition[0];
1110-
camPosition.x += STAGE.opponentsCamera[characters.opponents.indexOf(char)][0];
1111-
camPosition.y = char.getMidpoint().y - 100;
1112-
camPosition.y += char.cameraPosition[1];
1113-
camPosition.y += STAGE.opponentsCamera[characters.opponents.indexOf(char)][1];
1111+
camPosition.setPosition(char.getMidpoint().x + 150, char.getMidpoint().y - 100);
1112+
camPosition.x += char.cameraPosition[0] + STAGE.opponentsCamera[characters.opponents.indexOf(char)][0];
1113+
camPosition.y += char.cameraPosition[1] + STAGE.opponentsCamera[characters.opponents.indexOf(char)][1];
11141114
case PLAYER:
1115-
camPosition.x = char.getMidpoint().x - 100;
1116-
camPosition.x -= char.cameraPosition[0];
1117-
camPosition.x += STAGE.playersCamera[characters.players.indexOf(char)][0];
1118-
camPosition.y = char.getMidpoint().y - 100;
1119-
camPosition.y += char.cameraPosition[1];
1120-
camPosition.y += STAGE.playersCamera[characters.players.indexOf(char)][1];
1115+
camPosition.setPosition(char.getMidpoint().x - 100, char.getMidpoint().y - 100);
1116+
camPosition.x -= char.cameraPosition[0] - STAGE.playersCamera[characters.players.indexOf(char)][0];
1117+
camPosition.y += char.cameraPosition[1] + STAGE.playersCamera[characters.players.indexOf(char)][1];
11211118
case EXTRA:
1122-
camPosition.x = char.getMidpoint().x;
1123-
camPosition.x += char.cameraPosition[0];
1124-
camPosition.x += STAGE.extrasCamera[characters.extras.indexOf(char)][0];
1125-
camPosition.y = char.getMidpoint().y;
1126-
camPosition.y += char.cameraPosition[1];
1127-
camPosition.y += STAGE.extrasCamera[characters.extras.indexOf(char)][1];
1119+
camPosition.setPosition(char.getMidpoint().x, char.getMidpoint().y);
1120+
camPosition.x += char.cameraPosition[0] + STAGE.extrasCamera[characters.extras.indexOf(char)][0];
1121+
camPosition.y += char.cameraPosition[1] + STAGE.extrasCamera[characters.extras.indexOf(char)][1];
11281122
}
11291123
}
11301124
}

source/funkin/visuals/game/Character.hx

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,10 @@ class Character extends FlxSprite
3030
data = ALEParserHelper.getALECharacter(name);
3131

3232
texture = data.image;
33-
3433
return name;
3534
}
3635

37-
public var offsetsMap:StringMap<Dynamic>;
36+
public var offsetsMap:Map<String, Array<Int>> = new Map<String, Array<Int>>();
3837

3938
public var cameraPosition:Array<Float>;
4039

@@ -45,12 +44,6 @@ class Character extends FlxSprite
4544

4645
frames = Paths.getAtlas(texture);
4746

48-
scale.x = scale.y = data.scale;
49-
50-
updateHitbox();
51-
52-
offsetsMap = new StringMap<Dynamic>();
53-
5447
for (animation in data.animations)
5548
{
5649
if (animation.indices != null && animation.indices.length > 0)
@@ -60,16 +53,13 @@ class Character extends FlxSprite
6053

6154
var offsets:Array<Int> = animation.offset;
6255

63-
offsets[0] -= data.position[0];
64-
offsets[1] -= data.position[1];
65-
66-
offsetsMap.set(animation.animation, offsets);
56+
offsetsMap[animation.animation] = offsets != null && offsets.length > 1 ? [offsets[0], offsets[1]] : [0, 0];
6757
}
6858

6959
offsetsCallback = (name:String) -> {
7060
if (offsetsMap.exists(name))
7161
{
72-
var offsets:Array<Float> = offsetsMap.get(name);
62+
var offsets:Array<Int> = offsetsMap.get(name);
7363

7464
offset.set(offsets[0], offsets[1]);
7565
}
@@ -92,7 +82,14 @@ class Character extends FlxSprite
9282
else if (animation.exists('danceLeft'))
9383
animation.play('danceLeft', true);
9484

95-
cameraPosition = [data.cameraPosition[0] - offset.x, data.cameraPosition[1] - offset.y];
85+
if (data.scale != 1)
86+
{
87+
scale.x = scale.y = data.scale;
88+
89+
updateHitbox();
90+
}
91+
92+
cameraPosition = [data.cameraPosition[0], data.cameraPosition[1]];
9693

9794
antialiasing = ClientPrefs.data.antialiasing && data.antialiasing;
9895

0 commit comments

Comments
 (0)