More Interface Updates
After a lot of tinkering, I think I finally have the initial interface for the AI system. I've been building a simple example program. Here's the main() function from that example program. You can get a general idea of the AI interface from it. I think it'll be quite simple to use.
int main() { srand(time(NULL)); // create an initialize our map --------------------------------------------- Map game_map(64, 12); // Set up the entity Manager ------------------------------------------------ EntityManager entity_manager; EntityControllerPlayer player(entity_manager.InsertEntity('P', game_map)); // start the AI sytem sdp_rootai::AIEngineCreateParams desc; sdp_rootai::AIEngine *the_ai_engine; if(sdp_rootai::CreateAIEngine(desc, the_ai_engine) != sdp_rootai::AIResult_OK) { PrintError("Unable to create the AI engine"); return 0; } // create the world sdp_rootai::AIWorldCreationParams world_desc; sdp_rootai::WORLD_HANDLE world_handle; if(the_ai_engine->CreateWorld(world_desc, world_handle) != sdp_rootai::AIResult_OK) { PrintError("Unable to create the AI world"); return 0; } // create the AI agent sdp_rootai::AIAgentCreationParams agent_desc; sdp_rootai::AIAgent *aiagent; if(the_ai_engine->GetWorldByHandle(world_handle).CreateAgent(agent_desc, aiagent) != sdp_rootai::AIResult_OK) { PrintError("Unable to create the AI agent"); return 0; } // add the AI entity EntityControllerAI enemy(entity_manager.InsertEntity('E', game_map), aiagent); // the game loop do { // send agent position data to the AI system the_ai_engine->PushCurrentAIData(); // update the AI the_ai_engine->UpdateSystem(1000.0f / 60.0f); // clear the screen --------------------------------------------------------- ClearScreen(); // render the map game_map.Render(); // get results of AI update the_ai_engine->PopCurrentAIData(); // update the enemy AI enemy.OnUpdate(entity_manager, game_map); } while (player.OnUpdate(entity_manager, game_map)); return 0; }
Comments
Post a Comment