~starkingdoms/starkingdoms

ref: 9102fff33bcc3f6f5d845ed24710286e41a5ea64 starkingdoms/client/src/index.ts -rw-r--r-- 2.6 KiB
9102fff3 — c0repwn3r update spacetime for new client 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import * as PIXI from "pixi.js";

import {Logger, logSetup} from "./logger";
import {gateway_connect, GatewayClient} from "./gateway";
import {Player} from "./protocol/player";
import {Planet} from "./protocol/planet";

logSetup();
const logger = new Logger("client");

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

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

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", "375").then(() => {});

/*

let app = new PIXI.Application({width: window.innerWidth, height: window.innerHeight, resizeTo: window });

// @ts-ignore
document.body.appendChild(app.view);

let sprite = PIXI.Sprite.from("./hearty.png");
app.stage.addChild(sprite);

let elapsed = 0.0;
app.ticker.add((delta) => {
    elapsed += delta;
    sprite.x = 100.0 + Math.cos(elapsed/50.0) * 100.0;
});

 */