diff --git a/battle_srv/models/room.go b/battle_srv/models/room.go
index fe69ed2..c2391ca 100644
--- a/battle_srv/models/room.go
+++ b/battle_srv/models/room.go
@@ -1274,17 +1274,6 @@ func (pR *Room) refreshColliders(spaceW, spaceH int32) {
topPadding, bottomPadding, leftPadding, rightPadding := pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformOverlap
pR.Space = resolv.NewSpace(int(spaceW), int(spaceH), int(pR.CollisionMinStep), int(pR.CollisionMinStep)) // allocate a new collision space everytime after a battle is settled
- jsPlayers := toJsPlayers(pR.Players)
- for _, player := range jsPlayers {
- wx, wy := battle.VirtualGridToWorldPos(player.VirtualGridX, player.VirtualGridY, pR.VirtualGridToWorldRatio)
- colliderWidth, colliderHeight := player.ColliderRadius*2, player.ColliderRadius*4
- playerCollider := battle.GenerateRectCollider(wx, wy, colliderWidth, colliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, pR.collisionSpaceOffsetX, pR.collisionSpaceOffsetY, player, "Player") // the coords of all barrier boundaries are multiples of tileWidth(i.e. 16), by adding snapping y-padding when "landedOnGravityPushback" all "playerCollider.Y" would be a multiple of 1.0
- pR.Space.Add(playerCollider)
- // Keep track of the collider in "pR.CollisionSysMap"
- joinIndex := player.JoinIndex
- collisionPlayerIndex := battle.COLLISION_PLAYER_INDEX_PREFIX + joinIndex
- pR.CollisionSysMap[collisionPlayerIndex] = playerCollider
- }
for _, player := range pR.Players {
joinIndex := player.JoinIndex
diff --git a/charts/README.md b/charts/README.md
index 84ff63f..43276b3 100644
--- a/charts/README.md
+++ b/charts/README.md
@@ -21,3 +21,8 @@ ffmpeg -vsync vfr -i LayDown1.gif -vf "scale=iw:188:force_original_aspect_ratio=
```
The command above uses same input-output width, but pads the output height with a top transparent section such that the output height is fixed to 188px.
+
+Similarly to crop a gif into pngs.
+```
+ffmpeg -vsync vfr -i Idle1.gif -vf "crop=70:ih:(iw-ow-10):0" pngs/Idle1_%d.png
+```
diff --git a/frontend/assets/plugin_scripts/jsexport.js b/frontend/assets/plugin_scripts/jsexport.js
index 1d8605f..f31517a 100644
--- a/frontend/assets/plugin_scripts/jsexport.js
+++ b/frontend/assets/plugin_scripts/jsexport.js
@@ -4724,7 +4724,7 @@ $packages["resolv"] = (function() {
return $pkg;
})();
$packages["jsexport/battle"] = (function() {
- var $pkg = {}, $init, math, resolv, Vec2D, Polygon2D, PlayerDownsync, InputFrameDecoded, Barrier, Bullet, MeleeBullet, FireballBullet, Skill, RoomDownsyncFrame, InputFrameDownsync, RingBuffer, SkillMapperType, CharacterConfig, SatResult, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, sliceType$3, sliceType$4, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$5, sliceType$6, sliceType$7, sliceType$8, sliceType$9, ptrType$8, sliceType$10, ptrType$9, sliceType$11, sliceType$12, ptrType$10, sliceType$13, ptrType$11, mapType, ptrType$12, skills, inAirSet, noOpSet, invinsibleSet, nonAttackingSet, NewRingBuffer, ConvertToInputFrameId, decodeInput, CalcPushbacks, isPolygonPairOverlapped, isPolygonPairSeparatedByDir, WorldToVirtualGridPos, VirtualGridToWorldPos, WorldToPolygonColliderBLPos, PolygonColliderBLToWorldPos, PolygonColliderBLToVirtualGridPos, VirtualGridToPolygonColliderBLPos, calcHardPushbacksNorms, deriveOpPattern, ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, GenerateRectCollider, generateRectColliderInCollisionSpace, GenerateConvexPolygonCollider, AlignPolygon2DToBoundingBox;
+ var $pkg = {}, $init, math, resolv, Vec2D, Polygon2D, PlayerDownsync, InputFrameDecoded, Barrier, Bullet, MeleeBullet, FireballBullet, Skill, RoomDownsyncFrame, InputFrameDownsync, RingBuffer, SkillMapperType, CharacterConfig, SatResult, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, sliceType$3, sliceType$4, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$5, sliceType$6, sliceType$7, sliceType$8, sliceType$9, ptrType$8, sliceType$10, ptrType$9, sliceType$11, sliceType$12, ptrType$10, sliceType$13, ptrType$11, mapType, ptrType$12, skills, inAirSet, noOpSet, invinsibleSet, nonAttackingSet, NewRingBuffer, ConvertToInputFrameId, decodeInput, CalcPushbacks, isPolygonPairOverlapped, isPolygonPairSeparatedByDir, WorldToVirtualGridPos, VirtualGridToWorldPos, WorldToPolygonColliderBLPos, PolygonColliderBLToWorldPos, PolygonColliderBLToVirtualGridPos, calcHardPushbacksNorms, deriveOpPattern, ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, GenerateRectCollider, generateRectColliderInCollisionSpace, GenerateConvexPolygonCollider, AlignPolygon2DToBoundingBox;
math = $packages["math"];
resolv = $packages["resolv"];
Vec2D = $pkg.Vec2D = $newType(0, $kindStruct, "battle.Vec2D", true, "jsexport/battle", true, function(X_, Y_) {
@@ -5359,14 +5359,6 @@ $packages["jsexport/battle"] = (function() {
return WorldToVirtualGridPos(wx, wy);
};
$pkg.PolygonColliderBLToVirtualGridPos = PolygonColliderBLToVirtualGridPos;
- VirtualGridToPolygonColliderBLPos = function(vx, vy, halfBoundingW, halfBoundingH, topPadding, bottomPadding, leftPadding, rightPadding, collisionSpaceOffsetX, collisionSpaceOffsetY) {
- var _tuple, bottomPadding, collisionSpaceOffsetX, collisionSpaceOffsetY, halfBoundingH, halfBoundingW, leftPadding, rightPadding, topPadding, vx, vy, wx, wy;
- _tuple = VirtualGridToWorldPos(vx, vy);
- wx = _tuple[0];
- wy = _tuple[1];
- return WorldToPolygonColliderBLPos(wx, wy, halfBoundingW, halfBoundingH, topPadding, bottomPadding, leftPadding, rightPadding, collisionSpaceOffsetX, collisionSpaceOffsetY);
- };
- $pkg.VirtualGridToPolygonColliderBLPos = VirtualGridToPolygonColliderBLPos;
calcHardPushbacksNorms = function(joinIndex, playerCollider, playerShape, snapIntoPlatformOverlap, pEffPushback) {
var {_i, _r, _ref, _ref$1, _tmp, _tmp$1, _tuple, barrierShape, collision, isBarrier, joinIndex, obj, overlapResult, overlapped, pEffPushback, playerCollider, playerShape, pushbackX, pushbackY, ret, snapIntoPlatformOverlap, $s, $r, $c} = $restore(this, {joinIndex, playerCollider, playerShape, snapIntoPlatformOverlap, pEffPushback});
/* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
@@ -5469,7 +5461,7 @@ $packages["jsexport/battle"] = (function() {
return [patternId, jumpedOrNot, effDx, effDy];
};
ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = function(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex) {
- var {_1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex});
+ var {_1, _2, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex});
/* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
roomCapacity = currRenderFrame.PlayersArr.$length;
nextRenderFramePlayers = $makeSlice(sliceType$6, roomCapacity);
@@ -5479,7 +5471,7 @@ $packages["jsexport/battle"] = (function() {
if (!(_i < _ref.$length)) { break; }
i = _i;
currPlayerDownsync = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
- ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i] = new PlayerDownsync.ptr(currPlayerDownsync.Id, currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY, currPlayerDownsync.DirX, currPlayerDownsync.DirY, currPlayerDownsync.VelX, currPlayerDownsync.VelY, currPlayerDownsync.Speed, currPlayerDownsync.BattleState, currPlayerDownsync.JoinIndex, 0, currPlayerDownsync.Removed, currPlayerDownsync.Score, 0, currPlayerDownsync.FramesToRecover - 1 >> 0, currPlayerDownsync.FramesInChState + 1 >> 0, currPlayerDownsync.Hp, currPlayerDownsync.MaxHp, currPlayerDownsync.CharacterState, true, currPlayerDownsync.ActiveSkillId, currPlayerDownsync.ActiveSkillHit));
+ ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i] = new PlayerDownsync.ptr(currPlayerDownsync.Id, currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY, currPlayerDownsync.DirX, currPlayerDownsync.DirY, currPlayerDownsync.VelX, currPlayerDownsync.VelY, currPlayerDownsync.Speed, currPlayerDownsync.BattleState, currPlayerDownsync.JoinIndex, currPlayerDownsync.ColliderRadius, currPlayerDownsync.Removed, currPlayerDownsync.Score, 0, currPlayerDownsync.FramesToRecover - 1 >> 0, currPlayerDownsync.FramesInChState + 1 >> 0, currPlayerDownsync.Hp, currPlayerDownsync.MaxHp, currPlayerDownsync.CharacterState, true, currPlayerDownsync.ActiveSkillId, currPlayerDownsync.ActiveSkillHit));
if (((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesToRecover < 0) {
((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesToRecover = 0;
}
@@ -5549,6 +5541,7 @@ $packages["jsexport/battle"] = (function() {
_i$1++;
$s = 1; continue;
case 2:
+ playerColliders = $makeSlice(sliceType$10, currRenderFrame.PlayersArr.$length, currRenderFrame.PlayersArr.$length);
_ref$3 = currRenderFrame.PlayersArr;
_i$2 = 0;
/* while (true) { */ case 4:
@@ -5560,9 +5553,6 @@ $packages["jsexport/battle"] = (function() {
_tmp$3 = 0;
(x$2 = joinIndex$1 - 1 >> 0, ((x$2 < 0 || x$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$2])).X = _tmp$2;
(x$3 = joinIndex$1 - 1 >> 0, ((x$3 < 0 || x$3 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$3])).Y = _tmp$3;
- collisionPlayerIndex = 131072 + joinIndex$1 >> 0;
- playerCollider = (_entry$1 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex)], _entry$1 !== undefined ? _entry$1.v : ptrType$8.nil);
- thatPlayerInNextFrame$1 = ((i$2 < 0 || i$2 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$2]);
chConfig$1 = ((i$2 < 0 || i$2 >= chConfigsOrderedByJoinIndex.$length) ? ($throwRuntimeError("index out of range"), undefined) : chConfigsOrderedByJoinIndex.$array[chConfigsOrderedByJoinIndex.$offset + i$2]);
_tmp$4 = currPlayerDownsync$2.VirtualGridX + currPlayerDownsync$2.VelX >> 0;
_tmp$5 = currPlayerDownsync$2.VirtualGridY + currPlayerDownsync$2.VelY >> 0;
@@ -5571,10 +5561,33 @@ $packages["jsexport/battle"] = (function() {
if (((i$2 < 0 || i$2 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$2])) {
newVy = newVy + (chConfig$1.JumpingInitVelY) >> 0;
}
- _tuple$2 = VirtualGridToPolygonColliderBLPos(newVx, newVy, playerCollider.W * 0.5, playerCollider.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY);
- playerCollider.X = _tuple$2[0];
- playerCollider.Y = _tuple$2[1];
- $r = playerCollider.Update(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
+ _tuple$2 = VirtualGridToWorldPos(newVx, newVy);
+ wx = _tuple$2[0];
+ wy = _tuple$2[1];
+ _tmp$6 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
+ _tmp$7 = $imul(currPlayerDownsync$2.ColliderRadius, 4);
+ colliderWidth = _tmp$6;
+ colliderHeight = _tmp$7;
+ _1 = currPlayerDownsync$2.CharacterState;
+ if (_1 === (9)) {
+ _tmp$8 = $imul(currPlayerDownsync$2.ColliderRadius, 4);
+ _tmp$9 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
+ colliderWidth = _tmp$8;
+ colliderHeight = _tmp$9;
+ } else if ((_1 === (8)) || (_1 === (4)) || (_1 === (5))) {
+ _tmp$10 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
+ _tmp$11 = $imul(currPlayerDownsync$2.ColliderRadius, 2);
+ colliderWidth = _tmp$10;
+ colliderHeight = _tmp$11;
+ }
+ _tuple$3 = VirtualGridToWorldPos(colliderWidth, colliderHeight);
+ colliderWorldWidth = _tuple$3[0];
+ colliderWorldHeight = _tuple$3[1];
+ _r$1 = GenerateRectCollider(wx, wy, colliderWorldWidth, colliderWorldHeight, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, currPlayerDownsync$2, "Player"); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
+ playerCollider = _r$1;
+ ((i$2 < 0 || i$2 >= playerColliders.$length) ? ($throwRuntimeError("index out of range"), undefined) : playerColliders.$array[playerColliders.$offset + i$2] = playerCollider);
+ $r = collisionSys.Add(new sliceType$10([playerCollider])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
+ thatPlayerInNextFrame$1 = ((i$2 < 0 || i$2 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$2]);
if (currPlayerDownsync$2.InAir) {
thatPlayerInNextFrame$1.VelX = thatPlayerInNextFrame$1.VelX + (0) >> 0;
thatPlayerInNextFrame$1.VelY = thatPlayerInNextFrame$1.VelY + (-50) >> 0;
@@ -5585,64 +5598,63 @@ $packages["jsexport/battle"] = (function() {
bulletColliders = $makeSlice(sliceType$10, 0, currRenderFrame.MeleeBullets.$length);
_ref$4 = currRenderFrame.MeleeBullets;
_i$3 = 0;
- /* while (true) { */ case 7:
- /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 8; continue; }
+ /* while (true) { */ case 8:
+ /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 9; continue; }
meleeBullet = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]);
- /* */ if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { $s = 9; continue; }
- /* */ $s = 10; continue;
- /* if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { */ case 9:
+ /* */ if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { $s = 10; continue; }
+ /* */ $s = 11; continue;
+ /* if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { */ case 10:
offender = (x$4 = currRenderFrame.PlayersArr, x$5 = meleeBullet.Bullet.OffenderJoinIndex - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]));
xfac = 1;
if (0 > offender.DirX) {
xfac = -xfac;
}
- _tuple$3 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY);
- bulletWx = _tuple$3[0];
- bulletWy = _tuple$3[1];
- _tuple$4 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY);
- hitboxSizeWx = _tuple$4[0];
- hitboxSizeWy = _tuple$4[1];
- _r$1 = GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet"); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
- newBulletCollider = _r$1;
- $r = collisionSys.Add(new sliceType$10([newBulletCollider])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
+ _tuple$4 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY);
+ bulletWx = _tuple$4[0];
+ bulletWy = _tuple$4[1];
+ _tuple$5 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY);
+ hitboxSizeWx = _tuple$5[0];
+ hitboxSizeWy = _tuple$5[1];
+ _r$2 = GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet"); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
+ newBulletCollider = _r$2;
+ $r = collisionSys.Add(new sliceType$10([newBulletCollider])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
bulletColliders = $append(bulletColliders, newBulletCollider);
- $s = 11; continue;
- /* } else { */ case 10:
+ $s = 12; continue;
+ /* } else { */ case 11:
nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, meleeBullet);
- /* } */ case 11:
+ /* } */ case 12:
_i$3++;
- $s = 7; continue;
- case 8:
+ $s = 8; continue;
+ case 9:
_ref$5 = currRenderFrame.PlayersArr;
_i$4 = 0;
- /* while (true) { */ case 14:
- /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 15; continue; }
+ /* while (true) { */ case 15:
+ /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 16; continue; }
i$3 = _i$4;
currPlayerDownsync$3 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]);
joinIndex$2 = currPlayerDownsync$3.JoinIndex;
- collisionPlayerIndex$1 = 131072 + joinIndex$2 >> 0;
- playerCollider$1 = (_entry$2 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$1)], _entry$2 !== undefined ? _entry$2.v : ptrType$8.nil);
+ playerCollider$1 = ((i$3 < 0 || i$3 >= playerColliders.$length) ? ($throwRuntimeError("index out of range"), undefined) : playerColliders.$array[playerColliders.$offset + i$3]);
playerShape = $assertType(playerCollider$1.Shape, ptrType$6);
- _r$2 = calcHardPushbacksNorms(joinIndex$2, playerCollider$1, playerShape, 0.1, (x$6 = joinIndex$2 - 1 >> 0, ((x$6 < 0 || x$6 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$6]))); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
- (x$7 = joinIndex$2 - 1 >> 0, ((x$7 < 0 || x$7 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$7] = _r$2));
+ _r$3 = calcHardPushbacksNorms(joinIndex$2, playerCollider$1, playerShape, 0.1, (x$6 = joinIndex$2 - 1 >> 0, ((x$6 < 0 || x$6 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$6]))); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
+ (x$7 = joinIndex$2 - 1 >> 0, ((x$7 < 0 || x$7 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$7] = _r$3));
thatPlayerInNextFrame$2 = ((i$3 < 0 || i$3 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$3]);
chConfig$2 = ((i$3 < 0 || i$3 >= chConfigsOrderedByJoinIndex.$length) ? ($throwRuntimeError("index out of range"), undefined) : chConfigsOrderedByJoinIndex.$array[chConfigsOrderedByJoinIndex.$offset + i$3]);
landedOnGravityPushback = false;
collision = playerCollider$1.Check(0, 0, new sliceType$4([]));
- /* */ if (!(ptrType$3.nil === collision)) { $s = 17; continue; }
- /* */ $s = 18; continue;
- /* if (!(ptrType$3.nil === collision)) { */ case 17:
+ /* */ if (!(ptrType$3.nil === collision)) { $s = 18; continue; }
+ /* */ $s = 19; continue;
+ /* if (!(ptrType$3.nil === collision)) { */ case 18:
_ref$6 = collision.Objects;
_i$5 = 0;
- /* while (true) { */ case 19:
- /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 20; continue; }
+ /* while (true) { */ case 20:
+ /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 21; continue; }
obj = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]);
- _tmp$6 = false;
- _tmp$7 = false;
- _tmp$8 = false;
- isBarrier = _tmp$6;
- isAnotherPlayer = _tmp$7;
- isBullet = _tmp$8;
+ _tmp$12 = false;
+ _tmp$13 = false;
+ _tmp$14 = false;
+ isBarrier = _tmp$12;
+ isAnotherPlayer = _tmp$13;
+ isBullet = _tmp$14;
_ref$7 = obj.Data;
if ($assertType(_ref$7, ptrType$5, true)[1]) {
isAnotherPlayer = true;
@@ -5653,25 +5665,25 @@ $packages["jsexport/battle"] = (function() {
}
if (isBullet) {
_i$5++;
- /* continue; */ $s = 19; continue;
+ /* continue; */ $s = 20; continue;
}
bShape = $assertType(obj.Shape, ptrType$6);
- _r$3 = CalcPushbacks(0, 0, playerShape, bShape); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
- _tuple$5 = _r$3;
- overlapped = _tuple$5[0];
- pushbackX = _tuple$5[1];
- pushbackY = _tuple$5[2];
- overlapResult = _tuple$5[3];
+ _r$4 = CalcPushbacks(0, 0, playerShape, bShape); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
+ _tuple$6 = _r$4;
+ overlapped = _tuple$6[0];
+ pushbackX = _tuple$6[1];
+ pushbackY = _tuple$6[2];
+ overlapResult = _tuple$6[3];
if (!overlapped) {
_i$5++;
- /* continue; */ $s = 19; continue;
+ /* continue; */ $s = 20; continue;
}
normAlignmentWithGravity = overlapResult.OverlapX * 0 + overlapResult.OverlapY * -1;
if (isAnotherPlayer) {
- _tmp$9 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapX;
- _tmp$10 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapY;
- pushbackX = _tmp$9;
- pushbackY = _tmp$10;
+ _tmp$15 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapX;
+ _tmp$16 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapY;
+ pushbackX = _tmp$15;
+ pushbackY = _tmp$16;
}
_ref$8 = (x$8 = joinIndex$2 - 1 >> 0, ((x$8 < 0 || x$8 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$8])).$get();
_i$6 = 0;
@@ -5693,9 +5705,9 @@ $packages["jsexport/battle"] = (function() {
landedOnGravityPushback = true;
}
_i$5++;
- $s = 19; continue;
- case 20:
- /* } */ case 18:
+ $s = 20; continue;
+ case 21:
+ /* } */ case 19:
if (landedOnGravityPushback) {
thatPlayerInNextFrame$2.InAir = false;
if (currPlayerDownsync$3.InAir && 0 >= currPlayerDownsync$3.VelY) {
@@ -5705,6 +5717,14 @@ $packages["jsexport/battle"] = (function() {
thatPlayerInNextFrame$2.CharacterState = 9;
thatPlayerInNextFrame$2.FramesToRecover = chConfig$2.LayDownFramesToRecover;
} else {
+ _tmp$17 = 0;
+ _tmp$18 = currPlayerDownsync$3.ColliderRadius;
+ halfColliderWidthDiff = _tmp$17;
+ halfColliderHeightDiff = _tmp$18;
+ _tuple$7 = VirtualGridToWorldPos(halfColliderWidthDiff, halfColliderHeightDiff);
+ halfColliderWorldHeightDiff = _tuple$7[1];
+ _index$2 = joinIndex$2 - 1 >> 0;
+ ((_index$2 < 0 || _index$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + _index$2]).Y = ((_index$2 < 0 || _index$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + _index$2]).Y - (halfColliderWorldHeightDiff);
thatPlayerInNextFrame$2.CharacterState = 0;
thatPlayerInNextFrame$2.FramesToRecover = 0;
}
@@ -5722,63 +5742,63 @@ $packages["jsexport/battle"] = (function() {
}
}
_i$4++;
- $s = 14; continue;
- case 15:
+ $s = 15; continue;
+ case 16:
_ref$9 = bulletColliders;
_i$7 = 0;
- /* while (true) { */ case 22:
- /* if (!(_i$7 < _ref$9.$length)) { break; } */ if(!(_i$7 < _ref$9.$length)) { $s = 23; continue; }
+ /* while (true) { */ case 23:
+ /* if (!(_i$7 < _ref$9.$length)) { break; } */ if(!(_i$7 < _ref$9.$length)) { $s = 24; continue; }
bulletCollider = ((_i$7 < 0 || _i$7 >= _ref$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$9.$array[_ref$9.$offset + _i$7]);
collision$1 = bulletCollider.Check(0, 0, new sliceType$4([]));
bulletCollider.Space.Remove(new sliceType$10([bulletCollider]));
_ref$10 = bulletCollider.Data;
- /* */ if ($assertType(_ref$10, ptrType$1, true)[1]) { $s = 24; continue; }
- /* */ $s = 25; continue;
- /* if ($assertType(_ref$10, ptrType$1, true)[1]) { */ case 24:
+ /* */ if ($assertType(_ref$10, ptrType$1, true)[1]) { $s = 25; continue; }
+ /* */ $s = 26; continue;
+ /* if ($assertType(_ref$10, ptrType$1, true)[1]) { */ case 25:
v$1 = _ref$10.$val;
if (ptrType$3.nil === collision$1) {
nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, v$1);
_i$7++;
- /* continue; */ $s = 22; continue;
+ /* continue; */ $s = 23; continue;
}
bulletShape = $assertType(bulletCollider.Shape, ptrType$6);
offender$1 = (x$9 = currRenderFrame.PlayersArr, x$10 = v$1.Bullet.OffenderJoinIndex - 1 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + x$10]));
_ref$11 = collision$1.Objects;
_i$8 = 0;
- /* while (true) { */ case 26:
- /* if (!(_i$8 < _ref$11.$length)) { break; } */ if(!(_i$8 < _ref$11.$length)) { $s = 27; continue; }
+ /* while (true) { */ case 27:
+ /* if (!(_i$8 < _ref$11.$length)) { break; } */ if(!(_i$8 < _ref$11.$length)) { $s = 28; continue; }
obj$1 = ((_i$8 < 0 || _i$8 >= _ref$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$11.$array[_ref$11.$offset + _i$8]);
defenderShape = $assertType(obj$1.Shape, ptrType$6);
_ref$12 = obj$1.Data;
- /* */ if ($assertType(_ref$12, ptrType$5, true)[1]) { $s = 28; continue; }
- /* */ $s = 29; continue;
- /* if ($assertType(_ref$12, ptrType$5, true)[1]) { */ case 28:
+ /* */ if ($assertType(_ref$12, ptrType$5, true)[1]) { $s = 29; continue; }
+ /* */ $s = 30; continue;
+ /* if ($assertType(_ref$12, ptrType$5, true)[1]) { */ case 29:
t = _ref$12.$val;
if (v$1.Bullet.OffenderJoinIndex === t.JoinIndex) {
_i$8++;
- /* continue; */ $s = 26; continue;
+ /* continue; */ $s = 27; continue;
}
- _tuple$6 = (_entry$3 = invinsibleSet[$Int32.keyFor(t.CharacterState)], _entry$3 !== undefined ? [_entry$3.v, true] : [false, false]);
- existent$1 = _tuple$6[1];
+ _tuple$8 = (_entry$1 = invinsibleSet[$Int32.keyFor(t.CharacterState)], _entry$1 !== undefined ? [_entry$1.v, true] : [false, false]);
+ existent$1 = _tuple$8[1];
if (existent$1) {
_i$8++;
- /* continue; */ $s = 26; continue;
+ /* continue; */ $s = 27; continue;
}
- _r$4 = CalcPushbacks(0, 0, bulletShape, defenderShape); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
- _tuple$7 = _r$4;
- overlapped$1 = _tuple$7[0];
+ _r$5 = CalcPushbacks(0, 0, bulletShape, defenderShape); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
+ _tuple$9 = _r$5;
+ overlapped$1 = _tuple$9[0];
if (!overlapped$1) {
_i$8++;
- /* continue; */ $s = 26; continue;
+ /* continue; */ $s = 27; continue;
}
xfac$1 = 1;
if (0 > offender$1.DirX) {
xfac$1 = -xfac$1;
}
- _tmp$11 = $imul(xfac$1, v$1.Bullet.PushbackVelX);
- _tmp$12 = v$1.Bullet.PushbackVelY;
- pushbackVelX = _tmp$11;
- pushbackVelY = _tmp$12;
+ _tmp$19 = $imul(xfac$1, v$1.Bullet.PushbackVelX);
+ _tmp$20 = v$1.Bullet.PushbackVelY;
+ pushbackVelX = _tmp$19;
+ pushbackVelY = _tmp$20;
atkedPlayerInNextFrame = (x$11 = t.JoinIndex - 1 >> 0, ((x$11 < 0 || x$11 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + x$11]));
atkedPlayerInNextFrame.VelX = pushbackVelX;
atkedPlayerInNextFrame.VelY = pushbackVelY;
@@ -5791,17 +5811,17 @@ $packages["jsexport/battle"] = (function() {
if (v$1.Bullet.HitStunFrames > oldFramesToRecover) {
atkedPlayerInNextFrame.FramesToRecover = v$1.Bullet.HitStunFrames;
}
- $s = 30; continue;
- /* } else { */ case 29:
+ $s = 31; continue;
+ /* } else { */ case 30:
t$1 = _ref$12;
- /* } */ case 30:
+ /* } */ case 31:
_i$8++;
- $s = 26; continue;
- case 27:
- /* } */ case 25:
+ $s = 27; continue;
+ case 28:
+ /* } */ case 26:
_i$7++;
- $s = 22; continue;
- case 23:
+ $s = 23; continue;
+ case 24:
_ref$13 = currRenderFrame.PlayersArr;
_i$9 = 0;
while (true) {
@@ -5809,40 +5829,47 @@ $packages["jsexport/battle"] = (function() {
i$4 = _i$9;
currPlayerDownsync$4 = ((_i$9 < 0 || _i$9 >= _ref$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$13.$array[_ref$13.$offset + _i$9]);
joinIndex$3 = currPlayerDownsync$4.JoinIndex;
- collisionPlayerIndex$2 = 131072 + joinIndex$3 >> 0;
- playerCollider$2 = (_entry$4 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$2)], _entry$4 !== undefined ? _entry$4.v : ptrType$8.nil);
+ playerCollider$2 = ((i$4 < 0 || i$4 >= playerColliders.$length) ? ($throwRuntimeError("index out of range"), undefined) : playerColliders.$array[playerColliders.$offset + i$4]);
thatPlayerInNextFrame$3 = ((i$4 < 0 || i$4 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$4]);
- _tuple$8 = PolygonColliderBLToVirtualGridPos(playerCollider$2.X - (x$13 = joinIndex$3 - 1 >> 0, ((x$13 < 0 || x$13 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$13])).X, playerCollider$2.Y - (x$14 = joinIndex$3 - 1 >> 0, ((x$14 < 0 || x$14 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$14])).Y, playerCollider$2.W * 0.5, playerCollider$2.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY);
- thatPlayerInNextFrame$3.VirtualGridX = _tuple$8[0];
- thatPlayerInNextFrame$3.VirtualGridY = _tuple$8[1];
+ _tuple$10 = PolygonColliderBLToVirtualGridPos(playerCollider$2.X - (x$13 = joinIndex$3 - 1 >> 0, ((x$13 < 0 || x$13 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$13])).X, playerCollider$2.Y - (x$14 = joinIndex$3 - 1 >> 0, ((x$14 < 0 || x$14 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$14])).Y, playerCollider$2.W * 0.5, playerCollider$2.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY);
+ thatPlayerInNextFrame$3.VirtualGridX = _tuple$10[0];
+ thatPlayerInNextFrame$3.VirtualGridY = _tuple$10[1];
if (thatPlayerInNextFrame$3.InAir) {
oldNextCharacterState = thatPlayerInNextFrame$3.CharacterState;
- _1 = oldNextCharacterState;
- if ((_1 === (0)) || (_1 === (1))) {
+ _2 = oldNextCharacterState;
+ if ((_2 === (0)) || (_2 === (1))) {
if (((i$4 < 0 || i$4 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$4]) || (5 === currPlayerDownsync$4.CharacterState)) {
thatPlayerInNextFrame$3.CharacterState = 5;
} else {
thatPlayerInNextFrame$3.CharacterState = 4;
}
- } else if (_1 === (2)) {
+ } else if (_2 === (2)) {
thatPlayerInNextFrame$3.CharacterState = 6;
- } else if (_1 === (3)) {
+ } else if (_2 === (3)) {
thatPlayerInNextFrame$3.CharacterState = 7;
}
}
if (!((thatPlayerInNextFrame$3.CharacterState === currPlayerDownsync$4.CharacterState))) {
thatPlayerInNextFrame$3.FramesInChState = 0;
}
- _tuple$9 = (_entry$5 = nonAttackingSet[$Int32.keyFor(thatPlayerInNextFrame$3.CharacterState)], _entry$5 !== undefined ? [_entry$5.v, true] : [false, false]);
- existent$2 = _tuple$9[1];
+ _tuple$11 = (_entry$2 = nonAttackingSet[$Int32.keyFor(thatPlayerInNextFrame$3.CharacterState)], _entry$2 !== undefined ? [_entry$2.v, true] : [false, false]);
+ existent$2 = _tuple$11[1];
if (existent$2) {
thatPlayerInNextFrame$3.ActiveSkillId = -1;
thatPlayerInNextFrame$3.ActiveSkillHit = -1;
}
_i$9++;
}
+ _ref$14 = playerColliders;
+ _i$10 = 0;
+ while (true) {
+ if (!(_i$10 < _ref$14.$length)) { break; }
+ playerCollider$3 = ((_i$10 < 0 || _i$10 >= _ref$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$14.$array[_ref$14.$offset + _i$10]);
+ playerCollider$3.Space.Remove(new sliceType$10([playerCollider$3]));
+ _i$10++;
+ }
$s = -1; return new RoomDownsyncFrame.ptr(currRenderFrame.Id + 1 >> 0, nextRenderFramePlayers, new $Int64(0, 0), nextRenderFrameMeleeBullets, sliceType$11.nil, new $Uint64(0, 0), false, false);
- /* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s};return $f;
+ /* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _2, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s};return $f;
};
$pkg.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame;
GenerateRectCollider = function(wx, wy, w, h, topPadding, bottomPadding, leftPadding, rightPadding, spaceOffsetX, spaceOffsetY, data, tag) {
diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist
index 07d55f2..fbfe783 100644
--- a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist
+++ b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist
@@ -15,7 +15,7 @@
spriteSourceSize
{112,128}
textureRect
- {{524,699},{112,128}}
+ {{824,544},{112,128}}
textureRotated
@@ -30,7 +30,7 @@
spriteSourceSize
{112,128}
textureRect
- {{524,827},{112,128}}
+ {{0,1200},{112,128}}
textureRotated
@@ -45,7 +45,7 @@
spriteSourceSize
{64,128}
textureRect
- {{932,144},{64,128}}
+ {{616,403},{64,128}}
textureRotated
@@ -60,7 +60,7 @@
spriteSourceSize
{80,128}
textureRect
- {{927,272},{80,128}}
+ {{940,0},{80,128}}
textureRotated
@@ -75,7 +75,7 @@
spriteSourceSize
{80,128}
textureRect
- {{927,400},{80,128}}
+ {{940,128},{80,128}}
textureRotated
@@ -90,7 +90,7 @@
spriteSourceSize
{112,128}
textureRect
- {{412,933},{112,128}}
+ {{0,964},{112,128}}
textureRotated
@@ -105,7 +105,7 @@
spriteSourceSize
{112,128}
textureRect
- {{412,1061},{112,128}}
+ {{112,964},{112,128}}
textureRotated
@@ -120,7 +120,7 @@
spriteSourceSize
{96,128}
textureRect
- {{540,443},{96,128}}
+ {{840,288},{96,128}}
textureRotated
@@ -135,7 +135,7 @@
spriteSourceSize
{96,128}
textureRect
- {{540,571},{96,128}}
+ {{840,416},{96,128}}
textureRotated
@@ -150,7 +150,7 @@
spriteSourceSize
{80,128}
textureRect
- {{924,528},{80,128}}
+ {{940,256},{80,128}}
textureRotated
@@ -165,7 +165,7 @@
spriteSourceSize
{80,128}
textureRect
- {{316,553},{80,128}}
+ {{936,384},{80,128}}
textureRotated
@@ -180,7 +180,7 @@
spriteSourceSize
{80,128}
textureRect
- {{316,681},{80,128}}
+ {{936,512},{80,128}}
textureRotated
@@ -195,7 +195,7 @@
spriteSourceSize
{80,128}
textureRect
- {{316,809},{80,128}}
+ {{936,640},{80,128}}
textureRotated
@@ -210,7 +210,7 @@
spriteSourceSize
{96,128}
textureRect
- {{316,937},{96,128}}
+ {{582,531},{96,128}}
textureRotated
@@ -225,7 +225,7 @@
spriteSourceSize
{128,112}
textureRect
- {{799,387},{128,112}}
+ {{326,871},{128,112}}
textureRotated
@@ -240,7 +240,7 @@
spriteSourceSize
{96,96}
textureRect
- {{316,1321},{96,96}}
+ {{696,1200},{96,96}}
textureRotated
@@ -255,9 +255,9 @@
spriteSourceSize
{96,112}
textureRect
- {{328,1417},{96,112}}
+ {{416,983},{96,112}}
textureRotated
-
+
Atk2_3.png
@@ -270,9 +270,9 @@
spriteSourceSize
{96,112}
textureRect
- {{424,1413},{96,112}}
+ {{656,1092},{96,112}}
textureRotated
-
+
Atk2_4.png
@@ -285,7 +285,7 @@
spriteSourceSize
{96,112}
textureRect
- {{520,1419},{96,112}}
+ {{528,1113},{96,112}}
textureRotated
@@ -300,7 +300,7 @@
spriteSourceSize
{96,112}
textureRect
- {{764,1075},{96,112}}
+ {{392,1207},{96,112}}
textureRotated
@@ -315,7 +315,7 @@
spriteSourceSize
{144,112}
textureRect
- {{396,471},{144,112}}
+ {{328,403},{144,112}}
textureRotated
@@ -330,7 +330,7 @@
spriteSourceSize
{128,112}
textureRect
- {{636,611},{128,112}}
+ {{454,871},{128,112}}
textureRotated
@@ -345,9 +345,9 @@
spriteSourceSize
{160,112}
textureRect
- {{527,283},{160,112}}
+ {{680,288},{160,112}}
textureRotated
-
+
Atk2_9.png
@@ -360,7 +360,7 @@
spriteSourceSize
{144,112}
textureRect
- {{636,499},{144,112}}
+ {{472,403},{144,112}}
textureRotated
@@ -375,7 +375,7 @@
spriteSourceSize
{188,144}
textureRect
- {{208,278},{188,144}}
+ {{0,0},{188,144}}
textureRotated
@@ -390,7 +390,7 @@
spriteSourceSize
{188,144}
textureRect
- {{0,556},{188,144}}
+ {{188,0},{188,144}}
textureRotated
@@ -405,7 +405,7 @@
spriteSourceSize
{188,144}
textureRect
- {{0,700},{188,144}}
+ {{376,0},{188,144}}
textureRotated
@@ -420,7 +420,7 @@
spriteSourceSize
{188,144}
textureRect
- {{0,844},{188,144}}
+ {{564,0},{188,144}}
textureRotated
@@ -435,7 +435,7 @@
spriteSourceSize
{188,144}
textureRect
- {{0,988},{188,144}}
+ {{752,0},{188,144}}
textureRotated
@@ -450,7 +450,7 @@
spriteSourceSize
{188,144}
textureRect
- {{0,1132},{188,144}}
+ {{0,144},{188,144}}
textureRotated
@@ -465,7 +465,7 @@
spriteSourceSize
{188,144}
textureRect
- {{0,1276},{188,144}}
+ {{188,144},{188,144}}
textureRotated
@@ -480,7 +480,7 @@
spriteSourceSize
{188,144}
textureRect
- {{416,139},{188,144}}
+ {{376,144},{188,144}}
textureRotated
@@ -495,7 +495,7 @@
spriteSourceSize
{188,144}
textureRect
- {{624,0},{188,144}}
+ {{564,144},{188,144}}
textureRotated
@@ -510,7 +510,7 @@
spriteSourceSize
{188,144}
textureRect
- {{812,0},{188,144}}
+ {{752,144},{188,144}}
textureRotated
@@ -525,7 +525,7 @@
spriteSourceSize
{96,128}
textureRect
- {{316,1065},{96,128}}
+ {{582,659},{96,128}}
textureRotated
@@ -540,7 +540,7 @@
spriteSourceSize
{112,112}
textureRect
- {{540,1307},{112,112}}
+ {{240,1081},{112,112}}
textureRotated
@@ -555,7 +555,7 @@
spriteSourceSize
{96,112}
textureRect
- {{769,1171},{96,112}}
+ {{504,1209},{96,112}}
textureRotated
@@ -570,7 +570,7 @@
spriteSourceSize
{128,112}
textureRect
- {{636,723},{128,112}}
+ {{678,980},{128,112}}
textureRotated
@@ -585,7 +585,7 @@
spriteSourceSize
{164,115}
textureRect
- {{0,1420},{164,115}}
+ {{352,288},{164,115}}
textureRotated
@@ -600,7 +600,7 @@
spriteSourceSize
{164,115}
textureRect
- {{164,1420},{164,115}}
+ {{0,374},{164,115}}
textureRotated
@@ -615,7 +615,7 @@
spriteSourceSize
{164,115}
textureRect
- {{604,144},{164,115}}
+ {{164,374},{164,115}}
textureRotated
@@ -630,7 +630,7 @@
spriteSourceSize
{164,115}
textureRect
- {{768,144},{164,115}}
+ {{516,288},{164,115}}
textureRotated
@@ -641,11 +641,11 @@
spriteOffset
{0,0}
spriteSize
- {208,139}
+ {128,118}
spriteSourceSize
- {208,139}
+ {128,118}
textureRect
- {{0,0},{208,139}}
+ {{806,791},{128,118}}
textureRotated
@@ -656,11 +656,11 @@
spriteOffset
{0,0}
spriteSize
- {208,139}
+ {128,118}
spriteSourceSize
- {208,139}
+ {128,118}
textureRect
- {{0,139},{208,139}}
+ {{0,846},{128,118}}
textureRotated
@@ -671,11 +671,11 @@
spriteOffset
{0,0}
spriteSize
- {208,139}
+ {128,118}
spriteSourceSize
- {208,139}
+ {128,118}
textureRect
- {{208,0},{208,139}}
+ {{128,846},{128,118}}
textureRotated
@@ -686,11 +686,11 @@
spriteOffset
{0,0}
spriteSize
- {208,139}
+ {128,118}
spriteSourceSize
- {208,139}
+ {128,118}
textureRect
- {{0,278},{208,139}}
+ {{326,753},{128,118}}
textureRotated
@@ -701,11 +701,11 @@
spriteOffset
{0,0}
spriteSize
- {208,139}
+ {128,118}
spriteSourceSize
- {208,139}
+ {128,118}
textureRect
- {{208,139},{208,139}}
+ {{454,753},{128,118}}
textureRotated
@@ -716,11 +716,11 @@
spriteOffset
{0,0}
spriteSize
- {208,139}
+ {128,118}
spriteSourceSize
- {208,139}
+ {128,118}
textureRect
- {{416,0},{208,139}}
+ {{678,862},{128,118}}
textureRotated
@@ -731,11 +731,11 @@
spriteOffset
{0,0}
spriteSize
- {208,139}
+ {128,118}
spriteSourceSize
- {208,139}
+ {128,118}
textureRect
- {{0,417},{208,139}}
+ {{806,909},{128,118}}
textureRotated
@@ -746,11 +746,11 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{639,259},{144,128}}
+ {{256,489},{70,128}}
textureRotated
@@ -761,11 +761,11 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{783,259},{144,128}}
+ {{256,617},{70,128}}
textureRotated
@@ -776,11 +776,11 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{780,499},{144,128}}
+ {{256,745},{70,128}}
textureRotated
@@ -791,13 +791,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,556},{144,128}}
+ {{256,873},{70,128}}
textureRotated
-
+
Idle1_13.png
@@ -806,13 +806,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,700},{144,128}}
+ {{112,1200},{70,128}}
textureRotated
-
+
Idle1_14.png
@@ -821,13 +821,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,844},{144,128}}
+ {{182,1200},{70,128}}
textureRotated
-
+
Idle1_15.png
@@ -836,13 +836,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,988},{144,128}}
+ {{252,1200},{70,128}}
textureRotated
-
+
Idle1_2.png
@@ -851,13 +851,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,988},{144,128}}
+ {{252,1200},{70,128}}
textureRotated
-
+
Idle1_3.png
@@ -866,13 +866,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,844},{144,128}}
+ {{182,1200},{70,128}}
textureRotated
-
+
Idle1_4.png
@@ -881,13 +881,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,700},{144,128}}
+ {{112,1200},{70,128}}
textureRotated
-
+
Idle1_5.png
@@ -896,13 +896,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,556},{144,128}}
+ {{256,873},{70,128}}
textureRotated
-
+
Idle1_6.png
@@ -911,11 +911,11 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{780,499},{144,128}}
+ {{256,745},{70,128}}
textureRotated
@@ -926,11 +926,11 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{783,259},{144,128}}
+ {{256,617},{70,128}}
textureRotated
@@ -941,13 +941,13 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,1132},{144,128}}
+ {{322,1200},{70,128}}
textureRotated
-
+
Idle1_9.png
@@ -956,11 +956,11 @@
spriteOffset
{0,0}
spriteSize
- {144,128}
+ {70,128}
spriteSourceSize
- {144,128}
+ {70,128}
textureRect
- {{188,1276},{144,128}}
+ {{528,1043},{70,128}}
textureRotated
@@ -975,7 +975,7 @@
spriteSourceSize
{112,96}
textureRect
- {{524,1083},{112,96}}
+ {{128,1092},{112,96}}
textureRotated
@@ -990,7 +990,7 @@
spriteSourceSize
{160,112}
textureRect
- {{639,387},{160,112}}
+ {{680,400},{160,112}}
textureRotated
@@ -1005,7 +1005,7 @@
spriteSourceSize
{144,112}
textureRect
- {{396,583},{144,112}}
+ {{680,512},{144,112}}
textureRotated
@@ -1020,9 +1020,9 @@
spriteSourceSize
{128,112}
textureRect
- {{524,955},{128,112}}
+ {{806,1027},{128,112}}
textureRotated
-
+
InAirAtk1_4.png
@@ -1035,7 +1035,7 @@
spriteSourceSize
{96,96}
textureRect
- {{769,1283},{96,96}}
+ {{792,1139},{96,96}}
textureRotated
@@ -1050,9 +1050,9 @@
spriteSourceSize
{80,96}
textureRect
- {{764,1379},{80,96}}
+ {{934,1104},{80,96}}
textureRotated
-
+
InAirAtked1_0.png
@@ -1065,7 +1065,7 @@
spriteSourceSize
{112,112}
textureRect
- {{652,1306},{112,112}}
+ {{352,1081},{112,112}}
textureRotated
@@ -1080,7 +1080,7 @@
spriteSourceSize
{128,96}
textureRect
- {{636,1082},{128,96}}
+ {{0,1092},{128,96}}
textureRotated
@@ -1095,9 +1095,9 @@
spriteSourceSize
{80,112}
textureRect
- {{883,1013},{80,112}}
+ {{934,768},{80,112}}
textureRotated
-
+
InAirIdle1_1.png
@@ -1110,9 +1110,9 @@
spriteSourceSize
{80,112}
textureRect
- {{876,1093},{80,112}}
+ {{934,880},{80,112}}
textureRotated
-
+
InAirIdle1_2.png
@@ -1125,9 +1125,9 @@
spriteSourceSize
{64,128}
textureRect
- {{755,1011},{64,128}}
+ {{464,1079},{64,128}}
textureRotated
-
+
InAirIdle1_3.png
@@ -1140,9 +1140,9 @@
spriteSourceSize
{80,112}
textureRect
- {{865,1269},{80,112}}
+ {{934,992},{80,112}}
textureRotated
-
+
InAirIdle1_4.png
@@ -1155,7 +1155,7 @@
spriteSourceSize
{80,96}
textureRect
- {{865,1349},{80,96}}
+ {{224,1001},{80,96}}
textureRotated
@@ -1170,7 +1170,7 @@
spriteSourceSize
{80,96}
textureRect
- {{860,1429},{80,96}}
+ {{320,1001},{80,96}}
textureRotated
@@ -1185,7 +1185,7 @@
spriteSourceSize
{80,96}
textureRect
- {{632,1419},{80,96}}
+ {{792,1235},{80,96}}
textureRotated
@@ -1200,9 +1200,9 @@
spriteSourceSize
{96,112}
textureRect
- {{865,1173},{96,112}}
+ {{600,1209},{96,112}}
textureRotated
-
+
InAirIdle1_8.png
@@ -1215,7 +1215,7 @@
spriteSourceSize
{96,128}
textureRect
- {{316,1193},{96,128}}
+ {{582,787},{96,128}}
textureRotated
@@ -1230,9 +1230,9 @@
spriteSourceSize
{96,128}
textureRect
- {{412,1317},{96,128}}
+ {{582,915},{96,128}}
textureRotated
-
+
LayDown1_1.png
@@ -1241,13 +1241,13 @@
spriteOffset
{0,0}
spriteSize
- {131,188}
+ {176,86}
spriteSourceSize
- {131,188}
+ {176,86}
textureRect
- {{208,422},{131,188}}
+ {{0,288},{176,86}}
textureRotated
-
+
LayDown1_2.png
@@ -1256,11 +1256,11 @@
spriteOffset
{0,0}
spriteSize
- {131,188}
+ {176,86}
spriteSourceSize
- {131,188}
+ {176,86}
textureRect
- {{396,283},{131,188}}
+ {{176,288},{176,86}}
textureRotated
@@ -1275,7 +1275,7 @@
spriteSourceSize
{119,128}
textureRect
- {{396,695},{119,128}}
+ {{0,489},{119,128}}
textureRotated
@@ -1290,9 +1290,9 @@
spriteSourceSize
{119,128}
textureRect
- {{764,627},{119,128}}
+ {{128,489},{119,128}}
textureRotated
-
+
Walking_11.png
@@ -1305,7 +1305,7 @@
spriteSourceSize
{119,128}
textureRect
- {{883,656},{119,128}}
+ {{0,608},{119,128}}
textureRotated
@@ -1320,9 +1320,9 @@
spriteSourceSize
{119,128}
textureRect
- {{764,755},{119,128}}
+ {{128,608},{119,128}}
textureRotated
-
+
Walking_13.png
@@ -1335,7 +1335,7 @@
spriteSourceSize
{119,128}
textureRect
- {{883,775},{119,128}}
+ {{326,515},{119,128}}
textureRotated
@@ -1350,7 +1350,7 @@
spriteSourceSize
{119,128}
textureRect
- {{396,814},{119,128}}
+ {{454,515},{119,128}}
textureRotated
@@ -1365,7 +1365,7 @@
spriteSourceSize
{119,128}
textureRect
- {{636,835},{119,128}}
+ {{678,624},{119,128}}
textureRotated
@@ -1380,9 +1380,9 @@
spriteSourceSize
{119,128}
textureRect
- {{636,954},{119,128}}
+ {{806,672},{119,128}}
textureRotated
-
+
Walking_5.png
@@ -1395,9 +1395,9 @@
spriteSourceSize
{119,128}
textureRect
- {{412,1189},{119,128}}
+ {{0,727},{119,128}}
textureRotated
-
+
Walking_6.png
@@ -1410,9 +1410,9 @@
spriteSourceSize
{119,128}
textureRect
- {{531,1179},{119,128}}
+ {{128,727},{119,128}}
textureRotated
-
+
Walking_7.png
@@ -1425,9 +1425,9 @@
spriteSourceSize
{119,128}
textureRect
- {{650,1178},{119,128}}
+ {{326,634},{119,128}}
textureRotated
-
+
Walking_8.png
@@ -1440,9 +1440,9 @@
spriteSourceSize
{119,128}
textureRect
- {{764,883},{119,128}}
+ {{454,634},{119,128}}
textureRotated
-
+
Walking_9.png
@@ -1455,7 +1455,7 @@
spriteSourceSize
{119,128}
textureRect
- {{883,894},{119,128}}
+ {{678,743},{119,128}}
textureRotated
@@ -1471,9 +1471,9 @@
realTextureFileName
KnifeGirl.png
size
- {1011,1535}
+ {1020,1331}
smartupdate
- $TexturePacker:SmartUpdate:f252fe395c8b73eac036cce868bca4bd:cc7b2dcbe80e2927a14b4c2409462644:1ae107e0c6667a1ecb5ed98687517e0e$
+ $TexturePacker:SmartUpdate:9514b6b35473e14baf98f68515bcb817:1aae9dd4a8024ce783fdab093a39672a:1ae107e0c6667a1ecb5ed98687517e0e$
textureFileName
KnifeGirl.png
diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta
index 566abdd..199cf90 100644
--- a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta
+++ b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta
@@ -3,8 +3,8 @@
"uuid": "579bc0c1-f5e2-4a5d-889b-9d567e53b0e6",
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"size": {
- "width": 1011,
- "height": 1535
+ "width": 1020,
+ "height": 1331
},
"type": "Texture Packer",
"subMetas": {
@@ -17,8 +17,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 524,
- "trimY": 699,
+ "trimX": 824,
+ "trimY": 544,
"width": 112,
"height": 128,
"rawWidth": 112,
@@ -39,8 +39,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 524,
- "trimY": 827,
+ "trimX": 0,
+ "trimY": 1200,
"width": 112,
"height": 128,
"rawWidth": 112,
@@ -61,8 +61,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 932,
- "trimY": 144,
+ "trimX": 616,
+ "trimY": 403,
"width": 64,
"height": 128,
"rawWidth": 64,
@@ -83,8 +83,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 927,
- "trimY": 272,
+ "trimX": 940,
+ "trimY": 0,
"width": 80,
"height": 128,
"rawWidth": 80,
@@ -105,8 +105,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 927,
- "trimY": 400,
+ "trimX": 940,
+ "trimY": 128,
"width": 80,
"height": 128,
"rawWidth": 80,
@@ -127,8 +127,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 412,
- "trimY": 933,
+ "trimX": 0,
+ "trimY": 964,
"width": 112,
"height": 128,
"rawWidth": 112,
@@ -149,8 +149,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 412,
- "trimY": 1061,
+ "trimX": 112,
+ "trimY": 964,
"width": 112,
"height": 128,
"rawWidth": 112,
@@ -171,8 +171,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 540,
- "trimY": 443,
+ "trimX": 840,
+ "trimY": 288,
"width": 96,
"height": 128,
"rawWidth": 96,
@@ -193,8 +193,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 540,
- "trimY": 571,
+ "trimX": 840,
+ "trimY": 416,
"width": 96,
"height": 128,
"rawWidth": 96,
@@ -215,8 +215,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 924,
- "trimY": 528,
+ "trimX": 940,
+ "trimY": 256,
"width": 80,
"height": 128,
"rawWidth": 80,
@@ -237,8 +237,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 316,
- "trimY": 553,
+ "trimX": 936,
+ "trimY": 384,
"width": 80,
"height": 128,
"rawWidth": 80,
@@ -259,8 +259,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 316,
- "trimY": 681,
+ "trimX": 936,
+ "trimY": 512,
"width": 80,
"height": 128,
"rawWidth": 80,
@@ -281,8 +281,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 316,
- "trimY": 809,
+ "trimX": 936,
+ "trimY": 640,
"width": 80,
"height": 128,
"rawWidth": 80,
@@ -303,8 +303,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 316,
- "trimY": 937,
+ "trimX": 582,
+ "trimY": 531,
"width": 96,
"height": 128,
"rawWidth": 96,
@@ -325,8 +325,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 799,
- "trimY": 387,
+ "trimX": 326,
+ "trimY": 871,
"width": 128,
"height": 112,
"rawWidth": 128,
@@ -347,8 +347,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 316,
- "trimY": 1321,
+ "trimX": 696,
+ "trimY": 1200,
"width": 96,
"height": 96,
"rawWidth": 96,
@@ -366,11 +366,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 328,
- "trimY": 1417,
+ "trimX": 416,
+ "trimY": 983,
"width": 96,
"height": 112,
"rawWidth": 96,
@@ -388,11 +388,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 424,
- "trimY": 1413,
+ "trimX": 656,
+ "trimY": 1092,
"width": 96,
"height": 112,
"rawWidth": 96,
@@ -413,8 +413,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 520,
- "trimY": 1419,
+ "trimX": 528,
+ "trimY": 1113,
"width": 96,
"height": 112,
"rawWidth": 96,
@@ -435,8 +435,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 764,
- "trimY": 1075,
+ "trimX": 392,
+ "trimY": 1207,
"width": 96,
"height": 112,
"rawWidth": 96,
@@ -457,8 +457,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 396,
- "trimY": 471,
+ "trimX": 328,
+ "trimY": 403,
"width": 144,
"height": 112,
"rawWidth": 144,
@@ -479,8 +479,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 636,
- "trimY": 611,
+ "trimX": 454,
+ "trimY": 871,
"width": 128,
"height": 112,
"rawWidth": 128,
@@ -498,11 +498,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 527,
- "trimY": 283,
+ "trimX": 680,
+ "trimY": 288,
"width": 160,
"height": 112,
"rawWidth": 160,
@@ -523,8 +523,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 636,
- "trimY": 499,
+ "trimX": 472,
+ "trimY": 403,
"width": 144,
"height": 112,
"rawWidth": 144,
@@ -545,8 +545,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 208,
- "trimY": 278,
+ "trimX": 0,
+ "trimY": 0,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -567,8 +567,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 556,
+ "trimX": 188,
+ "trimY": 0,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -589,8 +589,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 700,
+ "trimX": 376,
+ "trimY": 0,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -611,8 +611,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 844,
+ "trimX": 564,
+ "trimY": 0,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -633,8 +633,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 988,
+ "trimX": 752,
+ "trimY": 0,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -656,7 +656,7 @@
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
- "trimY": 1132,
+ "trimY": 144,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -677,8 +677,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 1276,
+ "trimX": 188,
+ "trimY": 144,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -699,8 +699,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 416,
- "trimY": 139,
+ "trimX": 376,
+ "trimY": 144,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -721,8 +721,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 624,
- "trimY": 0,
+ "trimX": 564,
+ "trimY": 144,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -743,8 +743,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 812,
- "trimY": 0,
+ "trimX": 752,
+ "trimY": 144,
"width": 188,
"height": 144,
"rawWidth": 188,
@@ -765,8 +765,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 316,
- "trimY": 1065,
+ "trimX": 582,
+ "trimY": 659,
"width": 96,
"height": 128,
"rawWidth": 96,
@@ -787,8 +787,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 540,
- "trimY": 1307,
+ "trimX": 240,
+ "trimY": 1081,
"width": 112,
"height": 112,
"rawWidth": 112,
@@ -809,8 +809,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 769,
- "trimY": 1171,
+ "trimX": 504,
+ "trimY": 1209,
"width": 96,
"height": 112,
"rawWidth": 96,
@@ -831,8 +831,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 636,
- "trimY": 723,
+ "trimX": 678,
+ "trimY": 980,
"width": 128,
"height": 112,
"rawWidth": 128,
@@ -853,8 +853,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 1420,
+ "trimX": 352,
+ "trimY": 288,
"width": 164,
"height": 115,
"rawWidth": 164,
@@ -875,8 +875,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 164,
- "trimY": 1420,
+ "trimX": 0,
+ "trimY": 374,
"width": 164,
"height": 115,
"rawWidth": 164,
@@ -897,8 +897,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 604,
- "trimY": 144,
+ "trimX": 164,
+ "trimY": 374,
"width": 164,
"height": 115,
"rawWidth": 164,
@@ -919,8 +919,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 768,
- "trimY": 144,
+ "trimX": 516,
+ "trimY": 288,
"width": 164,
"height": 115,
"rawWidth": 164,
@@ -941,12 +941,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 0,
- "width": 208,
- "height": 139,
- "rawWidth": 208,
- "rawHeight": 139,
+ "trimX": 806,
+ "trimY": 791,
+ "width": 128,
+ "height": 118,
+ "rawWidth": 128,
+ "rawHeight": 118,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -964,11 +964,11 @@
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
- "trimY": 139,
- "width": 208,
- "height": 139,
- "rawWidth": 208,
- "rawHeight": 139,
+ "trimY": 846,
+ "width": 128,
+ "height": 118,
+ "rawWidth": 128,
+ "rawHeight": 118,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -985,12 +985,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 208,
- "trimY": 0,
- "width": 208,
- "height": 139,
- "rawWidth": 208,
- "rawHeight": 139,
+ "trimX": 128,
+ "trimY": 846,
+ "width": 128,
+ "height": 118,
+ "rawWidth": 128,
+ "rawHeight": 118,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1007,12 +1007,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 278,
- "width": 208,
- "height": 139,
- "rawWidth": 208,
- "rawHeight": 139,
+ "trimX": 326,
+ "trimY": 753,
+ "width": 128,
+ "height": 118,
+ "rawWidth": 128,
+ "rawHeight": 118,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1029,12 +1029,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 208,
- "trimY": 139,
- "width": 208,
- "height": 139,
- "rawWidth": 208,
- "rawHeight": 139,
+ "trimX": 454,
+ "trimY": 753,
+ "width": 128,
+ "height": 118,
+ "rawWidth": 128,
+ "rawHeight": 118,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1051,12 +1051,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 416,
- "trimY": 0,
- "width": 208,
- "height": 139,
- "rawWidth": 208,
- "rawHeight": 139,
+ "trimX": 678,
+ "trimY": 862,
+ "width": 128,
+ "height": 118,
+ "rawWidth": 128,
+ "rawHeight": 118,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1073,12 +1073,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 0,
- "trimY": 417,
- "width": 208,
- "height": 139,
- "rawWidth": 208,
- "rawHeight": 139,
+ "trimX": 806,
+ "trimY": 909,
+ "width": 128,
+ "height": 118,
+ "rawWidth": 128,
+ "rawHeight": 118,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1095,11 +1095,11 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 639,
- "trimY": 259,
- "width": 144,
+ "trimX": 256,
+ "trimY": 489,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1117,11 +1117,11 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 783,
- "trimY": 259,
- "width": 144,
+ "trimX": 256,
+ "trimY": 617,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1139,11 +1139,11 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 780,
- "trimY": 499,
- "width": 144,
+ "trimX": 256,
+ "trimY": 745,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1158,14 +1158,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 556,
- "width": 144,
+ "trimX": 256,
+ "trimY": 873,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1180,14 +1180,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 700,
- "width": 144,
+ "trimX": 112,
+ "trimY": 1200,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1202,14 +1202,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 844,
- "width": 144,
+ "trimX": 182,
+ "trimY": 1200,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1224,14 +1224,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 988,
- "width": 144,
+ "trimX": 252,
+ "trimY": 1200,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1246,14 +1246,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 988,
- "width": 144,
+ "trimX": 252,
+ "trimY": 1200,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1268,14 +1268,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 844,
- "width": 144,
+ "trimX": 182,
+ "trimY": 1200,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1290,14 +1290,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 700,
- "width": 144,
+ "trimX": 112,
+ "trimY": 1200,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1312,14 +1312,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 556,
- "width": 144,
+ "trimX": 256,
+ "trimY": 873,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1337,11 +1337,11 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 780,
- "trimY": 499,
- "width": 144,
+ "trimX": 256,
+ "trimY": 745,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1359,11 +1359,11 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 783,
- "trimY": 259,
- "width": 144,
+ "trimX": 256,
+ "trimY": 617,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1378,14 +1378,14 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 1132,
- "width": 144,
+ "trimX": 322,
+ "trimY": 1200,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1403,11 +1403,11 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 188,
- "trimY": 1276,
- "width": 144,
+ "trimX": 528,
+ "trimY": 1043,
+ "width": 70,
"height": 128,
- "rawWidth": 144,
+ "rawWidth": 70,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
@@ -1425,8 +1425,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 524,
- "trimY": 1083,
+ "trimX": 128,
+ "trimY": 1092,
"width": 112,
"height": 96,
"rawWidth": 112,
@@ -1447,8 +1447,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 639,
- "trimY": 387,
+ "trimX": 680,
+ "trimY": 400,
"width": 160,
"height": 112,
"rawWidth": 160,
@@ -1469,8 +1469,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 396,
- "trimY": 583,
+ "trimX": 680,
+ "trimY": 512,
"width": 144,
"height": 112,
"rawWidth": 144,
@@ -1488,11 +1488,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 524,
- "trimY": 955,
+ "trimX": 806,
+ "trimY": 1027,
"width": 128,
"height": 112,
"rawWidth": 128,
@@ -1513,8 +1513,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 769,
- "trimY": 1283,
+ "trimX": 792,
+ "trimY": 1139,
"width": 96,
"height": 96,
"rawWidth": 96,
@@ -1532,11 +1532,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 764,
- "trimY": 1379,
+ "trimX": 934,
+ "trimY": 1104,
"width": 80,
"height": 96,
"rawWidth": 80,
@@ -1557,8 +1557,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 652,
- "trimY": 1306,
+ "trimX": 352,
+ "trimY": 1081,
"width": 112,
"height": 112,
"rawWidth": 112,
@@ -1579,8 +1579,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 636,
- "trimY": 1082,
+ "trimX": 0,
+ "trimY": 1092,
"width": 128,
"height": 96,
"rawWidth": 128,
@@ -1598,11 +1598,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 883,
- "trimY": 1013,
+ "trimX": 934,
+ "trimY": 768,
"width": 80,
"height": 112,
"rawWidth": 80,
@@ -1620,11 +1620,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 876,
- "trimY": 1093,
+ "trimX": 934,
+ "trimY": 880,
"width": 80,
"height": 112,
"rawWidth": 80,
@@ -1642,11 +1642,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 755,
- "trimY": 1011,
+ "trimX": 464,
+ "trimY": 1079,
"width": 64,
"height": 128,
"rawWidth": 64,
@@ -1664,11 +1664,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 865,
- "trimY": 1269,
+ "trimX": 934,
+ "trimY": 992,
"width": 80,
"height": 112,
"rawWidth": 80,
@@ -1689,8 +1689,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 865,
- "trimY": 1349,
+ "trimX": 224,
+ "trimY": 1001,
"width": 80,
"height": 96,
"rawWidth": 80,
@@ -1711,8 +1711,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 860,
- "trimY": 1429,
+ "trimX": 320,
+ "trimY": 1001,
"width": 80,
"height": 96,
"rawWidth": 80,
@@ -1733,8 +1733,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 632,
- "trimY": 1419,
+ "trimX": 792,
+ "trimY": 1235,
"width": 80,
"height": 96,
"rawWidth": 80,
@@ -1752,11 +1752,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 865,
- "trimY": 1173,
+ "trimX": 600,
+ "trimY": 1209,
"width": 96,
"height": 112,
"rawWidth": 96,
@@ -1777,8 +1777,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 316,
- "trimY": 1193,
+ "trimX": 582,
+ "trimY": 787,
"width": 96,
"height": 128,
"rawWidth": 96,
@@ -1796,11 +1796,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 412,
- "trimY": 1317,
+ "trimX": 582,
+ "trimY": 915,
"width": 96,
"height": 128,
"rawWidth": 96,
@@ -1818,15 +1818,15 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": true,
+ "rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 208,
- "trimY": 422,
- "width": 131,
- "height": 188,
- "rawWidth": 131,
- "rawHeight": 188,
+ "trimX": 0,
+ "trimY": 288,
+ "width": 176,
+ "height": 86,
+ "rawWidth": 176,
+ "rawHeight": 86,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1843,12 +1843,12 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
- "trimX": 396,
- "trimY": 283,
- "width": 131,
- "height": 188,
- "rawWidth": 131,
- "rawHeight": 188,
+ "trimX": 176,
+ "trimY": 288,
+ "width": 176,
+ "height": 86,
+ "rawWidth": 176,
+ "rawHeight": 86,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
@@ -1865,8 +1865,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 396,
- "trimY": 695,
+ "trimX": 0,
+ "trimY": 489,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -1884,11 +1884,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 764,
- "trimY": 627,
+ "trimX": 128,
+ "trimY": 489,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -1909,8 +1909,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 883,
- "trimY": 656,
+ "trimX": 0,
+ "trimY": 608,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -1928,11 +1928,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 764,
- "trimY": 755,
+ "trimX": 128,
+ "trimY": 608,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -1953,8 +1953,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 883,
- "trimY": 775,
+ "trimX": 326,
+ "trimY": 515,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -1975,8 +1975,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 396,
- "trimY": 814,
+ "trimX": 454,
+ "trimY": 515,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -1997,8 +1997,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 636,
- "trimY": 835,
+ "trimX": 678,
+ "trimY": 624,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -2016,11 +2016,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 636,
- "trimY": 954,
+ "trimX": 806,
+ "trimY": 672,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -2038,11 +2038,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 412,
- "trimY": 1189,
+ "trimX": 0,
+ "trimY": 727,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -2060,11 +2060,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 531,
- "trimY": 1179,
+ "trimX": 128,
+ "trimY": 727,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -2082,11 +2082,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 650,
- "trimY": 1178,
+ "trimX": 326,
+ "trimY": 634,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -2104,11 +2104,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
- "rotated": false,
+ "rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 764,
- "trimY": 883,
+ "trimX": 454,
+ "trimY": 634,
"width": 119,
"height": 128,
"rawWidth": 119,
@@ -2129,8 +2129,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
- "trimX": 883,
- "trimY": 894,
+ "trimX": 678,
+ "trimY": 743,
"width": 119,
"height": 128,
"rawWidth": 119,
diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png
index 49d5136..d4ab89c 100644
Binary files a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png and b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png differ
diff --git a/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim
index 06ebfb3..b0384e4 100644
--- a/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim
+++ b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim
@@ -17,16 +17,10 @@
"__uuid__": "4e8a4f3c-5406-4700-9230-b2abc29a1093"
}
},
- {
- "frame": 0.03333333333333333,
- "value": {
- "__uuid__": "1ae5e6f6-ba82-485d-b3c7-59fd16ece3d5"
- }
- },
{
"frame": 0.05,
"value": {
- "__uuid__": "4e8a4f3c-5406-4700-9230-b2abc29a1093"
+ "__uuid__": "1ae5e6f6-ba82-485d-b3c7-59fd16ece3d5"
}
}
]
diff --git a/frontend/assets/resources/prefabs/ControlledCharacter.prefab b/frontend/assets/resources/prefabs/ControlledCharacter.prefab
index 58f4cf0..5a5db55 100644
--- a/frontend/assets/resources/prefabs/ControlledCharacter.prefab
+++ b/frontend/assets/resources/prefabs/ControlledCharacter.prefab
@@ -580,14 +580,14 @@
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
- "y": 0.5
+ "y": 0
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
- 0,
+ -24,
0,
0,
0,
@@ -743,14 +743,14 @@
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
- "y": 0.5
+ "y": 0
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
- 5,
+ -24,
0,
0,
0,
diff --git a/frontend/assets/scenes/offline_map.fire b/frontend/assets/scenes/offline_map.fire
index de9f2b1..2a2d80b 100644
--- a/frontend/assets/scenes/offline_map.fire
+++ b/frontend/assets/scenes/offline_map.fire
@@ -461,7 +461,7 @@
"array": [
0,
0,
- 210.4441731196186,
+ 210.4189861023336,
0,
0,
0,
diff --git a/frontend/assets/scripts/AttackingCharacter.js b/frontend/assets/scripts/AttackingCharacter.js
index ca81472..da57a40 100644
--- a/frontend/assets/scripts/AttackingCharacter.js
+++ b/frontend/assets/scripts/AttackingCharacter.js
@@ -10,7 +10,7 @@ window.ATK_CHARACTER_STATE = {
InAirAtk1: [6, "InAirAtk1"],
InAirAtked1: [7, "InAirAtked1"],
BlownUp1: [8, "BlownUp1"],
- LayDown1: [9, "LayDown1"],
+ LayDown1: [9, "LayDown1"], // The last frame of "LayDown1" should have a simliar boundingbox with the first frame of "GetUp1", otherwise the animation would seem odd
GetUp1: [10, "GetUp1"],
Atk2: [11, "Atk2"],
Atk3: [12, "Atk3"],
diff --git a/frontend/assets/scripts/Map.js b/frontend/assets/scripts/Map.js
index 9a5dc06..ff7d3c1 100644
--- a/frontend/assets/scripts/Map.js
+++ b/frontend/assets/scripts/Map.js
@@ -833,25 +833,16 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu
playerScriptIns.setSpecies(chConfig.SpeciesName);
if (1 == joinIndex) {
- newPlayerNode.color = cc.Color.RED;
+ newPlayerNode.color = cc.Color.RED;
} else {
- newPlayerNode.color = cc.Color.BLUE;
+ newPlayerNode.color = cc.Color.BLUE;
}
const [wx, wy] = gopkgs.VirtualGridToWorldPos(vx, vy);
newPlayerNode.setPosition(wx, wy);
playerScriptIns.mapNode = self.node;
- const colliderRadius = playerDownsyncInfo.ColliderRadius;
- const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos(colliderRadius, colliderRadius + colliderRadius); // avoid multiplying
- const colliderWidth = halfColliderWidth + halfColliderWidth,
- colliderHeight = halfColliderHeight + halfColliderHeight; // avoid multiplying
- const newPlayerCollider = gopkgs.GenerateRectColliderJs(wx, wy, colliderWidth, colliderHeight, self.spaceOffsetX, self.spaceOffsetY, playerDownsyncInfo, "Player");
- self.gopkgsCollisionSys.Add(newPlayerCollider);
- const collisionPlayerIndex = self.collisionPlayerIndexPrefix + joinIndex;
- self.gopkgsCollisionSysMap[collisionPlayerIndex] = newPlayerCollider;
-
- console.log(`Created new player collider: joinIndex=${joinIndex}`);
+ console.log(`Created new player node: joinIndex=${joinIndex}`);
safelyAddChild(self.node, newPlayerNode);
setLocalZOrder(newPlayerNode, 5);
@@ -1228,10 +1219,11 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`);
showDebugBoundaries(rdf) {
const self = this;
- const leftPadding = self.snapIntoPlatformOverlap,
- rightPadding = self.snapIntoPlatformOverlap,
- topPadding = self.snapIntoPlatformOverlap,
- bottomPadding = self.snapIntoPlatformOverlap;
+ // Hardcoded paddings for now
+ const leftPadding = 0.1,
+ rightPadding = 0.1,
+ topPadding = 0.1,
+ bottomPadding = 0.1;
if (self.showCriticalCoordinateLabels) {
let g = self.g;
g.clear();
@@ -1264,6 +1256,72 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`);
g.lineTo(wpos[0], wpos[1]);
g.stroke();
}
+
+ for (let k in rdf.PlayersArr) {
+ const player = rdf.PlayersArr[k];
+ if (1 == player.JoinIndex) {
+ g.strokeColor = cc.Color.BLUE;
+ } else {
+ g.strokeColor = cc.Color.RED;
+ }
+
+ let [colliderWidth, colliderHeight] = [player.ColliderRadius*2, player.ColliderRadius*4];
+ switch (player.CharacterState) {
+ case ATK_CHARACTER_STATE.LayDown1[0]:
+ [colliderWidth, colliderHeight] = [player.ColliderRadius*4, player.ColliderRadius*2];
+ break;
+ case ATK_CHARACTER_STATE.BlownUp1[0]:
+ case ATK_CHARACTER_STATE.InAirIdle1NoJump[0]:
+ case ATK_CHARACTER_STATE.InAirIdle1ByJump[0]:
+ [colliderWidth, colliderHeight] = [player.ColliderRadius*2, player.ColliderRadius*2];
+ break;
+ }
+
+ const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((colliderWidth >> 1), (colliderHeight >> 1));
+
+ const [wx, wy] = gopkgs.VirtualGridToWorldPos(player.VirtualGridX, player.VirtualGridY);
+ const [cx, cy] = gopkgs.WorldToPolygonColliderBLPos(wx, wy, halfColliderWidth, halfColliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, 0, 0);
+ const pts = [[0, 0], [leftPadding + halfColliderWidth*2 + rightPadding, 0], [leftPadding + halfColliderWidth*2 + rightPadding, bottomPadding + halfColliderHeight*2 + topPadding], [0, bottomPadding + halfColliderHeight*2 + topPadding]];
+
+ g.moveTo(cx, cy);
+ for (let j = 0; j < pts.length; j += 1) {
+ g.lineTo(pts[j][0] + cx, pts[j][1] + cy);
+ }
+ g.lineTo(cx, cy);
+ g.stroke();
+ }
+
+ for (let k in rdf.MeleeBullets) {
+ const meleeBullet = rdf.MeleeBullets[k];
+ if (
+ meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames <= rdf.Id
+ &&
+ meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames + meleeBullet.Bullet.ActiveFrames > rdf.Id
+ ) {
+ const offender = rdf.PlayersArr[meleeBullet.Bullet.OffenderJoinIndex-1];
+ if (1 == offender.JoinIndex) {
+ g.strokeColor = cc.Color.BLUE;
+ } else {
+ g.strokeColor = cc.Color.RED;
+ }
+
+ let xfac = 1; // By now, straight Punch offset doesn't respect "y-axis"
+ if (0 > offender.DirX) {
+ xfac = -1;
+ }
+ const [bulletWx, bulletWy] = gopkgs.VirtualGridToWorldPos(offender.VirtualGridX + xfac * meleeBullet.Bullet.HitboxOffsetX, offender.VirtualGridY);
+ const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((meleeBullet.Bullet.HitboxSizeX >> 1), (meleeBullet.Bullet.HitboxSizeY >> 1));
+ const [bulletCx, bulletCy] = gopkgs.WorldToPolygonColliderBLPos(bulletWx, bulletWy, halfColliderWidth, halfColliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, 0, 0);
+ const pts = [[0, 0], [leftPadding + halfColliderWidth*2 + rightPadding, 0], [leftPadding + halfColliderWidth*2 + rightPadding, bottomPadding + halfColliderHeight*2 + topPadding], [0, bottomPadding + halfColliderHeight*2 + topPadding]];
+
+ g.moveTo(bulletCx, bulletCy);
+ for (let j = 0; j < pts.length; j += 1) {
+ g.lineTo(pts[j][0] + bulletCx, pts[j][1] + bulletCy);
+ }
+ g.lineTo(bulletCx, bulletCy);
+ g.stroke();
+ }
+ }
}
},
});
diff --git a/frontend/assets/scripts/OfflineMap.js b/frontend/assets/scripts/OfflineMap.js
index 360295b..061ee53 100644
--- a/frontend/assets/scripts/OfflineMap.js
+++ b/frontend/assets/scripts/OfflineMap.js
@@ -161,7 +161,7 @@ cc.Class({
inAir: true,
}),
],
- speciesIdList: [0, 1],
+ speciesIdList: [1, 0],
});
self.selfPlayerInfo = {
diff --git a/jsexport/battle/battle.go b/jsexport/battle/battle.go
index e8917d5..cfe2148 100644
--- a/jsexport/battle/battle.go
+++ b/jsexport/battle/battle.go
@@ -419,6 +419,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
FramesInChState: currPlayerDownsync.FramesInChState + 1,
ActiveSkillId: currPlayerDownsync.ActiveSkillId,
ActiveSkillHit: currPlayerDownsync.ActiveSkillHit,
+ ColliderRadius: currPlayerDownsync.ColliderRadius,
}
if nextRenderFramePlayers[i].FramesToRecover < 0 {
nextRenderFramePlayers[i].FramesToRecover = 0
@@ -479,12 +480,11 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
}
// 2. Process player movement
+ playerColliders := make([]*resolv.Object, len(currRenderFrame.PlayersArr), len(currRenderFrame.PlayersArr)) // Will all be removed at the end of this function due to the need for being rollback-compatible
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
joinIndex := currPlayerDownsync.JoinIndex
effPushbacks[joinIndex-1].X, effPushbacks[joinIndex-1].Y = float64(0), float64(0)
- collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex
- playerCollider := collisionSysMap[collisionPlayerIndex]
- thatPlayerInNextFrame := nextRenderFramePlayers[i]
+
chConfig := chConfigsOrderedByJoinIndex[i]
// Reset playerCollider position from the "virtual grid position"
newVx, newVy := currPlayerDownsync.VirtualGridX+currPlayerDownsync.VelX, currPlayerDownsync.VirtualGridY+currPlayerDownsync.VelY
@@ -492,10 +492,24 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
newVy += chConfig.JumpingInitVelY // Immediately gets out of any snapping
}
- playerCollider.X, playerCollider.Y = VirtualGridToPolygonColliderBLPos(newVx, newVy, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY)
- // Update in the collision system
- playerCollider.Update()
+ wx, wy := VirtualGridToWorldPos(newVx, newVy)
+ colliderWidth, colliderHeight := currPlayerDownsync.ColliderRadius*2, currPlayerDownsync.ColliderRadius*4
+ switch currPlayerDownsync.CharacterState {
+ case ATK_CHARACTER_STATE_LAY_DOWN1:
+ colliderWidth, colliderHeight = currPlayerDownsync.ColliderRadius*4, currPlayerDownsync.ColliderRadius*2
+ case ATK_CHARACTER_STATE_BLOWN_UP1, ATK_CHARACTER_STATE_INAIR_IDLE1_NO_JUMP, ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP:
+ colliderWidth, colliderHeight = currPlayerDownsync.ColliderRadius*2, currPlayerDownsync.ColliderRadius*2
+ }
+ colliderWorldWidth, colliderWorldHeight := VirtualGridToWorldPos(colliderWidth, colliderHeight)
+
+ playerCollider := GenerateRectCollider(wx, wy, colliderWorldWidth, colliderWorldHeight, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, collisionSpaceOffsetX, collisionSpaceOffsetY, currPlayerDownsync, "Player") // the coords of all barrier boundaries are multiples of tileWidth(i.e. 16), by adding snapping y-padding when "landedOnGravityPushback" all "playerCollider.Y" would be a multiple of 1.0
+ playerColliders[i] = playerCollider
+
+ // Add to collision system
+ collisionSys.Add(playerCollider)
+
+ thatPlayerInNextFrame := nextRenderFramePlayers[i]
if currPlayerDownsync.InAir {
thatPlayerInNextFrame.VelX += GRAVITY_X
thatPlayerInNextFrame.VelY += GRAVITY_Y
@@ -525,8 +539,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
// 4. Calc pushbacks for each player (after its movement) w/o bullets
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
joinIndex := currPlayerDownsync.JoinIndex
- collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex
- playerCollider := collisionSysMap[collisionPlayerIndex]
+ playerCollider := playerColliders[i]
playerShape := playerCollider.Shape.(*resolv.ConvexPolygon)
hardPushbackNorms[joinIndex-1] = calcHardPushbacksNorms(joinIndex, playerCollider, playerShape, SNAP_INTO_PLATFORM_OVERLAP, &(effPushbacks[joinIndex-1]))
thatPlayerInNextFrame := nextRenderFramePlayers[i]
@@ -586,6 +599,9 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_LAY_DOWN1
thatPlayerInNextFrame.FramesToRecover = chConfig.LayDownFramesToRecover
} else {
+ halfColliderWidthDiff, halfColliderHeightDiff := int32(0), currPlayerDownsync.ColliderRadius
+ _, halfColliderWorldHeightDiff := VirtualGridToWorldPos(halfColliderWidthDiff, halfColliderHeightDiff)
+ effPushbacks[joinIndex-1].Y -= halfColliderWorldHeightDiff // To prevent bouncing due to abrupt change of collider shape
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1
thatPlayerInNextFrame.FramesToRecover = 0
}
@@ -658,8 +674,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
// 6. Get players out of stuck barriers if there's any
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
joinIndex := currPlayerDownsync.JoinIndex
- collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex
- playerCollider := collisionSysMap[collisionPlayerIndex]
+ playerCollider := playerColliders[i]
// Update "virtual grid position"
thatPlayerInNextFrame := nextRenderFramePlayers[i]
thatPlayerInNextFrame.VirtualGridX, thatPlayerInNextFrame.VirtualGridY = PolygonColliderBLToVirtualGridPos(playerCollider.X-effPushbacks[joinIndex-1].X, playerCollider.Y-effPushbacks[joinIndex-1].Y, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY)
@@ -694,6 +709,10 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
}
}
+ for _, playerCollider := range playerColliders {
+ playerCollider.Space.Remove(playerCollider)
+ }
+
return &RoomDownsyncFrame{
Id: currRenderFrame.Id + 1,
PlayersArr: nextRenderFramePlayers,