diff --git a/battle_srv/models/room.go b/battle_srv/models/room.go index 723941c..40ea901 100644 --- a/battle_srv/models/room.go +++ b/battle_srv/models/room.go @@ -1152,19 +1152,17 @@ func (pR *Room) applyInputFrameDownsyncDynamics(fromRenderFrameId int32, toRende baseChange := player.Speed * pR.RollbackEstimatedDt * decodedInputSpeedFactor dx := baseChange * float64(decodedInput[0]) dy := baseChange * float64(decodedInput[1]) - dyInResolv := -dy collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex playerCollider := pR.CollisionSysMap[collisionPlayerIndex] - if collision := playerCollider.Check(dx, dyInResolv, "Barrier"); collision != nil { + if collision := playerCollider.Check(dx, dy, "Barrier"); collision != nil { changeWithCollision := collision.ContactWithObject(collision.Objects[0]) Logger.Info(fmt.Sprintf("Collided: roomId=%v, playerId=%v, orig dx=%v, orig dy=%v, new dx =%v, new dy=%v", pR.Id, player.Id, dx, dy, changeWithCollision.X(), changeWithCollision.Y())) dx = changeWithCollision.X() - dyInResolv = changeWithCollision.Y() - dy = -dyInResolv + dy = changeWithCollision.Y() } playerCollider.X += dx - playerCollider.Y += dyInResolv + playerCollider.Y += dy // Update in "collision space" playerCollider.Update() @@ -1200,7 +1198,7 @@ func (pR *Room) refreshColliders() { space := resolv.NewSpace(int(spaceW), int(spaceH), int(pR.StageTileW), int(pR.StageTileH)) // allocate a new collision space everytime after a battle is settled for _, player := range pR.Players { - playerCollider := resolv.NewObject(player.X+spaceOffsetX, -player.Y+spaceOffsetY, playerColliderRadius*2, playerColliderRadius*2) + playerCollider := resolv.NewObject(player.X+spaceOffsetX, player.Y+spaceOffsetY, playerColliderRadius*2, playerColliderRadius*2) playerColliderShape := resolv.NewCircle(0, 0, playerColliderRadius*2) playerCollider.SetShape(playerColliderShape) space.Add(playerCollider) @@ -1233,7 +1231,7 @@ func (pR *Room) refreshColliders() { barrierColliderShape.AddPoints(p.X, p.Y) } - barrierCollider := resolv.NewObject(barrier.Boundary.Anchor.X+spaceOffsetX, -barrier.Boundary.Anchor.Y+spaceOffsetY, w, h, "Barrier") + barrierCollider := resolv.NewObject(barrier.Boundary.Anchor.X+spaceOffsetX, barrier.Boundary.Anchor.Y+spaceOffsetY, w, h, "Barrier") barrierCollider.SetShape(barrierColliderShape) space.Add(barrierCollider) } diff --git a/collider_visualizer/common.go b/collider_visualizer/common.go index f3b7693..feab531 100644 --- a/collider_visualizer/common.go +++ b/collider_visualizer/common.go @@ -1,66 +1,52 @@ package main import ( - "image/color" - "math" - "github.com/hajimehoshi/ebiten/v2" - "github.com/hajimehoshi/ebiten/v2/ebitenutil" "github.com/solarlune/resolv" + "image/color" ) -var circleBuffer map[resolv.Shape]*ebiten.Image = map[resolv.Shape]*ebiten.Image{} - -func DrawPolygon(screen *ebiten.Image, shape *resolv.ConvexPolygon, color color.Color) { - - verts := shape.Transformed() - for i := 0; i < len(verts); i++ { - vert := verts[i] - next := verts[0] - - if i < len(verts)-1 { - next = verts[i+1] - } - ebitenutil.DrawLine(screen, vert.X(), vert.Y(), next.X(), next.Y(), color) +var ( + PolygonFillerImage = ebiten.NewImage(1, 1) +) +func DrawPolygon(screen *ebiten.Image, shape *resolv.ConvexPolygon, clr color.Color) { + PolygonFillerImage.Fill(clr) + indices := []uint16{} + vs := []ebiten.Vertex{} + coors := shape.Transformed() + centerX := float64(0) + centerY := float64(0) + n := uint16(len(coors)) + for i, coor := range coors { + centerX += coor.X() + centerY += coor.Y() + vs = append(vs, ebiten.Vertex{ + DstX: float32(coor.X()), + DstY: float32(coor.Y()), + SrcX: 0, + SrcY: 0, + ColorR: 1, + ColorG: 1, + ColorB: 1, + ColorA: 1, + }) + indices = append(indices, uint16(i), uint16(i+1)%n, n) } -} - -func DrawCircle(screen *ebiten.Image, circle *resolv.Circle, drawColor color.Color) { - - // Actually drawing the circles live is too inefficient, so we will simply draw them to an image and then draw that instead - // when necessary. - - if _, exists := circleBuffer[circle]; !exists { - newImg := ebiten.NewImage(int(circle.Radius)*2, int(circle.Radius)*2) - - newImg.Set(int(circle.X), int(circle.Y), color.White) - - stepCount := float64(32) - - // Half image width and height. - hw := circle.Radius - hh := circle.Radius - - for i := 0; i < int(stepCount); i++ { - - x := (math.Sin(math.Pi*2*float64(i)/stepCount) * (circle.Radius - 2)) + hw - y := (math.Cos(math.Pi*2*float64(i)/stepCount) * (circle.Radius - 2)) + hh - - x2 := (math.Sin(math.Pi*2*float64(i+1)/stepCount) * (circle.Radius - 2)) + hw - y2 := (math.Cos(math.Pi*2*float64(i+1)/stepCount) * (circle.Radius - 2)) + hh - - ebitenutil.DrawLine(newImg, x, y, x2, y2, color.White) - - } - circleBuffer[circle] = newImg - } - - drawOpt := &ebiten.DrawImageOptions{} - r, g, b, _ := drawColor.RGBA() - drawOpt.ColorM.Scale(float64(r)/65535, float64(g)/65535, float64(b)/65535, 1) - drawOpt.GeoM.Translate(circle.X-circle.Radius, circle.Y-circle.Radius) - screen.DrawImage(circleBuffer[circle], drawOpt) - + centerX = centerX / float64(n) + centerY = centerY / float64(n) + + vs = append(vs, ebiten.Vertex{ + DstX: float32(centerX), + DstY: float32(centerY), + SrcX: 0, + SrcY: 0, + ColorR: 1, + ColorG: 1, + ColorB: 1, + ColorA: 1, + }) + + screen.DrawTriangles(vs, indices, PolygonFillerImage, nil) } diff --git a/collider_visualizer/main.go b/collider_visualizer/main.go index 9f5f0af..0cdeba8 100644 --- a/collider_visualizer/main.go +++ b/collider_visualizer/main.go @@ -85,12 +85,13 @@ type Game struct { func NewGame() *Game { - stageName := "simple" // Use this for calibration - // stageName := "richsoil" + // stageName := "simple" // Use this for calibration + stageName := "simple2" stageDiscreteW, stageDiscreteH, stageTileW, stageTileH, playerPosMap, barrierMap, err := parseStage(stageName) if nil != err { panic(err) } + PolygonFillerImage.Fill(color.RGBA{60, 60, 60, 255}) // Required to init color of the polygons! spaceW := stageDiscreteW * stageTileW spaceH := stageDiscreteH * stageTileH diff --git a/collider_visualizer/worldColliderDisplay.go b/collider_visualizer/worldColliderDisplay.go index 899252f..b81db11 100644 --- a/collider_visualizer/worldColliderDisplay.go +++ b/collider_visualizer/worldColliderDisplay.go @@ -1,20 +1,20 @@ package main import ( + . "dnmshared" "fmt" - "image/color" - "go.uber.org/zap" "github.com/hajimehoshi/ebiten/v2" "github.com/hajimehoshi/ebiten/v2/ebitenutil" "github.com/solarlune/resolv" - . "dnmshared" + "go.uber.org/zap" + "image/color" - "math" + "math" ) type WorldColliderDisplay struct { - Game *Game - Space *resolv.Space + Game *Game + Space *resolv.Space } func (world *WorldColliderDisplay) Init() { @@ -22,7 +22,7 @@ func (world *WorldColliderDisplay) Init() { func NewWorldColliderDisplay(game *Game, stageDiscreteW, stageDiscreteH, stageTileW, stageTileH int32, playerPosMap StrToVec2DListMap, barrierMap StrToPolygon2DListMap) *WorldColliderDisplay { - playerList := *(playerPosMap["PlayerStartingPos"]) + playerList := *(playerPosMap["PlayerStartingPos"]) barrierList := *(barrierMap["Barrier"]) world := &WorldColliderDisplay{Game: game} @@ -35,53 +35,51 @@ func NewWorldColliderDisplay(game *Game, stageDiscreteW, stageDiscreteH, stageTi spaceOffsetX := float64(spaceW) * 0.5 spaceOffsetY := float64(spaceH) * 0.5 - // TODO: Move collider y-axis transformation to a "dnmshared" + // TODO: Move collider y-axis transformation to a "dnmshared" playerColliderRadius := float64(12) // hardcoded - space := resolv.NewSpace(int(spaceW), int(spaceH), int(stageTileW), int(stageTileH)) - for _, player := range playerList { - playerCollider := resolv.NewObject(player.X+spaceOffsetX, -player.Y+spaceOffsetY, playerColliderRadius*2, playerColliderRadius*2, "Player") - playerColliderShape := resolv.NewCircle(0, 0, playerColliderRadius*2) - playerCollider.SetShape(playerColliderShape) - Logger.Info("player shape added:", zap.Any("shape", playerColliderShape)) - space.Add(playerCollider) - } + space := resolv.NewSpace(int(spaceW), int(spaceH), 16, 16) + for _, player := range playerList { + playerCollider := resolv.NewObject(player.X+spaceOffsetX, player.Y+spaceOffsetY, playerColliderRadius*2, playerColliderRadius*2, "Player") + playerColliderShape := resolv.NewCircle(0, 0, playerColliderRadius*2) + playerCollider.SetShape(playerColliderShape) + space.Add(playerCollider) + } - barrierLocalId := 0 - for _, barrier := range barrierList { - var w float64 = 0 - var h float64 = 0 + barrierLocalId := 0 + for _, barrier := range barrierList { + var w float64 = 0 + var h float64 = 0 - for i, pi := range barrier.Points { - for j, pj := range barrier.Points { - if i == j { - continue - } - if math.Abs(pj.X-pi.X) > w { - w = math.Abs(pj.X - pi.X) - } - if math.Abs(pj.Y-pi.Y) > h { - h = math.Abs(pj.Y - pi.Y) - } - } - } + for i, pi := range barrier.Points { + for j, pj := range barrier.Points { + if i == j { + continue + } + if math.Abs(pj.X-pi.X) > w { + w = math.Abs(pj.X - pi.X) + } + if math.Abs(pj.Y-pi.Y) > h { + h = math.Abs(pj.Y - pi.Y) + } + } + } - barrierColliderShape := resolv.NewConvexPolygon() - for i := 0; i < len(barrier.Points); i++ { - p := barrier.Points[i] - barrierColliderShape.AddPoints(p.X, p.Y) - } + barrierColliderShape := resolv.NewConvexPolygon() + for i := 0; i < len(barrier.Points); i++ { + p := barrier.Points[i] + barrierColliderShape.AddPoints(p.X, p.Y) + } - barrierCollider := resolv.NewObject(barrier.Anchor.X+spaceOffsetX, -barrier.Anchor.Y+spaceOffsetY, w, h, "Barrier") - barrierCollider.SetShape(barrierColliderShape) + barrierCollider := resolv.NewObject(barrier.Anchor.X+spaceOffsetX, barrier.Anchor.Y+spaceOffsetY, w, h, "Barrier") + barrierCollider.SetShape(barrierColliderShape) - Logger.Info("barrier shape added:", zap.Any("barrierLocalId", barrierLocalId), zap.Any("shape", barrierColliderShape)) - space.Add(barrierCollider) + space.Add(barrierCollider) - barrierLocalId++ - } + barrierLocalId++ + } world.Space = space - return world + return world } func (world *WorldColliderDisplay) Update() { @@ -91,14 +89,17 @@ func (world *WorldColliderDisplay) Update() { func (world *WorldColliderDisplay) Draw(screen *ebiten.Image) { for _, o := range world.Space.Objects() { - drawColor := color.RGBA{60, 60, 60, 255} if o.HasTags("Player") { - drawColor = color.RGBA{0, 255, 0, 255} + circle := o.Shape.(*resolv.Circle) + drawColor := color.RGBA{0, 255, 0, 255} + ebitenutil.DrawCircle(screen, circle.X, circle.Y, circle.Radius, drawColor) + } else { + drawColor := color.RGBA{60, 60, 60, 255} + DrawPolygon(screen, o.Shape.(*resolv.ConvexPolygon), drawColor) } - ebitenutil.DrawRect(screen, o.X, o.Y, o.W, o.H, drawColor) } - // world.Game.DebugDraw(screen, world.Space) + // world.Game.DebugDraw(screen, world.Space) if world.Game.ShowHelpText { diff --git a/dnmshared/parser.go b/dnmshared/tmx_parser.go similarity index 100% rename from dnmshared/parser.go rename to dnmshared/tmx_parser.go diff --git a/frontend/assets/resources/map/simple/map.tmx b/frontend/assets/resources/map/simple/map.tmx index 2c2b987..acd6779 100644 --- a/frontend/assets/resources/map/simple/map.tmx +++ b/frontend/assets/resources/map/simple/map.tmx @@ -8,81 +8,33 @@ - + - + - eJztmd0OwiAMRheNv/P9n9eY2BtCgVJbvs6em8WauJ64wQdsW5L4cq7ULu5d6Ni/11vlu1oNkb34HNGldCDugzUETkydc0OmfF4iOhDkEtmBuK5uIAk3x7VAnxckHMnF+j2P+AzX8uaHSP97K2+26kiM5M1WHQEuC0Ry6eUZLicjufQcImS2dMDgCA7cGpKI4EBw40wkByLXw5iM5GS0rKvpx3rulvam6cfaRfr7/+DyMriXFK2LZNx6CO8lZdYFceyVujxNuvgNSGscLStduD2XWVa49PZcZvF0Gd1zmcXDRXLGp8HSxfuMz9LFe03j4eI1r1rmijzjSxIdb64rAxM= + eJztwQENAAAAwqD3T20ON6AAAAAAAAAAAADg3wAnEAAB - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/frontend/assets/resources/map/simple2/BackgroundMap.meta b/frontend/assets/resources/map/simple2/BackgroundMap.meta new file mode 100644 index 0000000..803aefb --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap.meta @@ -0,0 +1,7 @@ +{ + "ver": "1.0.1", + "uuid": "2f0bdedd-7215-4462-ae54-b71c054cffbe", + "isSubpackage": false, + "subpackageName": "", + "subMetas": {} +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.png b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.png new file mode 100644 index 0000000..b651445 Binary files /dev/null and b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.png differ diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.png.meta b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.png.meta new file mode 100644 index 0000000..2b8a57f --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.png.meta @@ -0,0 +1,34 @@ +{ + "ver": "2.3.3", + "uuid": "c71de11b-4efc-4b7a-bbc7-eb926d08baf6", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "platformSettings": {}, + "subMetas": { + "Tile_W256_H128_S01": { + "ver": "1.0.4", + "uuid": "b4fba8f6-ffc7-468b-9086-ec855c73388a", + "rawTextureUuid": "c71de11b-4efc-4b7a-bbc7-eb926d08baf6", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 831, + "trimX": 0, + "trimY": 0, + "width": 2048, + "height": 386, + "rawWidth": 2048, + "rawHeight": 2048, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.tsx b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.tsx new file mode 100644 index 0000000..2d6b910 --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.tsx.meta b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.tsx.meta new file mode 100644 index 0000000..57602b0 --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H128_S01.tsx.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.0", + "uuid": "356c1165-6c15-40fe-95d0-baf11b053ada", + "subMetas": {} +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.png b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.png new file mode 100644 index 0000000..45aa8ef Binary files /dev/null and b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.png differ diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.png.meta b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.png.meta new file mode 100644 index 0000000..5a0efc8 --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.png.meta @@ -0,0 +1,34 @@ +{ + "ver": "2.3.3", + "uuid": "ad433d85-5c88-4067-b4b7-129be0f54d57", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "platformSettings": {}, + "subMetas": { + "Tile_W256_H256_S01": { + "ver": "1.0.4", + "uuid": "6c14c41c-4946-4992-b75d-8b580de43c83", + "rawTextureUuid": "ad433d85-5c88-4067-b4b7-129be0f54d57", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 64, + "width": 1280, + "height": 896, + "rawWidth": 1280, + "rawHeight": 1024, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.tsx b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.tsx new file mode 100644 index 0000000..b57d090 --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.tsx @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.tsx.meta b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.tsx.meta new file mode 100644 index 0000000..6641c22 --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S01.tsx.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.0", + "uuid": "e76fd642-3e97-4917-b6c7-0fc679a17644", + "subMetas": {} +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.png b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.png new file mode 100644 index 0000000..8ddf7ff Binary files /dev/null and b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.png differ diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.png.meta b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.png.meta new file mode 100644 index 0000000..b6214bf --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.png.meta @@ -0,0 +1,34 @@ +{ + "ver": "2.3.3", + "uuid": "2a91275b-bb80-44b8-9932-0913c465e4ea", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "platformSettings": {}, + "subMetas": { + "Tile_W256_H256_S02": { + "ver": "1.0.4", + "uuid": "55ca9649-0476-4fdb-9faa-3721ec0a0d5a", + "rawTextureUuid": "2a91275b-bb80-44b8-9932-0913c465e4ea", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 19.5, + "offsetY": 3.5, + "trimX": 89, + "trimY": 0, + "width": 1409, + "height": 251, + "rawWidth": 1548, + "rawHeight": 258, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.tsx b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.tsx new file mode 100644 index 0000000..0f34291 --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.tsx @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.tsx.meta b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.tsx.meta new file mode 100644 index 0000000..a9a32f1 --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/Tile_W256_H256_S02.tsx.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.0", + "uuid": "0f6bb2a2-d39f-4055-a636-4e6dc3472a18", + "subMetas": {} +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/map.tmx b/frontend/assets/resources/map/simple2/BackgroundMap/map.tmx new file mode 100644 index 0000000..4b1c9cf --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/map.tmx @@ -0,0 +1,129 @@ + + + + + + + eJztmNsOAyEIRNXem97+/2urSU0MEbs2A9XIwzwtuocJLrjBORdMJpPJtIyeUZeKHhtiaJwWW9I+alfRuVh/ZWJoHJqZY2tpK/dJyPfWOxHcUvxa3Oi6eUUdmHd4sLLv0p570P6h4NbwfHRuzvMZuGuez8Bd83wWbur5LNyZ/fbRyNypz3PfUzR39uPesYZ7lmo692AqNDdyTatHo7mR88m3Po/ktj4/L3fr3jAyt+a5NG7974nN33y9SNzTJObvPD9wdYOS1D+VMgcujyOJaYmuR/bMWj1yefTMdNz5kfIceSZruffk/U9uLRn3etzoO5JxG/cq3P7H/bfu/QamEBWW + + + + + eJztmdEKwyAMRfsXjv7/h449CEWSNNFrvMoOlIHdktMsWtddl8xtHNb7NKx4nhhW7DaHRAk6eK9Lyh/5bCR+SxHyIvB6M+LpQUbevFmR1oP6ankX41wP0XjWOsaM5o3kA473Q+uTmTkRvHkzot2nmdH6mGlOSmtMpjdyjuxQb4mIN9OaYnkzs5t3uyduiXij9ygedqv3k6g3y/xE1zvruk7rEzZ36Xvs3X+vWEueZPxumMHfO5dTvOsYm7tnTaljbO4t1rNaZvcTnxHW82zuXic294gLwh21P4i6MNU96oF0H9mz9zr0+ve6tj02UruVfTOad5U7Iifi/0JtTOsrVL2y647MleU+I8+ddMwge55+AUD0Fwk= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/assets/resources/map/simple2/BackgroundMap/map.tmx.meta b/frontend/assets/resources/map/simple2/BackgroundMap/map.tmx.meta new file mode 100644 index 0000000..31fac2c --- /dev/null +++ b/frontend/assets/resources/map/simple2/BackgroundMap/map.tmx.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.2", + "uuid": "e310a2ad-1d44-41ed-858a-380474175aed", + "subMetas": {} +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.png b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.png new file mode 100644 index 0000000..3200517 Binary files /dev/null and b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.png differ diff --git a/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.png.meta b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.png.meta new file mode 100644 index 0000000..360d33c --- /dev/null +++ b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.png.meta @@ -0,0 +1,34 @@ +{ + "ver": "2.3.3", + "uuid": "b6b4c575-6690-4f1d-8165-a0098509066c", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "platformSettings": {}, + "subMetas": { + "Tile_W300_H300_S01": { + "ver": "1.0.4", + "uuid": "8844352b-c6ac-4f30-8c8a-83955b2241b1", + "rawTextureUuid": "b6b4c575-6690-4f1d-8165-a0098509066c", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 4, + "offsetY": -24.5, + "trimX": 97, + "trimY": 85, + "width": 114, + "height": 179, + "rawWidth": 300, + "rawHeight": 300, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.tsx b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.tsx new file mode 100644 index 0000000..d958003 --- /dev/null +++ b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.tsx @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.tsx.meta b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.tsx.meta new file mode 100644 index 0000000..2e5add5 --- /dev/null +++ b/frontend/assets/resources/map/simple2/Tile_W300_H300_S01.tsx.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.0", + "uuid": "e8f0b0b6-6274-4931-bf88-af35ca68c4cc", + "subMetas": {} +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.png b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.png new file mode 100644 index 0000000..1b7cb9d Binary files /dev/null and b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.png differ diff --git a/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.png.meta b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.png.meta new file mode 100644 index 0000000..c9d78ad --- /dev/null +++ b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.png.meta @@ -0,0 +1,34 @@ +{ + "ver": "2.3.3", + "uuid": "a6ef7a2f-0696-49d7-8e62-d2e495a2d032", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "platformSettings": {}, + "subMetas": { + "Tile_W64_H64_S01": { + "ver": "1.0.4", + "uuid": "f6779fb1-4117-459a-a175-ff9f3abf1545", + "rawTextureUuid": "a6ef7a2f-0696-49d7-8e62-d2e495a2d032", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 256, + "height": 256, + "rawWidth": 256, + "rawHeight": 256, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.tsx b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.tsx new file mode 100644 index 0000000..319467a --- /dev/null +++ b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.tsx @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.tsx.meta b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.tsx.meta new file mode 100644 index 0000000..b685e20 --- /dev/null +++ b/frontend/assets/resources/map/simple2/Tile_W64_H64_S01.tsx.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.0", + "uuid": "04f5911f-c460-41ee-8a6c-c1fec92fdcfe", + "subMetas": {} +} \ No newline at end of file diff --git a/frontend/assets/resources/map/simple2/map.tmx b/frontend/assets/resources/map/simple2/map.tmx new file mode 100644 index 0000000..9bddc2f --- /dev/null +++ b/frontend/assets/resources/map/simple2/map.tmx @@ -0,0 +1,310 @@ + + + + + + + eJztz0ENACAMALGR4F8zNspyjwronZm7xPlcD0sPSw9LD0sPSw9LD0sPSw9LD0sPSw9LD0sPSw9LD0sPSw9LD0sPSw9LD0sPy7bHBg/ldQwR + + + + + + + + + + + + + eJztWctuBCEMW7Vqt9v2/7+32gMSQnnYTmB6WB+ZwZmEkHHgdnuBxe8/5WLwcyHXuzH2ccAuw5Wty3j/bjyzxlC7M9iYrFxZfNbnqi/IOqAxqfow8AWOoXZmZL58k9xvzrg1L+JS9oO6LijfCR882yvWdUH5rG+KuBgfrFo42+7CJ/m+l5MWoloYjZ+CUsN2+OLVc0YDRPa9nNzhC7LPs//Xo8FuNs5wRvt2Rw7v8AXZ5zty2FvL3Xsf4e+qsVf60l1jq754MR2w8qFSY6MaqdSRJ7KYRnNWIL509iseZ4de93TyHZirwOOM1lXtC6JnSg+K2FPnVHSysr9P+4Dq8a5+Wp2jcHq5FPWgFXuZXu/sqxCuHX1cR+1BtN4A0y96/ycldiu8XOquxWhNOZ1LDFA+RCdn/4OOeFjw9nLl/5TVUPZ8YIX3bSd6z26w33zKl0xzM/xd2hvhnKFo7ox/h/ZmtOcpXzp1q6K5PXjfjPSAKJcF9jwXQdd9B8q1E8pZYUW3zlBqVYSOPRatm1XjKrUqQsUXties1qqs9kd8im5l7ovQnOzYr0wuWc+YOz7kvcq6ILkU9ZOqhmfvdj17M6rn3ayGV30YUM8qB6qxeIK9n96FaixmXOVDJ3bomRc4/AGscghn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/assets/resources/map/simple2/map.tmx.meta b/frontend/assets/resources/map/simple2/map.tmx.meta new file mode 100644 index 0000000..062b61a --- /dev/null +++ b/frontend/assets/resources/map/simple2/map.tmx.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.2", + "uuid": "0fe4d0fd-d537-4440-93f7-fffda8897ab1", + "subMetas": {} +} \ No newline at end of file