Advertisement
Guest User

Untitled

a guest
Dec 27th, 2011
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.24 KB | None | 0 0
  1. # Flie:  AIExport.cpp
  2. #include "AIExport.h"
  3.  
  4. const struct SSkirmishAICallback* l_cbs[10];
  5. int l_cmd_id = 0;
  6.  
  7. EXPORT(enum LevelOfSupport) getLevelOfSupportFor(const char* aiShortName,
  8.     const char* aiVersion, const char* engineVersionString,
  9.     int engineVersionNumber, const char* aiInterfaceShortName,
  10.     const char* aiInterfaceVersion) {
  11. printf("Giving level of support\n");
  12. return LOS_Optimal;
  13. }
  14.  
  15. EXPORT(int) init(int sid, const struct SSkirmishAICallback* callback) {
  16.     printf("Found sid %d in init\n", sid);
  17.     l_cbs[sid] = callback;
  18.     return 0;
  19. }
  20.  
  21. EXPORT(int) handleEvent(int sid, int topic, const void* data) {
  22.     if(topic == 0) {
  23.         printf("Null event: %d\n", sid);
  24.     }  
  25.     if(topic == 1) {
  26.         printf("Init event: %d\n", sid);
  27.     }  
  28.     if(topic == 6) {
  29.         const struct SUnitFinishedEvent* fes = (const struct SUnitFinishedEvent*) data;
  30.         int unit = fes->unit;
  31.         int udef = l_cbs[sid]->Unit_getDef(sid, unit);
  32.         char* uname = l_cbs[sid]->UnitDef_getName(sid, udef);
  33.         printf("<Agent %d> Unit finished: %s with id %d\n", sid, uname, unit);
  34.         struct SMoveUnitCommand cmd;
  35.         cmd.unitId = unit;
  36.         cmd.groupId = -1;
  37.         cmd.options = (short) 0;
  38.         cmd.timeOut = 100000;
  39.         float pos[3] = {300.0f, 25.0f, 300.0f};
  40.         if(sid == 1) {
  41.             pos[0] = 500.0f;
  42.             pos[2] = 500.0f;
  43.         }  
  44.         cmd.toPos_posF3 = pos;
  45.         float* p = cmd.toPos_posF3;
  46.         l_cmd_id += 1;
  47.         /*  
  48.         int rv = l_cbs[sid]->Engine_handleCommand(sid, COMMAND_TO_ID_ENGINE, l_cmd_id,
  49.             COMMAND_UNIT_MOVE, &cmd);
  50.         printf("Command Sent from agent %d for unit %d ** rv = %d **\n", sid, unit, rv);
  51.         printf("cmd args sid %d, toid %d, l_cmd_id %d, cmdTopic %d\n", sid, COMMAND_TO_ID_ENGINE, l_cmd_id, COMMAND_UNIT_MOVE);
  52.         printf("Command data was\n untiId %d\n groupId %d\n options %d\n timeout %d\n Pos (%f %f %f)\n", cmd.unitId, cmd.groupId, cmd.options, cmd.timeOut, p[0], p[1], p[2]);
  53.         */
  54.         int soldef = l_cbs[sid]->getUnitDefByName(sid, "armsolar");
  55.         struct SBuildUnitCommand bcmd = {unit, -1, (short) 0, 100000, soldef,
  56.             pos, -1};
  57.         int rv = l_cbs[sid]->Engine_handleCommand(sid, COMMAND_TO_ID_ENGINE, l_cmd_id,
  58.             COMMAND_UNIT_BUILD, &bcmd);
  59.         p = bcmd.buildPos_posF3;
  60.         printf("<Agent %d> cmd args toid %d, l_cmd_id %d, cmdTopic %d ** Return Value %d**\n", sid, COMMAND_TO_ID_ENGINE, l_cmd_id, COMMAND_UNIT_BUILD, rv);
  61.         printf("Command data was\n untiId %d\n groupId %d\n options %d\n timeout %d\n UnitDef %d\n Pos (%f %f %f)\n Facing %d\n", bcmd.unitId, bcmd.groupId, bcmd.options, bcmd.timeOut, bcmd.toBuildUnitDefId, p[0], p[1], p[2], bcmd.facing);
  62.     }
  63.     if(topic == 7) {
  64.         printf("Unit idle id: %d\n", sid);
  65.     }
  66.     if(topic == 8) {
  67.         printf("Move failed id: %d\n", sid);
  68.     }
  69.     if(topic == 20) {
  70.         printf("Player command: %d\n", sid);
  71.     }
  72.     if(topic == 22) {
  73.         printf("Command Finished id: %d\n", sid);
  74.     }
  75.     if(topic == 27) {
  76.         printf("Lua message: %d\n", sid);
  77.     }
  78.     return 0;
  79. }
  80.  
  81. EXPORT(int) release(int sid) {
  82.     printf("<Agent %d> Releasing AI\n", sid);
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement