/* ========================================================================== * ÆÄ ÀÏ : StageScript.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2007-10-22 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Stage_Common.h" #include "RangeCheck.h" class cPlayer; #ifndef _CLIENT struct sMapInfo { unsigned long mapNum; unsigned long folderIdx; unsigned char mapMode; unsigned char minLevel; unsigned char maxLevel; unsigned char maxPlayer; unsigned long itemIdx; }; #endif class cStageScript { public: static cStageScript* mpStageScript; public: /// »ý¼º ¼Ò¸ê cStageScript(); virtual ~cStageScript(); /// ÃʱâÈ­ bool Init(); /// Àüü »ç¿ë ¸Þ¸ð¸® Á¦°Å void Release(); /// ¸ÊÀ̵¿ Æ÷ÀÎÆ® ·Îµå bool StageChangePosScriptLoad(); /// ÁÂÇ¥¸¦ ÀÔ·ÂÇØ ¸ÊÀ̵¿ Æ÷ÀÎÆ®°¡ ½ºÅ©¸³Æ®¿¡ ÀÖ´ÂÁö Ã¼Å©ÇØ index¸¦ ¸®ÅÏ. (0:¾øÀ½) unsigned long GetStageChangeIndex( float posX, float posY ); /// ÁÂÇ¥À̵¿ °íÀ¯ À妽º¸¦ ÀÔ·ÂÇØ ¸ñÀûÁö¸¦ ¸®ÅÏÇÑ´Ù. sTargetPos GetStageChangePos( float posX, float posY, unsigned short mapNum, float objectSize, unsigned long posIdx ); /// ÁÂÇ¥À̵¿ °íÀ¯ À妽º¸¦ ÀÔ·ÂÇØ ¸ñÀûÁö¸¦ ¸®ÅÏÇÑ´Ù. sTargetPos GetStageChangePos( unsigned long posIdx ); /// °¡Àå °¡±î¿î ¸ÊÀ̵¿ ¸ñÀûÁöÁÂÇ¥¸¦ ã¾Æ³¿ NiPoint2 CalcNearTargetMapPos( unsigned short mapNum, float posX, float posY ); bool CalcTargetMapPos( unsigned long posIdx, float *pX, float *pY ); tPointerArray* GetMapChangeStarterArr( unsigned short mapNum ); tPointerArray* GetMapChangeDestArr( unsigned short mapNum ); sStageChangePos* GetPosScriptInfo( unsigned long idx ); bool LoadManagedDoorInfo(); tPointerArray* GetManagedDoorArr( unsigned short mapNum ); sDoorInfo* GetManagedDoorInfo( unsigned long index ); sDoorInfo* CrashDoor( unsigned long doorIdx, NiPoint2 start, NiPoint2 goal ); bool LineIntersectRect( NiPoint2* rect, NiPoint2 start, NiPoint2 goal ); bool LineIntersectLine( NiPoint2 start, NiPoint2 goal, NiPoint2 lineStart, NiPoint2 lineEnd ); #ifndef _CLIENT bool LoadMapInfo(); sMapInfo* GetMapFolderIdx( unsigned long mapIdx, unsigned char mapMode ); protected: typedef tPointerHashMap cPointerHashMap; /// /// cPointerHashMap mMapInfoMap; #endif //protected: public: unsigned int InsidePolygon( NiPoint2 *polygon, unsigned int numVerts, NiPoint2 p ); private: /// typedef tPointerHashMap cPointerHashMap; typedef tHashSet cSet; cPointerHashMap mStageChangePosMap; /// ƯÁ¤¸ÊÀÇ ¸ðµç À̵¿Æ÷ÀÎÆ®¸¦ ³Ñ°ÜÁÖ±â À§ÇÑ º¯¼ö tPointerArray mReturnArray; cRangeCheck mRangeCheck; /// cPointerHashMap mStageDoorMap; }; #define STAGESCRIPT cStageScript::mpStageScript