~starkingdoms/starkingdoms

adf4e4a650887f760bb8609bd3050f8c07cc7b4f — c0repwn3r 2 years ago 9f9259a
client work
13 files changed, 625 insertions(+), 13 deletions(-)

A assets/dist/spritesheet-125.json
M assets/dist/spritesheet-125.png
D assets/dist/spritesheet-125.ron
A assets/dist/spritesheet-375.json
M assets/dist/spritesheet-375.png
D assets/dist/spritesheet-375.ron
A assets/dist/spritesheet-full.json
M assets/dist/spritesheet-full.png
D assets/dist/spritesheet-full.ron
A client/assets
D client/public/vite.svg
M client/src/index.ts
M spacetime_py/spacetime.py
A assets/dist/spritesheet-125.json => assets/dist/spritesheet-125.json +192 -0
@@ 0,0 1,192 @@
{
  "frames": {
    "earth.png": {
      "frame": { "x": 0, "y": 0, "w": 256, "h": 256 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 256, "h": 256 },
      "sourceSize": { "w": 256, "h": 256 },
      "pivot": { "x": 128, "y": 128 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 256, "h": 256 }
    },
    "starfield.png": {
      "frame": { "x": 0, "y": 256, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "hearty.png": {
      "frame": { "x": 0, "y": 320, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "autoplr_error.png": {
      "frame": { "x": 0, "y": 384, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "autoplr_cfg.png": {
      "frame": { "x": 0, "y": 448, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "superthruster_on.png": {
      "frame": { "x": 0, "y": 512, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "ecothruster_on.png": {
      "frame": { "x": 0, "y": 576, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "landingthruster_on.png": {
      "frame": { "x": 0, "y": 640, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "thruster_on.png": {
      "frame": { "x": 0, "y": 704, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "landingleg.png": {
      "frame": { "x": 0, "y": 768, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "powerhub_on.png": {
      "frame": { "x": 0, "y": 832, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "hub_on.png": {
      "frame": { "x": 0, "y": 896, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "autoplr_on.png": {
      "frame": { "x": 0, "y": 960, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "superthruster_off.png": {
      "frame": { "x": 0, "y": 1024, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "landingthruster_off.png": {
      "frame": { "x": 0, "y": 1088, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "thruster_off.png": {
      "frame": { "x": 0, "y": 1152, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "cargo_on.png": {
      "frame": { "x": 0, "y": 1216, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "cargo_off.png": {
      "frame": { "x": 0, "y": 1280, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "powerhub_off.png": {
      "frame": { "x": 0, "y": 1344, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "hub_off.png": {
      "frame": { "x": 0, "y": 1408, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 64, "h": 64 },
      "sourceSize": { "w": 64, "h": 64 },
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    }
  },
  "meta": {
    "app": "atlasify https://github.com/soimy/atlasify#readme",
    "version": "0.4.1",
    "image": "spritesheet-125.png",
    "format": "RGBA8888",
    "size": { "w": 4096, "h": 4096 },
    "scale": 1
  }
}
\ No newline at end of file

M assets/dist/spritesheet-125.png => assets/dist/spritesheet-125.png +0 -0
D assets/dist/spritesheet-125.ron => assets/dist/spritesheet-125.ron +0 -1
@@ 1,1 0,0 @@
(texture_width:256,texture_height:1472,sprites:[(name:"earth",x:0,y:0,width:256,height:256,offsets:None,),(name:"ecothruster_on",x:0,y:256,width:64,height:64,offsets:None,),(name:"landingleg",x:0,y:320,width:64,height:64,offsets:None,),(name:"superthruster_on",x:0,y:384,width:64,height:64,offsets:None,),(name:"cargo_on",x:0,y:448,width:64,height:64,offsets:None,),(name:"autoplr_cfg",x:0,y:512,width:64,height:64,offsets:None,),(name:"landingthruster_off",x:0,y:576,width:64,height:64,offsets:None,),(name:"superthruster_off",x:0,y:640,width:64,height:64,offsets:None,),(name:"autoplr_on",x:0,y:704,width:64,height:64,offsets:None,),(name:"thruster_off",x:0,y:768,width:64,height:64,offsets:None,),(name:"cargo_off",x:0,y:832,width:64,height:64,offsets:None,),(name:"thruster_on",x:0,y:896,width:64,height:64,offsets:None,),(name:"autoplr_error",x:0,y:960,width:64,height:64,offsets:None,),(name:"hub_off",x:0,y:1024,width:64,height:64,offsets:None,),(name:"powerhub_off",x:0,y:1088,width:64,height:64,offsets:None,),(name:"hearty",x:0,y:1152,width:64,height:64,offsets:None,),(name:"hub_on",x:0,y:1216,width:64,height:64,offsets:None,),(name:"starfield",x:0,y:1280,width:64,height:64,offsets:None,),(name:"landingthruster_on",x:0,y:1344,width:64,height:64,offsets:None,),(name:"powerhub_on",x:0,y:1408,width:64,height:64,offsets:None,),],)
\ No newline at end of file

A assets/dist/spritesheet-375.json => assets/dist/spritesheet-375.json +192 -0
@@ 0,0 1,192 @@
{
  "frames": {
    "earth.png": {
      "frame": { "x": 0, "y": 0, "w": 768, "h": 768 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 768, "h": 768 },
      "sourceSize": { "w": 768, "h": 768 },
      "pivot": { "x": 384, "y": 384 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 768, "h": 768 }
    },
    "starfield.png": {
      "frame": { "x": 0, "y": 768, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "hearty.png": {
      "frame": { "x": 0, "y": 960, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "autoplr_error.png": {
      "frame": { "x": 0, "y": 1152, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "autoplr_cfg.png": {
      "frame": { "x": 0, "y": 1344, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "superthruster_on.png": {
      "frame": { "x": 0, "y": 1536, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "ecothruster_on.png": {
      "frame": { "x": 0, "y": 1728, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "landingthruster_on.png": {
      "frame": { "x": 0, "y": 1920, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "thruster_on.png": {
      "frame": { "x": 0, "y": 2112, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "landingleg.png": {
      "frame": { "x": 0, "y": 2304, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "powerhub_on.png": {
      "frame": { "x": 0, "y": 2496, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "hub_on.png": {
      "frame": { "x": 0, "y": 2688, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "autoplr_on.png": {
      "frame": { "x": 0, "y": 2880, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "landingthruster_off.png": {
      "frame": { "x": 0, "y": 3072, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "superthruster_off.png": {
      "frame": { "x": 0, "y": 3264, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "thruster_off.png": {
      "frame": { "x": 0, "y": 3456, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "cargo_on.png": {
      "frame": { "x": 0, "y": 3648, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "cargo_off.png": {
      "frame": { "x": 0, "y": 3840, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "powerhub_off.png": {
      "frame": { "x": 768, "y": 0, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "hub_off.png": {
      "frame": { "x": 960, "y": 0, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 192, "h": 192 },
      "sourceSize": { "w": 192, "h": 192 },
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    }
  },
  "meta": {
    "app": "atlasify https://github.com/soimy/atlasify#readme",
    "version": "0.4.1",
    "image": "spritesheet-375.png",
    "format": "RGBA8888",
    "size": { "w": 4096, "h": 4096 },
    "scale": 1
  }
}
\ No newline at end of file

M assets/dist/spritesheet-375.png => assets/dist/spritesheet-375.png +0 -0
D assets/dist/spritesheet-375.ron => assets/dist/spritesheet-375.ron +0 -1
@@ 1,1 0,0 @@
(texture_width:768,texture_height:4224,sprites:[(name:"earth",x:0,y:0,width:768,height:768,offsets:None,),(name:"ecothruster_on",x:0,y:768,width:192,height:192,offsets:None,),(name:"landingleg",x:0,y:960,width:192,height:192,offsets:None,),(name:"superthruster_on",x:0,y:1152,width:192,height:192,offsets:None,),(name:"cargo_on",x:0,y:1344,width:192,height:192,offsets:None,),(name:"autoplr_cfg",x:0,y:1536,width:192,height:192,offsets:None,),(name:"landingthruster_off",x:0,y:1728,width:192,height:192,offsets:None,),(name:"superthruster_off",x:0,y:1920,width:192,height:192,offsets:None,),(name:"autoplr_on",x:0,y:2112,width:192,height:192,offsets:None,),(name:"thruster_off",x:0,y:2304,width:192,height:192,offsets:None,),(name:"cargo_off",x:0,y:2496,width:192,height:192,offsets:None,),(name:"thruster_on",x:0,y:2688,width:192,height:192,offsets:None,),(name:"autoplr_error",x:0,y:2880,width:192,height:192,offsets:None,),(name:"hub_off",x:0,y:3072,width:192,height:192,offsets:None,),(name:"powerhub_off",x:0,y:3264,width:192,height:192,offsets:None,),(name:"hearty",x:0,y:3456,width:192,height:192,offsets:None,),(name:"hub_on",x:0,y:3648,width:192,height:192,offsets:None,),(name:"starfield",x:0,y:3840,width:192,height:192,offsets:None,),(name:"landingthruster_on",x:0,y:4032,width:192,height:192,offsets:None,),(name:"powerhub_on",x:192,y:768,width:192,height:192,offsets:None,),],)
\ No newline at end of file

A assets/dist/spritesheet-full.json => assets/dist/spritesheet-full.json +192 -0
@@ 0,0 1,192 @@
{
  "frames": {
    "earth.png": {
      "frame": { "x": 0, "y": 0, "w": 2048, "h": 2048 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 2048, "h": 2048 },
      "sourceSize": { "w": 2048, "h": 2048 },
      "pivot": { "x": 1024, "y": 1024 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 2048, "h": 2048 }
    },
    "starfield.png": {
      "frame": { "x": 0, "y": 2048, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "hearty.png": {
      "frame": { "x": 0, "y": 2560, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "autoplr_error.png": {
      "frame": { "x": 0, "y": 3072, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "autoplr_cfg.png": {
      "frame": { "x": 0, "y": 3584, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "superthruster_on.png": {
      "frame": { "x": 2048, "y": 0, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "ecothruster_on.png": {
      "frame": { "x": 2560, "y": 0, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "landingthruster_on.png": {
      "frame": { "x": 3072, "y": 0, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "thruster_on.png": {
      "frame": { "x": 3584, "y": 0, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "landingleg.png": {
      "frame": { "x": 512, "y": 2048, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "powerhub_on.png": {
      "frame": { "x": 512, "y": 2560, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "hub_on.png": {
      "frame": { "x": 512, "y": 3072, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "autoplr_on.png": {
      "frame": { "x": 512, "y": 3584, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "superthruster_off.png": {
      "frame": { "x": 2048, "y": 512, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "landingthruster_off.png": {
      "frame": { "x": 2560, "y": 512, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "thruster_off.png": {
      "frame": { "x": 3072, "y": 512, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "cargo_on.png": {
      "frame": { "x": 3584, "y": 512, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "cargo_off.png": {
      "frame": { "x": 1024, "y": 2048, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "powerhub_off.png": {
      "frame": { "x": 1024, "y": 2560, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "hub_off.png": {
      "frame": { "x": 1024, "y": 3072, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 512, "h": 512 },
      "sourceSize": { "w": 512, "h": 512 },
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    }
  },
  "meta": {
    "app": "atlasify https://github.com/soimy/atlasify#readme",
    "version": "0.4.1",
    "image": "spritesheet-full.png",
    "format": "RGBA8888",
    "size": { "w": 4096, "h": 4096 },
    "scale": 1
  }
}
\ No newline at end of file

M assets/dist/spritesheet-full.png => assets/dist/spritesheet-full.png +0 -0
D assets/dist/spritesheet-full.ron => assets/dist/spritesheet-full.ron +0 -1
@@ 1,1 0,0 @@
(texture_width:3584,texture_height:4096,sprites:[(name:"earth",x:0,y:0,width:2048,height:2048,offsets:None,),(name:"ecothruster_on",x:0,y:2048,width:512,height:512,offsets:None,),(name:"landingleg",x:0,y:2560,width:512,height:512,offsets:None,),(name:"superthruster_on",x:0,y:3072,width:512,height:512,offsets:None,),(name:"cargo_on",x:0,y:3584,width:512,height:512,offsets:None,),(name:"autoplr_cfg",x:512,y:2048,width:512,height:512,offsets:None,),(name:"landingthruster_off",x:512,y:2560,width:512,height:512,offsets:None,),(name:"superthruster_off",x:512,y:3072,width:512,height:512,offsets:None,),(name:"autoplr_on",x:512,y:3584,width:512,height:512,offsets:None,),(name:"thruster_off",x:1024,y:2048,width:512,height:512,offsets:None,),(name:"cargo_off",x:1024,y:2560,width:512,height:512,offsets:None,),(name:"thruster_on",x:1024,y:3072,width:512,height:512,offsets:None,),(name:"autoplr_error",x:1024,y:3584,width:512,height:512,offsets:None,),(name:"hub_off",x:1536,y:2048,width:512,height:512,offsets:None,),(name:"powerhub_off",x:1536,y:2560,width:512,height:512,offsets:None,),(name:"hearty",x:1536,y:3072,width:512,height:512,offsets:None,),(name:"hub_on",x:1536,y:3584,width:512,height:512,offsets:None,),(name:"starfield",x:2048,y:0,width:512,height:512,offsets:None,),(name:"landingthruster_on",x:2560,y:0,width:512,height:512,offsets:None,),(name:"powerhub_on",x:3072,y:0,width:512,height:512,offsets:None,),],)
\ No newline at end of file

A client/assets => client/assets +1 -0
@@ 0,0 1,1 @@
../assets
\ No newline at end of file

D client/public/vite.svg => client/public/vite.svg +0 -1
@@ 1,1 0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file

M client/src/index.ts => client/src/index.ts +44 -5
@@ 1,4 1,4 @@
//import * as PIXI from "pixi.js";
import * as PIXI from "pixi.js";

import {Logger, logSetup} from "./logger";
import {gateway_connect, GatewayClient} from "./gateway";


@@ 12,23 12,62 @@ export interface GlobalData {
    client: GatewayClient | null,
    players: Player[],
    planets: Planet[],
    me: Player | null
    me: Player | null,
    spritesheet: PIXI.Spritesheet | null,
    app: PIXI.Application | null
}

export const global: GlobalData = {
    client: null,
    players: [],
    planets: [],
    me: null
    me: null,
    spritesheet: null,
    app: null
}

async function client_main(server: string, username: string) {
async function client_main(server: string, username: string, texture_quality: string) {
    logger.info("StarKingdoms client - starting");

    logger.info("Loading textures");
    let spritesheet_url = `/assets/dist/spritesheet-${texture_quality}.png`;
    let spritesheet_data_url = `/assets/dist/spritesheet-${texture_quality}.json`;

    let load_textures = new Promise<void>(async (resolve) => {
        const image_promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {
            const image = document.createElement("img");
            image.src = spritesheet_url;
            image.onload = () => { resolve(image); }
            image.onerror = err => reject(err);
        });
        const dat_promise: Promise<Object> = fetch(spritesheet_data_url).then(res => res.json());
        let image = await image_promise;
        let data = await dat_promise;

        let texture = PIXI.Texture.from(image);

        global.spritesheet = new PIXI.Spritesheet(texture, data as any);
        await global.spritesheet.parse();

        resolve();
    });
    await load_textures;

    logger.info("Starting the renderer");

    global.app = new PIXI.Application({width: window.innerWidth, height: window.innerHeight, resizeTo: window });
    // @ts-ignore
    document.body.appendChild(global.app.view);

    console.log(global.spritesheet);
    // @ts-ignore
    let sprite = PIXI.Sprite.from(global.spritesheet?.textures["hearty.png"]);
    global.app.stage.addChild(sprite);

    global.client = await gateway_connect(server, username);
}

client_main("ws://localhost:3000/ws", "core").then(() => {});
client_main("ws://localhost:3000/ws", "core", "375").then(() => {});

/*


M spacetime_py/spacetime.py => spacetime_py/spacetime.py +4 -4
@@ 138,21 138,21 @@ def gen_inkscape(root, assets, writer, files_375, files_full, files_125):

def gen_packers(root, writer, files_375, files_full, files_125):
    # sheep pack assets/final/full/*.png -f amethyst_named -o assets/dist/spritesheet-full
    writer.rule(f'pack', 'sheep pack -f amethyst_named -o $out $in && touch $out')
    writer.rule(f'pack', 'cd assets/dist && atlasify -m 4096,4096 -o $out $in && touch $out')

    writer.build(f'{root}/assets/dist/spritesheet-full', 'pack', inputs=files_full,
                 implicit_outputs=[f'{root}/assets/dist/spritesheet-full.png',
                                   f'{root}/assets/dist/spritesheet-full.ron'])
                                   f'{root}/assets/dist/spritesheet-full.json'])
    writer.build(f'asset-full', 'phony', inputs=[f'{root}/assets/dist/spritesheet-full'])

    writer.build(f'{root}/assets/dist/spritesheet-375', 'pack', inputs=files_375,
                 implicit_outputs=[f'{root}/assets/dist/spritesheet-375.png',
                                   f'{root}/assets/dist/spritesheet-375.ron'])
                                   f'{root}/assets/dist/spritesheet-375.json'])
    writer.build(f'asset-375', 'phony', inputs=[f'{root}/assets/dist/spritesheet-375'])

    writer.build(f'{root}/assets/dist/spritesheet-125', 'pack', inputs=files_125,
                 implicit_outputs=[f'{root}/assets/dist/spritesheet-125.png',
                                   f'{root}/assets/dist/spritesheet-125.ron'])
                                   f'{root}/assets/dist/spritesheet-125.json'])
    writer.build(f'asset-125', 'phony', inputs=[f'{root}/assets/dist/spritesheet-125'])

    writer.build(f'asset', 'phony',