grpc:main

GRPC API (CA:DE)

cade_api.proto
syntax = "proto3";
 
package cade_api.rpc;
 
option cc_enable_arenas = true;
option optimize_for = SPEED;
 
service CadeRemote {
    rpc Info(InfoRequest) returns (InfoResponse);
    rpc Pause(PauseRequest) returns (PauseResponse);
    rpc SetFogOfWar(SetFogOfWarRequest) returns (SetFogOfWarResponse);
    rpc SetPerspective(SetPerspectiveRequest) returns (SetPerspectiveResponse);
    rpc Frames(FramesRequest) returns (stream FrameSequence);
}
 
message InfoRequest {
 
}
 
message InfoResponse {
    uint32 gameVersion = 1;
    uint32 apiVersion = 2;
    string baseDirectory = 3;
    repeated string enabledModDirectories = 4;
}
 
message PauseRequest {
    bool paused = 1;
}
 
message PauseResponse {
    bool success = 1;
    bool changed = 2;
}
 
message SetFogOfWarRequest {
    bool fogOfWar = 1;
}
 
message SetFogOfWarResponse {
    bool success = 1;
    bool changed = 2;
}
 
message SetPerspectiveRequest {
    int32 playerId = 1;
}
 
message SetPerspectiveResponse {
    bool success = 1;
    int32 playerId = 2;
}
 
message FramesRequest {
    repeated ResolutionEntry desiredResolutions = 1;
    message ResolutionEntry {
        Category key = 1;
        enum Category {
            TIME_STEP = 0;
            LOW_PRIORITY = 1;
            SLEEPING_UNIT = 2;
            PARTICLES = 3;
            GAME_OPTIONS = 4;
            PARTICLES_SIMULATION_OUTPUT = 5;
        }
 
        int32 gameTimeResolution = 2;
    }
 
    bool disableCommands = 2;
    bool disableParticles = 3;
    repeated string particleDefinitionWhitelist = 4;
    bool disableParticleCulling = 5;
}
 
message FrameSequence {
    repeated Frame frame = 1;
    uint32 sendingWorldTime = 2;
    uint32 numberOfFramesQueued = 3;
}
 
message Frame {
    uint32 time = 1;
    bytes patch = 2;
    repeated Event event = 3;
    bytes reversePatch = 4;
    uint32 timeStepsSkipped = 7;
 
    repeated MetricEntry metrics = 5;
    message MetricEntry {
        Region key = 1;
        enum Region {
            ALL = 0;
            ENTITIES = 1;
            SLEEPING_ENTITIES = 2;
            MAP_TILES = 3;
            UNIFIED_VISIBLE_MAP = 4;
            PARTICLES = 5;
            MASTER_ENTITIES = 6;
            RESEARCH_STATES = 7;
            VICTORY_POINTS = 8;
            APPLY_PATCH = 9;
            GAME_OPTIONS = 10;
        }
 
        uint32 timeMeasured = 2;
        uint32 count = 3;
    }
 
    repeated Command command = 6;
}
 
message Event {
    oneof event {
        EntityKilled entityKilled = 1;
        MarketTransaction marketTransaction = 2;
        Tribute tribute = 3;
        PlayerChat playerChat = 4;
        CombatNotificationSound combatNotificationSound = 5;
    }
 
    message EntityKilled {
        int32 id = 1;
        int32 killerId = 2;
    }
 
    message MarketTransaction {
        uint32 playerId = 1;
        uint32 attributeType = 2;
        float attributeBefore = 3;
        float goldBefore = 4;
        float attributeExchanged = 5;
        float goldRate = 6;
        float goldExchanged = 7;
    }
 
    message Tribute {
        uint32 senderId = 1;
        uint32 receiverId = 2;
        uint32 attributeType = 3;
        float senderValueBefore = 4;
        float senderValueChange = 5;
        float receiverValueBefore = 6;
        float receiverValueChange = 7;
    }
 
    message PlayerChat {
        int32 playerId = 1;
        int32 commPlayerId = 2;
 
        Channel channel = 3;
        enum Channel {
            Default = 0;
            AllChat = 1;
            TeamChat = 2;
            EnemyChat = 3;
        }
 
        string text = 4;
        int32 taunt = 5;
    }
 
    message CombatNotificationSound {
        int32 receiverId = 1;
 
        Type type = 2;
        enum Type {
            Normal = 0;
            Wolf = 1;
            Town = 2;
        }
 
        int32 attackedObjectId = 3;
    }
}
 
