From 2c2507cf7985939388d4b73710cbb650016eecf5 Mon Sep 17 00:00:00 2001 From: Melro Serdoura Daniel Date: Fri, 16 Feb 2024 09:44:07 +0100 Subject: [PATCH] modif ship --- assets/spaceships/blueprint.png | Bin 0 -> 45652 bytes index.html | 2 + js/skama_code/api/ntm.js | 0 js/skama_code/api/ship.js | 150 ++++++++++++++++++++++++++++---- 4 files changed, 136 insertions(+), 16 deletions(-) create mode 100644 assets/spaceships/blueprint.png create mode 100644 js/skama_code/api/ntm.js diff --git a/assets/spaceships/blueprint.png b/assets/spaceships/blueprint.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca147ad097e1b9e111c4fd72af5f624f6ee68b4 GIT binary patch literal 45652 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 Xn-?eo5zg@GN0uGiw6`X1#-08@5QY-> literal 0 HcmV?d00001 diff --git a/index.html b/index.html index bd71585..f514d7a 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,8 @@ + + diff --git a/js/skama_code/api/ntm.js b/js/skama_code/api/ntm.js new file mode 100644 index 0000000..e69de29 diff --git a/js/skama_code/api/ship.js b/js/skama_code/api/ship.js index ce44eb2..4df11c8 100644 --- a/js/skama_code/api/ship.js +++ b/js/skama_code/api/ship.js @@ -1,5 +1,6 @@ // Copyright © 2023 Entreprise SkamKraft "use strict"; + import { SpaceTraders } from "./config.js"; import { My } from "./agent.js"; @@ -19,7 +20,25 @@ export class Ship { this.fuel = data.fuel; } - static list(callback) { + static get(shipSymbol, callback, error_handler) { + const url = `${SpaceTraders.host}/my/ships/${shipSymbol}`; + $.ajax({ + url: url, + method: "GET", + headers: { + Accept: "application/json", + Authorization: `Bearer ${My.agent.token}`, + }, + success: (response) => { + callback(new Ship(response.data)); + }, + error: (err) => { + error_handler(err); + }, + }); + } + + static list(callback, error_handler) { const url = `${SpaceTraders.host}/my/ships`; $.ajax({ url: url, @@ -29,50 +48,149 @@ export class Ship { Authorization: `Bearer ${My.agent.token}`, }, success: (response) => { - let listShips = []; - response.data.forEach(ship => { - listShips.push(new Ship(ship)) - + const ships = []; + const meta = response.meta; + response.data.forEach((ship) => { + ships.push(new Ship(ship)); }); - callback(listShips); + callback(ships, meta); }, error: (err) => { - error_handler(["Token invalide."]); + error_handler(err); }, }); } - static get(shipSymbol, callback, error_handler) { - const url = `${SpaceTraders.host}/my/ships/${shipSymbol}`; + + static purchase(shipType, waypointSymbol, callback, error_handler) { + const url = `${SpaceTraders.host}/my/ships`; $.ajax({ url: url, - method: "GET", + method: "POST", headers: { + "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${My.agent.token}`, }, + data: `{\n "shipType": "${shipType}",\n "waypointSymbol": "${waypointSymbol}"\n}`, success: (response) => { - callback(new Ship(response.data)); + callback(new Ship(response.data.ship)); }, error: (err) => { error_handler(err); }, }); } - static getPosition(callback) { - const url = `${SpaceTraders.host}/my/ships/${this.name}/nav`; + + refresh(callback, error_handler) { + const url = `${SpaceTraders.host}/my/ships/${this.symbol}`; $.ajax({ url: url, method: "GET", headers: { Accept: "application/json", - Authorization: `Bearer ${token}`, + Authorization: `Bearer ${My.agent.token}`, }, + success: (response) => { + const new_ship = new Ship(response.data); + callback(new_ship); + }, + error: (err) => { + error_handler(err); + }, + }); + } + + orbit(callback, error_handler) { + if (this.nav.status == "ORBIT") + return error_handler("Ship already in orbit."); + + const url = `${SpaceTraders.host}/my/ships/${this.symbol}/orbit`; + $.ajax({ + url: url, + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${My.agent.token}`, + }, + success: (response) => { + callback(response.data); + }, + error: (err) => { + error_handler(err); + }, + }); + } + + dock(callback, error_handler) { + if (this.nav.status == "DOCKED") + return error_handler("Ship already docked"); + + const url = `${SpaceTraders.host}/my/ships/${this.symbol}/dock`; + $.ajax({ + url: url, + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${My.agent.token}`, + }, + success: (response) => { + callback(response.data); + }, + error: (err) => { + error_handler(err); + }, + }); + } + + navigate(waypoint, callback, error_handler) { + if (this.nav.status != "ORBIT") + return error_handler("Ship must be in orbit."); + + const url = `${SpaceTraders.host}/my/ships/${this.symbol}/navigate`; + + $.ajax({ + url: url, + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${My.agent.token}`, + }, + processData: false, + data: `{\n "waypointSymbol": "${waypoint}"\n}`, + success: (response) => { + callback(response); + }, + error: (err) => { + error_handler(err); + }, + }); + } + + refuel(callback, error_handler) { + if (this.nav.status != "ORBIT") + return error_handler("Ship must be in orbit."); + + const url = `${SpaceTraders.host}/my/ships/${this.symbol}/refuel`; + + $.ajax({ + url: url, + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: "Bearer 123", + }, + processData: false, + data: '{\n "units": "100",\n "fromCargo": false\n}', success: (response) => { callback(response); }, error: (err) => { - error_handler(["Token invalide."]); + error_handler(err); }, }); } -} +} \ No newline at end of file