BWAPI
|
00001 #pragma once 00002 #include "../../Interface/Actions/Research.h" 00003 #include "L2TacticalAction.h" 00004 00005 class L2Research : public virtual layer2::Research, public L2TacticalAction 00006 { 00007 public: 00008 L2Research(unsigned int priority) 00009 : Research(priority) 00010 , L2TacticalAction(priority) 00011 , TacticalAction(priority) 00012 , Process(Spar) 00013 , m_researchTerminateEventHandler(*this) 00014 , m_resourceAllocatedEventHandler(*this) 00015 , m_resourcesRequestID(m_resourceAllocatedEventHandler) 00016 , m_researchProcess(NULL) 00017 , m_currentState(UNINITIALIZED) 00018 , m_building(NULL) 00019 { 00020 } 00021 00022 protected: 00023 virtual void executeSpecificImpl(); 00024 virtual void cancelSpecificImpl(); 00025 virtual void terminateSpecificImpl(); 00026 virtual void onResourcesAllocated(void* data, BWAPI::Unit* b) = 0; 00027 00028 void onResearchProcessTerminate(void* data); 00029 00030 enum ResearchState 00031 { 00032 UNINITIALIZED, 00033 WAITING_FOR_RESOURCES, 00034 ACTION_SENT, 00035 WAITING_TO_FINISH, 00036 TERMINATED 00037 }; 00038 00039 ResearchState m_currentState; 00040 BWAPI::Unit* m_building; 00041 Layer2ManagersBase::ResourcesRequestID m_resourcesRequestID; 00042 PerceptualState::ResearchInProgress* m_researchProcess; 00043 00044 EVENT_HANDLER1(L2Research, onResourcesAllocated, BWAPI::Unit*) m_resourceAllocatedEventHandler; 00045 00046 PerceptualState::ResearchInProgress::OnTerminate::SubscriberID m_researchTerminateSubscriberID; 00047 EVENT_HANDLER(L2Research, onResearchProcessTerminate) m_researchTerminateEventHandler; 00048 }; 00049 00050 class L2UpgradeResearch : public virtual layer2::UpgradeResearch, public L2Research 00051 { 00052 public: 00053 L2UpgradeResearch(unsigned int priority, UpgradeTypeTech* upgrade) 00054 : UpgradeResearch(priority, upgrade) 00055 , L2Research(priority) 00056 , Research(priority) 00057 , TacticalAction(priority) 00058 , Process(Spar) 00059 , m_upgrade(upgrade) 00060 { 00061 } 00062 00063 protected: 00064 UpgradeTypeTech* m_upgrade; 00065 00066 virtual void executeSpecificImpl(); 00067 virtual void onResourcesAllocated(void* data, BWAPI::Unit* b); 00068 }; 00069 00070 class L2TechResearch : public virtual layer2::TechResearch, public L2Research 00071 { 00072 public: 00073 L2TechResearch(unsigned int priority, TechTypeTech* tech) 00074 : TechResearch(priority, tech) 00075 , L2Research(priority) 00076 , Research(priority) 00077 , TacticalAction(priority) 00078 , Process(Spar) 00079 , m_tech(tech) 00080 { 00081 } 00082 00083 protected: 00084 TechTypeTech* m_tech; 00085 00086 virtual void executeSpecificImpl(); 00087 virtual void onResourcesAllocated(void* data, BWAPI::Unit* b); 00088 };