BWAPI
Skynet/Skynet/Skynet.cpp
Go to the documentation of this file.
00001 #include "Skynet.h"
00002 
00003 #include <iostream>
00004 
00005 #include "DrawBuffer.h"
00006 #include "TerrainAnaysis.h"
00007 #include "UnitTracker.h"
00008 #include "BaseTracker.h"
00009 #include "BuildingPlacer.h"
00010 #include "TaskManager.h"
00011 #include "ResourceTracker.h"
00012 #include "ResourceManager.h"
00013 #include "TrainTask.h"
00014 #include "ConstructionTask.h"
00015 #include "MorphTask.h"
00016 #include "WallTracker.h"
00017 #include "BuildOrderManager.h"
00018 #include "PlayerTracker.h"
00019 #include "BorderTracker.h"
00020 #include "ScoutManager.h"
00021 #include "SupplyManager.h"
00022 #include "MacroManager.h"
00023 #include "ExpansionManager.h"
00024 #include "UnitInformation.h"
00025 #include "UnitHelper.h"
00026 #include "LatencyTracker.h"
00027 #include "PylonPowerTracker.h"
00028 #include "MapHelper.h"
00029 #include "PathFinder.h"
00030 #include "Logger.h"
00031 #include "GameProgressDetection.h"
00032 #include "AOEThreatTracker.h"
00033 #include "SquadManager.h"
00034 #include "BlockedPathManager.h"
00035 
00036 Skynet::Skynet()
00037         : mOnBegin(false)
00038         , mLeavingGame(0)
00039         , mSaidGG(false)
00040 {
00041 }
00042 
00043 void Skynet::onStart()
00044 {
00045         BWAPI::Broodwar->sendText("Skynet 2.0 Operational");
00046 
00047         BWAPI::Broodwar->setLatCom(false);
00048         BWAPI::Broodwar->setCommandOptimizationLevel(1);
00049 
00050         if(BWAPI::Broodwar->self()->getRace() != BWAPI::Races::Protoss)
00051                 BWAPI::Broodwar->sendText("Skynet is a Protoss only bot");
00052 }
00053 
00054 void Skynet::onEnd(bool isWinner)
00055 {
00056 }
00057 
00058 void Skynet::onFrame()
00059 {
00060         for each(BWAPI::Event BWAPIEvent in BWAPI::Broodwar->getEvents())
00061         {
00062                 if(BWAPIEvent.type == BWAPI::EventType::UnitDiscover)
00063                         UnitTracker::Instance().onUnitDiscover(BWAPIEvent.unit);
00064         }
00065         for each(BWAPI::Event BWAPIEvent in BWAPI::Broodwar->getEvents())
00066         {
00067                 if(BWAPIEvent.type == BWAPI::EventType::UnitDestroy)
00068                         UnitTracker::Instance().onUnitDestroy(BWAPIEvent.unit);
00069         }
00070 
00071         if(!mOnBegin)
00072         {
00073                 mOnBegin = true;
00074                 WallTracker::Instance().onBegin();
00075                 PlayerTracker::Instance().onBegin();
00076                 TerrainAnaysis::Instance().analyseBasesAndTerrain();
00077                 BorderTracker::Instance().onBegin();
00078                 UnitTracker::Instance().pumpUnitEvents();
00079                 ScoutManager::Instance().onBegin();
00080                 MacroManager::Instance().onBegin();
00081 
00082                 BuildOrderManager::Instance().onBegin();
00083 
00084                 BlockedPathManager::Instance().onBegin();
00085         }
00086 
00087         UnitTracker::Instance().update();
00088 
00089         AOEThreatTracker::Instance().update();
00090 
00091         BlockedPathManager::Instance().update();
00092         PylonPowerTracker::Instance().update();
00093         UnitInformation::Instance().update();
00094         BorderTracker::Instance().update();
00095         PlayerTracker::Instance().update();
00096         BaseTracker::Instance().update();
00097         BuildingPlacer::Instance().update();
00098         ResourceManager::Instance().update();
00099         SupplyManager::Instance().update();
00100         MacroManager::Instance().update();
00101         ExpansionManager::Instance().update();
00102         LatencyTracker::Instance().update();
00103         GameProgressDetection::Instance().update();
00104 
00105         BuildOrderManager::Instance().update();
00106         ScoutManager::Instance().update();
00107         SquadManager::Instance().update();
00108 
00109         TaskManager::Instance().update();
00110 
00111         DrawBuffer::Instance().update();
00112 
00113         if(GameProgressDetection::Instance().shouldGG())
00114         {
00115                 if(mLeavingGame == 0)
00116                         mLeavingGame = BWAPI::Broodwar->getFrameCount();
00117         }
00118         else
00119                 mLeavingGame = 0;
00120 
00121         if(mLeavingGame != 0)
00122         {
00123                 if(BWAPI::Broodwar->getFrameCount() - mLeavingGame > 24 && !mSaidGG)
00124                 {
00125                         mSaidGG = true;
00126                         BWAPI::Broodwar->sendText("gg");
00127                 }
00128                 else if(BWAPI::Broodwar->getFrameCount() - mLeavingGame > 80)
00129                         BWAPI::Broodwar->leaveGame();
00130         }
00131 }
00132 
00133 void Skynet::onSendText(std::string text)
00134 {
00135         BWAPI::Broodwar->sendText(text.c_str());
00136 }
00137 
00138 void Skynet::onPlayerLeft(Player player)
00139 {
00140         PlayerTracker::Instance().onPlayerLeft(player);
00141 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines