~starkingdoms/starkingdoms

9102fff33bcc3f6f5d845ed24710286e41a5ea64 — c0repwn3r 2 years ago adf4e4a
update spacetime for new client
2 files changed, 3 insertions(+), 87 deletions(-)

M spacetime
M spacetime_py/spacetime.py
M spacetime => spacetime +2 -25
@@ 4,7 4,6 @@ set -e

SCRIPT_PATH=$(readlink -f "${BASH_SOURCE:-$0}")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
CLIENT_MODS=${STK_CLIENT_MODULES:-"textures-slow renderer-playercentric"}
SERVER_MODS=${STK_SERVER_MODULES:=""}

exec_spacetime() {


@@ 25,13 24,10 @@ sub_help() {
  echo "Available targets:"
  echo "    help - Show this help screen" # done
  echo "    run_http - Compile the client and run a development http server for testing it" # done
  echo "    run_http_prod - Compile the client in production mode and run a development http server for testing it" # done
  echo "    run_server (default) - Compile and run the game server" # done
  echo "    build_server - Compile the game server" # done
  echo "    run_server_prod - Compile and run the game server with optimizations enabled" # done
  echo "    build_server_prod - Compile the game server with optimizations enabled" # done
  echo "    build_client_bundle - Compile an optimized WebAssembly client bundle" # done
  echo "    build_client_bundle_prod - Compile an optimized WebAssembly client bundle using textures-fast" # done
  echo "    install_tooling - Install the compilation utilities required for compiling StarKingdoms" # done
  echo "    build_assets - Compile spritesheets in all three texture sizes for textures-fast" # done
  echo "    build_assets_full - Compile spritesheets in full size for textures-fast" # done


@@ 79,30 75,11 @@ sub_install_tooling() {
  echo "[*] All required tools are installed"
}

sub_build_client_bundle() {
  check_all
  exec_spacetime client dev "$SCRIPT_DIR" "$CLIENT_MODS"
  exec_ninja client
}

sub_run_http() {
  check_all
  exec_spacetime client dev "$SCRIPT_DIR" "$CLIENT_MODS"
  exec_ninja client
  cd web && python3 -m http.server
}

sub_build_client_bundle_prod() {
  check_all
  exec_spacetime client prod "$SCRIPT_DIR" "$CLIENT_MODS"
  exec_ninja client
}

sub_run_http_prod() {
  check_all
  exec_spacetime client prod "$SCRIPT_DIR" "$CLIENT_MODS"
  exec_ninja client
  cd web && python3 -m http.server
  exec_ninja asset
  cd client && yarn && yarn run dev
}

sub_build_server() {

M spacetime_py/spacetime.py => spacetime_py/spacetime.py +1 -62
@@ 57,64 57,6 @@ def gen_inkscape_rules_for_asset(root, asset, writer, files_375, files_full, fil
    writer.build([out_375], rule_375, [in_file])
    writer.build([out_125], rule_125, [in_file])


def gen_rules_for_client(root, env, writer, modules):
    if env == 'dev':
        writer.rule('cargo-client', f'wasm-pack build --target web client --features "{modules}"',
                    depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
    elif env == 'prod':
        writer.rule('cargo-client',
                    f'wasm-pack build --target web client --features "{modules}"',
                    depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
    writer.build(
        [
            f'{root}/client/pkg/.gitignore',
            f'{root}/client/pkg/package.json',
            f'{root}/client/pkg/starkingdoms_client.d.ts',
            f'{root}/client/pkg/starkingdoms_client.js',
            f'{root}/client/pkg/starkingdoms_client_bg.wasm',
            f'{root}/client/pkg/starkingdoms_client_bg.wasm.d.ts',
            f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.wasm'
        ],
        'cargo-client',
        [
            f'{root}/assets/dist/spritesheet-125',
            f'{root}/assets/dist/spritesheet-125.png',
            f'{root}/assets/dist/spritesheet-125.ron',
            f'{root}/assets/dist/spritesheet-375',
            f'{root}/assets/dist/spritesheet-375.png',
            f'{root}/assets/dist/spritesheet-375.ron',
            f'{root}/assets/dist/spritesheet-full',
            f'{root}/assets/dist/spritesheet-full.png',
            f'{root}/assets/dist/spritesheet-full.ron',
        ]
    )

    writer.rule('client-copy-file', f'rm -rf {root}/web/dist && cp -r {root}/client/pkg {root}/web/dist')

    writer.build(
        [
            f'{root}/web/dist/.gitignore',
            f'{root}/web/dist/package.json',
            f'{root}/web/dist/starkingdoms_client.d.ts',
            f'{root}/web/dist/starkingdoms_client.js',
            f'{root}/web/dist/starkingdoms_client_bg.wasm',
            f'{root}/web/dist/starkingdoms_client_bg.wasm.d.ts'
        ],
        'client-copy-file',
        [
            f'{root}/client/pkg/.gitignore',
            f'{root}/client/pkg/package.json',
            f'{root}/client/pkg/starkingdoms_client.d.ts',
            f'{root}/client/pkg/starkingdoms_client.js',
            f'{root}/client/pkg/starkingdoms_client_bg.wasm',
            f'{root}/client/pkg/starkingdoms_client_bg.wasm.d.ts',
        ],
    )

    writer.build(['client'], 'phony', [f'{root}/web/dist/starkingdoms_client.js'])


def gen_rules_for_server(root, env, writer, modules):
    if env == 'dev':
        out_dir = 'debug'


@@ 190,14 132,11 @@ def main():
        writer.comment('Generated by spacetime.py')
        writer.comment('Do not manually edit this file')

        if env == 'prod' or target == 'asset':
        if target == 'client' or target == 'asset':
            assets = scan_assets(root)
            if verbose:
                print(f'[spacetime -v] discovered assets: {assets}')
            generate_assets_build_command(root, assets, writer)

        if target == 'client':
            gen_rules_for_client(root, env, writer, modules)
        elif target == 'server':
            gen_rules_for_server(root, env, writer, modules)