#pragma once class CGrowingArea; class IFarmAreaState { public: IFarmAreaState( CGrowingArea* pArea ) :m_pArea(pArea) { } virtual ~IFarmAreaState(){} virtual Farm::AreaState::eState GetState() = 0; virtual void BeginProcess() = 0; virtual void Process( float fDelta ) = 0; virtual void EndProcess() = 0; // CheckState virtual bool CanStartPlantSeed(){ return false; } // ¾¾¾Ñ ½ÉÀ» ¼ö ÀÖ´Â »óÅÂ? virtual bool CanCancelPlantSeed(){ return false; } // ¾¾¾Ñ ½É´Â°Å Ãë¼ÒÇÒ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanCompletePlantSeed(){ return false; } // ¾¾¾Ñ ½É´Â°Å ¿Ï·áÇÒ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanStartHarvest(){ return false; } // ¼öÈ® ÇÒ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanCancelHarvest(){ return false; } // ¼öÈ® Ãë¼ÒÇÒ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanCompleteHarvest(){ return false; } // ¼öÈ® ¿Ï·áÇÒ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanStartAddWater(){ return false; } // ¹° ÁÙ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanCancelAddWater( CDNUserSession* pSession ){ return false; } // ¹° Áִ°ŰŠÃë¼ÒÇÒ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanCompleteAddWater( CDNUserSession* pSession ){ return false; } // ¹° Áִ°ŰŠ¿Ï·áÇÒ ¼ö ÀÖ´Â »óÅÂ? virtual bool CanDBUpdate(){ return false; } // DB Update ÇØ¾ßÇÏ´ÂÁö °Ë»ç? virtual void RejectReasonLog(WCHAR* wszReason, CDNUserSession* pSession=NULL) {} void SendBeginAreaState(); protected: CGrowingArea* m_pArea; };