message Command {
    oneof command {
        Interact interact = 1000;
        Stop stop = 1001;
        Work work = 1002;
        Move move = 1003;
        Create create = 1004;
        AddAttribute addAttribute = 1005;
        AiOrder aiOrder = 1010;
        Resign resign = 1011;
        AddWaypoint addWaypoint = 112;
        Pause pause = 1013;
        GroupWaypoint groupWaypoint = 1016;
        GroupAiOrder groupAiOrder = 1017;
        UnitAiState unitAiState = 1018;
        Guard guard = 1019;
        Follow follow = 1020;
        Patrol patrol = 1021;
        Scout scout = 1022;
        FormFormation formFormation = 1023;
        MultiplayerSave multiplayerSave = 1027;
        GroupMultiWaypoints groupMultiWaypoints = 1031;
        Chapter chapter = 1032;
        AttackMove attackMove = 1033;
        AttackMoveTarget attackMoveTarget = 1034;
        Retreat retreat = 1035;
        UnitTypeAiState unitTypeAiState = 1037;
        AutoScout autoScout = 1038;
        StopAll stopAll = 1039;
        MoreTechs moreTechs = 1040;
        TransformObject transformObject = 1041;
        Make make = 1100;
        Research research = 1101;
        Build build = 1102;
        Game game = 1103;
        Explore explore = 1104;
        BuildWall buildWall = 1105;
        CancelBuild cancelBuild = 1106;
        AttackGround attackGround = 1107;
        GiveAttribute2 giveAttribute2 = 1108;
        TradeAttribute tradeAttribute = 1109;
        Repair repair = 1110;
        Unload unload = 1111;
        Gate gate = 1114;
        Flare flare = 1115;
        UnitOrder unitOrder = 1117;
        Diplomacy diplomacy = 1118;
        Queue queue = 1119;
        SetGatherPoint setGatherPoint = 1120;
        SellCommodity sellCommodity = 1122;
        BuyCommodity buyCommodity = 1123;
        UnitTransform unitTransform = 1125;
        DropRelic dropRelic = 1126;
        TownBell townBell = 1127;
        GoBackToWork goBackToWork = 1128;
        MultiQueue multiQueue = 1129;
        SetGatherState setGatherState = 1130;
        DeleteObjects deleteObjects = 1131;
        ResetBuildings resetBuildings = 1132;
        MultiGate multiGate = 1133;
        GoBackToWork2 goBackToWork2 = 1134;
        ChangePlayerName changePlayerName = 1135;
        UnknownCommand unknownCommand = 2000;
    }
 
    message XyzUintPoint {
        uint32 x = 1;
        uint32 y = 2;
        uint32 z = 3;
    }
 
    message XyzFloatPoint {
        float x = 1;
        float y = 2;
        float z = 3;
    }
 
    message XyUintPoint {
        uint32 x = 1;
        uint32 y = 2;
    }
 
    message XyFloatPoint {
        float x = 1;
        float y = 2;
    }
 
    message Interact {
        uint32 commPlayerId = 1;
        int32 targetId = 2;
        XyFloatPoint location = 4;
        bool extend = 5;
        bool instant = 6;
        bool humanOrder = 7;
        bool controlHeld = 8;
        repeated int32 unitIds = 9;
    }
 
    message Stop {
        repeated int32 unitIds = 2;
    }
 
    message Work {
        uint32 commPlayerId = 1;
        int32 targetId = 2;
        XyFloatPoint location = 4;
        bool extend = 5;
        bool instant = 6;
        bool humanOrder = 7;
        bool controlHeld = 8;
        repeated int32 unitIds = 9;
    }
 
    message Move {
        uint32 commPlayerId = 1;
        int32 targetId = 2;
        XyFloatPoint location = 4;
        bool extend = 5;
        bool instant = 6;
        bool humanOrder = 7;
        bool controlHeld = 8;
        repeated int32 unitIds = 9;
    }
 
    message Create {
        int32 objCategory = 1;
        uint32 playerId = 2;
        XyzFloatPoint location = 3;
    }
 
    message AddAttribute {
        uint32 playerId = 1;
        uint32 attrId = 2;
        float attrAmount = 3;
    }
 
    message AiOrder {
        uint32 playerId = 2;
        uint32 issuer = 3;
        int32 recipient = 4;
        int32 orderType = 5;
        uint32 orderPriority = 6;
        uint32 targetOwner = 8;
        XyzFloatPoint location = 9;
        float range = 10;
        bool immediate = 11;
        bool inFront = 12;
        repeated int32 unitIds = 13;
    }
 
    message Resign {
        uint32 playerId = 1;
        uint32 commPlayerId = 2;
        bool dropped = 3;
    }
 
    message AddWaypoint {
        uint32 playerId = 1;
        int32 recipient = 2;
        repeated XyzUintPoint waypoints = 4;
    }
 
    message Pause {
        repeated int32 unitIds = 2;
    }
 
    message GroupWaypoint {
        uint32 commPlayerId = 1;
        XyUintPoint location = 3;
        repeated int32 unitIds = 4;
    }
 
    message GroupAiOrder {
        uint32 playerId = 1;
        uint32 issuer = 2;
        int32 orderType = 4;
        uint32 orderPriority = 5;
        int32 targetId = 6;
        uint32 targetOwner = 7;
        XyzFloatPoint location = 8;
        float range = 9;
        bool immediate = 10;
        bool inFront = 11;
        repeated int32 unitIds = 12;
    }
 
    message UnitAiState {
        uint32 state = 2;
        repeated int32 unitIds = 3;
    }
 
    message UnitTypeAiState {
        uint32 state = 2;
        int32 unitType = 3;
        int32 playerId = 4;
    }
 
    message Guard {
        int32 targetId = 2;
        repeated int32 unitIds = 3;
    }
 
    message Follow {
        int32 targetId = 2;
        repeated int32 unitIds = 3;
    }
 
    message Patrol {
        bool reset = 3;
        repeated XyFloatPoint wayPoints = 4;
        repeated int32 unitIds = 5;
    }
 
    message Scout {
        XyFloatPoint location = 2;
        repeated int32 unitIds = 3;
    }
 
    message FormFormation {
        uint32 playerId = 2;
        int32 formationType = 3;
        repeated int32 unitIds = 4;
    }
 
    message MultiplayerSave {
        bool exitAfterSave = 1;
        uint32 commPlayer = 2;
    }
 
    message GroupMultiWaypoints {
        repeated int32 unitIds = 3;
        repeated XyUintPoint waypoints = 4;
    }
 
    message Chapter {
        uint32 commPlayerId = 1;
    }
 
    message AttackMove {
        bool reset = 3;
        repeated XyFloatPoint waypoints = 4;
        repeated int32 unitIds = 5;
    }
 
    message AttackMoveTarget {
        int32 targetId = 2;
        repeated XyFloatPoint waypoints = 4;
        repeated int32 unitIds = 5;
    }
 
    message Retreat {
        uint32 commPlayerId = 1;
        int32 targetId = 2;
        XyFloatPoint location = 4;
        bool extend = 5;
        bool instant = 6;
        bool humanOrder = 7;
        bool controlHeld = 8;
        repeated int32 unitIds = 9;
    }
 
    message AutoScout {
        repeated int32 unitIds = 2;
    }
 
    message StopAll {
        uint32 playerID = 1;
    }
 
    message MoreTechs {
        uint32 playerID = 1;
    }
 
    message TransformObject {
        uint32 playerID = 1;
        int32 masterId = 2;
        int32 objId = 3;
    }
 
    message Make {
        int32 unitId = 1;
        uint32 unitPlayerId = 2;
        int32 objId = 3;
        int32 uniqueId = 4;
    }
 
    message Research {
        int32 unitId = 1;
        uint32 unitPlayerId = 2;
        int32 techId = 4;
        int32 uniqueId = 5;
        bool extend = 6;
        repeated int32 buildingIds = 7;
    }
 
    message Build {
        uint32 unitPlayerId = 2;
        XyFloatPoint location = 3;
        int32 objId = 4;
        int32 uniqueId = 5;
        uint32 frame = 6;
        bool extend = 7;
        bool instant = 8;
        int32 spriteOverrideId = 9;
        repeated int32 unitIds = 10;
    }
 
    message Game {
        uint32 gameCommandId = 1;
        int32 var1 = 2;
        int32 var2 = 3;
        float var3 = 4;
        uint32 var4 = 5;
    }
 
    message Explore {
        uint32 unitPlayerId = 2;
        XyFloatPoint location = 3;
        repeated int32 unitIds = 4;
    }
 
    message BuildWall {
        uint32 unitPlayerId = 2;
        XyUintPoint location1 = 3;
        XyUintPoint location2 = 4;
        int32 objId = 5;
        int32 uniqueId = 6;
        bool extend = 7;
        bool instant = 8;
        repeated int32 unitIds = 9;
    }
 
    message CancelBuild {
        int32 unitId = 1;
        int32 unitPlayerId = 2;
    }
 
    message AttackGround {
        XyFloatPoint location = 2;
        bool extend = 3;
        bool instant = 4;
        bool humanOrder = 5;
        repeated int32 unitIds = 6;
    }
 
    message GiveAttribute2 {
        uint32 playerId = 1;
        uint32 toPlayerId = 2;
        uint32 attrId = 3;
        float attrAmount = 4;
        float attrCost = 5;
    }
 
    message TradeAttribute {
        int32 attribute = 2;
        repeated int32 unitIds = 3;
    }
 
    message Repair {
        int32 targetId = 2;
        bool extend = 3;
        bool instant = 4;
        repeated int32 unitIds = 5;
    }
 
    message Unload {
        XyFloatPoint location = 2;
        uint32 unloadFlag = 3;
        int32 unloadUnitType = 4;
        repeated int32 unitIds = 5;
    }
 
    message Gate {
        int32 unitId = 1;
    }
 
    message Flare {
        int32 unitId = 1;
        bytes flareFlags = 2;
        XyFloatPoint location = 3;
        uint32 playerId = 4;
        uint32 commPlayerId = 5;
    }
 
    message UnitOrder {
        int32 targetId = 2;
        uint32 action = 3;
        uint32 param = 4;
        XyFloatPoint location = 5;
        int32 unique_id = 6;
        bool extend = 7;
        bool instant = 8;
        bool humanOrder = 9;
        repeated int32 unitIds = 10;
    }
 
    message Diplomacy {
        uint32 playerId1 = 1;
        uint32 playerId2 = 2;
        uint32 sequence = 3;
        uint32 status = 4;
        uint32 declare = 5;
        uint32 diplomacy = 6;
        uint32 intelligence = 7;
        uint32 trade = 8;
        uint32 demand = 9;
        int32 gold = 10;
        string message = 11;
    }
 
    message Queue {
        int32 buildingId = 1;
        int32 trainId = 2;
        int32 trainCount = 3;
    }
 
    message SetGatherPoint {
        int32 targetId = 2;
        int32 targetMasterId = 3;
        XyFloatPoint location = 4;
        repeated int32 unitIds = 5;
    }
 
    message SellCommodity {
        uint32 playerId = 1;
        uint32 attrId = 2;
        uint32 lotCount = 3;
        int32 unitId = 4;
    }
 
    message BuyCommodity {
        uint32 playerId = 1;
        uint32 attrId = 2;
        uint32 lotCount = 3;
        int32 unitId = 4;
    }
 
    message UnitTransform {
        uint32 unitPlayerId = 2;
        int32 objId = 3;
        int32 uniqueId = 4;
        repeated int32 unitIds = 5;
    }
 
    message DropRelic {
        int32 unitId = 1;
    }
 
    message TownBell {
        int32 unitId = 1;
        uint32 activateFlag = 2;
    }
 
    message GoBackToWork {
        int32 unitId = 1;
    }
 
    message MultiQueue {
        uint32 playerId = 1;
        int32 selectedBuildingId = 2;
        int32 trainId = 4;
        int32 trainCount = 5;
        repeated int32 buildingIds = 6;
    }
 
    message SetGatherState {
        uint32 state = 2;
        repeated int32 unitIds = 3;
    }
 
    message DeleteObjects {
        uint32 playerId = 2;
        repeated int32 unitIds = 3;
    }
 
    message ResetBuildings {
        uint32 state = 2;
        repeated int32 unitIds = 3;
    }
 
    message MultiGate {
        uint32 state = 1;
        repeated int32 unitIds = 3;
    }
 
    message GoBackToWork2 {
        repeated int32 unitIds = 2;
    }
 
    message ChangePlayerName {
        uint32 playerId = 1;
        string newName = 2;
    }
 
    message UnknownCommand {
        uint32 commandId = 1;
    }
}
  • grpc/main.txt
  • Last modified: 4 years ago
  • by nimda