spacetraders.rb/lib/models/ship.rb
2024-02-05 01:43:33 +01:00

121 lines
2.5 KiB
Ruby

# frozen_string_literal: true
class SpaceTraders::Ship < SpaceTraders::Model
attributes :symbol,
:registration,
:nav,
:crew,
:frame,
:reactor,
:engine,
:cooldown,
:modules,
:mounts,
:cargo,
:fuel
class Helper
def initialize(ship)
@ship = ship
end
def waypoints
Waypoint.waypoints(@ship.client, system: @ship.nav["systemSymbol"])
end
end
attr_reader :helper
def initialize(client, **params)
super
@helper = Helper.new(self)
end
def self.my_ships(client, page: 1)
list = client.ships.my_ships(page: 1)
list.map { new(client, **_1) }
end
def reload!
update(**client.ships.my_ship(id: symbol))
self
end
def orbit!
client.ships.my_ship_orbit(id: symbol)
self
end
def refine!(material:)
client.ships.my_ship_refine(id: symbol, produce: material)
self
end
def survey!
client.ships.my_ship_survey(id: symbol)
self
end
def extract!(signature:, symbol:, deposits:, expiration:, size:)
client.ships.my_ship_extract({ id: symbol }, { signature:, symbol:, deposits:, expiration:, size: })
self
end
def siphon!
client.ships.my_ship_siphon(id: symbol)
self
end
def jump!(waypoint:)
client.ships.my_ship_jump({ id: symbol }, { waypointSymbol: waypoint })
self
end
def navigate!(waypoint:)
client.ships.my_ship_navigate({ id: symbol }, { waypointSymbol: waypoint })
self
end
def warp!(waypoint:)
client.ships.my_ship_warp({ id: symbol }, { waypointSymbol: waypoint })
self
end
def refuel!
client.ships.my_ship_refuel(id: symbol)
self
end
def sell!(cargo:, unit:)
client.ships.my_ship_warp({ id: symbol }, { cargo:, unit: })
self
end
module Type
PROBE = "SHIP_PROBE"
MINING_DRONE = "SHIP_MINING_DRONE"
SIPHON_DRONE = "SHIP_SIPHON_DRONE"
INTERCEPTOR = "SHIP_INTERCEPTOR"
LIGHT_HAULER = "SHIP_LIGHT_HAULER"
COMMAND_FRIGATE = "SHIP_COMMAND_FRIGATE"
EXPLORER = "SHIP_EXPLORER"
HEAVY_FREIGHTER = "SHIP_HEAVY_FREIGHTER"
LIGHT_SHUTTLE = "SHIP_LIGHT_SHUTTLE"
ORE_HOUND = "SHIP_ORE_HOUND"
REFINING_FREIGHTER = "SHIP_REFINING_FREIGHTER"
SURVEYOR = "SHIP_SURVEYOR"
end
module Material
IRON = "IRON"
COPPER = "COPPER"
SILVER = "SILVER"
GOLD = "GOLD"
ALUMINUM = "ALUMINUM"
PLATINUM = "PLATINUM"
URANITE = "URANITE"
MERITIUM = "MERITIUM"
FUEL = "FUEL"
end
end