Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Flie: AIExport.cpp
- #include "AIExport.h"
- const struct SSkirmishAICallback* l_cbs[10];
- int l_cmd_id = 0;
- EXPORT(enum LevelOfSupport) getLevelOfSupportFor(const char* aiShortName,
- const char* aiVersion, const char* engineVersionString,
- int engineVersionNumber, const char* aiInterfaceShortName,
- const char* aiInterfaceVersion) {
- printf("Giving level of support\n");
- return LOS_Optimal;
- }
- EXPORT(int) init(int sid, const struct SSkirmishAICallback* callback) {
- printf("Found sid %d in init\n", sid);
- l_cbs[sid] = callback;
- return 0;
- }
- EXPORT(int) handleEvent(int sid, int topic, const void* data) {
- if(topic == 0) {
- printf("Null event: %d\n", sid);
- }
- if(topic == 1) {
- printf("Init event: %d\n", sid);
- }
- if(topic == 6) {
- const struct SUnitFinishedEvent* fes = (const struct SUnitFinishedEvent*) data;
- int unit = fes->unit;
- int udef = l_cbs[sid]->Unit_getDef(sid, unit);
- char* uname = l_cbs[sid]->UnitDef_getName(sid, udef);
- printf("<Agent %d> Unit finished: %s with id %d\n", sid, uname, unit);
- struct SMoveUnitCommand cmd;
- cmd.unitId = unit;
- cmd.groupId = -1;
- cmd.options = (short) 0;
- cmd.timeOut = 100000;
- float pos[3] = {300.0f, 25.0f, 300.0f};
- if(sid == 1) {
- pos[0] = 500.0f;
- pos[2] = 500.0f;
- }
- cmd.toPos_posF3 = pos;
- float* p = cmd.toPos_posF3;
- l_cmd_id += 1;
- /*
- int rv = l_cbs[sid]->Engine_handleCommand(sid, COMMAND_TO_ID_ENGINE, l_cmd_id,
- COMMAND_UNIT_MOVE, &cmd);
- printf("Command Sent from agent %d for unit %d ** rv = %d **\n", sid, unit, rv);
- 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);
- 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]);
- */
- int soldef = l_cbs[sid]->getUnitDefByName(sid, "armsolar");
- struct SBuildUnitCommand bcmd = {unit, -1, (short) 0, 100000, soldef,
- pos, -1};
- int rv = l_cbs[sid]->Engine_handleCommand(sid, COMMAND_TO_ID_ENGINE, l_cmd_id,
- COMMAND_UNIT_BUILD, &bcmd);
- p = bcmd.buildPos_posF3;
- 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);
- 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);
- }
- if(topic == 7) {
- printf("Unit idle id: %d\n", sid);
- }
- if(topic == 8) {
- printf("Move failed id: %d\n", sid);
- }
- if(topic == 20) {
- printf("Player command: %d\n", sid);
- }
- if(topic == 22) {
- printf("Command Finished id: %d\n", sid);
- }
- if(topic == 27) {
- printf("Lua message: %d\n", sid);
- }
- return 0;
- }
- EXPORT(int) release(int sid) {
- printf("<Agent %d> Releasing AI\n", sid);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement