From 6e01d73a5ed61e88843e1e112a3cbfee3154c4cd Mon Sep 17 00:00:00 2001 From: Ilia Denisov Date: Mon, 30 Mar 2026 21:51:47 +0200 Subject: [PATCH] fbs: order --- pkg/schema/fbs/order.fbs | 199 ++++++++++++++++++++++++++++++++++----- 1 file changed, 176 insertions(+), 23 deletions(-) diff --git a/pkg/schema/fbs/order.fbs b/pkg/schema/fbs/order.fbs index 9daa3f5..5e84249 100644 --- a/pkg/schema/fbs/order.fbs +++ b/pkg/schema/fbs/order.fbs @@ -1,47 +1,200 @@ namespace order; -enum Relation : byte { War = 0, Peace = 1 } +enum Relation : byte { + UNKNOWN = 0, + WAR = 1, + PEACE = 2 +} + +enum ShipGroupCargo : byte { + UNKNOWN = 0, + COL = 1, + MAT = 2, + CAP = 3 +} + +enum ShipGroupUpgradeTech : byte { + UNKNOWN = 0, + ALL = 1, + DRIVE = 2, + WEAPONS = 3, + SHIELDS = 4, + CARGO = 5 +} + +enum PlanetProduction : byte { + UNKNOWN = 0, + MAT = 1, + CAP = 2, + DRIVE = 3, + WEAPONS = 4, + SHIELDS = 5, + CARGO = 6, + SCIENCE = 7, + SHIP = 8 +} + +enum PlanetRouteLoadType : byte { + UNKNOWN = 0, + MAT = 1, + CAP = 2, + COL = 3, + EMP = 4 +} table CommandRaceQuit {} table CommandRaceVote { - for: string; + acceptor: string; } table CommandRaceRelation { - relation: Relation; - for: string; + acceptor: string; + relation: Relation = UNKNOWN; } table CommandShipClassCreate { - drive: float32; - weapons: float32; - shields: float32; - cargo: float32; - armament: uint16; - name: string; + name: string; + drive: float64; + armament: int64; + weapons: float64; + shields: float64; + cargo: float64; } -union Commands { - CommandRaceQuit, - CommandRaceVote, - CommandRaceRelation, - CommandShipClassCreate +table CommandShipClassMerge { + name: string; + target: string; } -struct uuid { - high: int64; - low: int64; +table CommandShipClassRemove { + name: string; +} + +table CommandShipGroupBreak { + id: string; + new_id: string; + quantity: int64; +} + +table CommandShipGroupLoad { + id: string; + cargo: ShipGroupCargo = UNKNOWN; + quantity: float64; +} + +table CommandShipGroupUnload { + id: string; + quantity: float64; +} + +table CommandShipGroupSend { + id: string; + destination: int64; +} + +table CommandShipGroupUpgrade { + id: string; + tech: ShipGroupUpgradeTech = UNKNOWN; + level: float64; +} + +table CommandShipGroupMerge {} + +table CommandShipGroupDismantle { + id: string; +} + +table CommandShipGroupTransfer { + id: string; + acceptor: string; +} + +table CommandShipGroupJoinFleet { + id: string; + name: string; +} + +table CommandFleetMerge { + name: string; + target: string; +} + +table CommandFleetSend { + name: string; + destination: int64; +} + +table CommandScienceCreate { + name: string; + drive: float64; + weapons: float64; + shields: float64; + cargo: float64; +} + +table CommandScienceRemove { + name: string; +} + +table CommandPlanetRename { + number: int64; + name: string; +} + +table CommandPlanetProduce { + number: int64; + production: PlanetProduction = UNKNOWN; + subject: string; +} + +table CommandPlanetRouteSet { + origin: int64; + destination: int64; + load_type: PlanetRouteLoadType = UNKNOWN; +} + +table CommandPlanetRouteRemove { + origin: int64; + load_type: PlanetRouteLoadType = UNKNOWN; +} + +union CommandPayload { + CommandRaceQuit, + CommandRaceVote, + CommandRaceRelation, + CommandShipClassCreate, + CommandShipClassMerge, + CommandShipClassRemove, + CommandShipGroupBreak, + CommandShipGroupLoad, + CommandShipGroupUnload, + CommandShipGroupSend, + CommandShipGroupUpgrade, + CommandShipGroupMerge, + CommandShipGroupDismantle, + CommandShipGroupTransfer, + CommandShipGroupJoinFleet, + CommandFleetMerge, + CommandFleetSend, + CommandScienceCreate, + CommandScienceRemove, + CommandPlanetRename, + CommandPlanetProduce, + CommandPlanetRouteSet, + CommandPlanetRouteRemove } table CommandItem { - id: uuid; - command: Commands; + cmd_id: string; + cmd_applied: bool = null; + cmd_error_code: int64 = null; + payload: CommandPayload (required); } table Order { - updated_at: uint64; // utc timestamp - commands: [CommandItem]; + updated_at: int64; + commands: [CommandItem]; } -root_type Order; \ No newline at end of file +root_type Order;