/* <함수 호출 순서> 1. SetDevice() 2. SetupTiles() 3. LoadTexture() / SetTexture() 4. Process() 5. Render() */ #pragma once #include "stdafx.h" #include "kseqform.h" #include "KResource.h" #include "KPrimitiveTile.h" #include "KRenderDevice.h" int Randomize(int nMin, int nMax); float Randomize(float fMin, float fMax); class KSeqLoadingScreen : public KSeqForm { public: KSeqLoadingScreen(); virtual ~KSeqLoadingScreen(); virtual void Destroy(); //void SetDevice(class K3DRenderDevice* pRenderDevice) {m_pRenderDevice = pRenderDevice;} virtual void Render( KViewportObject *viewport, DWORD flag = RENDEREFX_NONE, const K3DMatrix * pAttachMat = NULL ); virtual int Process( DWORD dwTime ); bool LoadTexture(const char* pszTexFile); void SetTexture(K3DTexture* pTexture); virtual void StartAnimation(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 1, int numTilesInAColumn = 1); //void SetupTiles(STileVertex min, STileVertex max, int numTilesInARow = 1, int numTilesInAColumn = 1); virtual void ResetTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max); protected: K3DTexture* m_pTexture; KTilePrimitive* m_Tiles; //K3DRenderDevice* m_pRenderDevice; int m_numTilesInARow; int m_numTilesInAColumn; }; class KSeqScreenTransition : public KSeqLoadingScreen { public: KSeqScreenTransition(); virtual ~KSeqScreenTransition(); virtual void Destroy(); //virtual int Process( DWORD dwTime ); virtual void StartAnimation(DWORD dwTime); //virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 1, int numTilesInAColumn = 1); //virtual void ResetTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max); protected: DWORD m_dwStartTime; DWORD m_dwLife; }; class KSeqDissolveScreen : public KSeqScreenTransition { public: KSeqDissolveScreen(); virtual ~KSeqDissolveScreen(); virtual void Destroy(); virtual int Process( DWORD dwTime ); //virtual void StartAnimation(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 1, int numTilesInAColumn = 1); //virtual void ResetTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max); protected: //DWORD m_dwStartTime; //DWORD m_dwElapsedTime; //DWORD m_dwLife; }; class KSeqWipeScreen : public KSeqScreenTransition { public: KSeqWipeScreen(); virtual ~KSeqWipeScreen(); virtual void Destroy(); virtual int Process( DWORD dwTime ); //virtual void StartAnimation(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 1, int numTilesInAColumn = 1); protected: //DWORD m_dwStartTime; //DWORD m_dwElapsedTime; //DWORD m_dwLife; }; class KSeqBlindScreen : public KSeqScreenTransition { public: KSeqBlindScreen(); virtual ~KSeqBlindScreen(); virtual void Destroy(); virtual int Process( DWORD dwTime ); //virtual void StartAnimation(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 16, int numTilesInAColumn = 1); //virtual void ResetTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max); protected: //DWORD m_dwStartTime; //DWORD m_dwLife; }; class KSeqMeltScreen : public KSeqScreenTransition { public: KSeqMeltScreen(); virtual ~KSeqMeltScreen(); virtual void Destroy(); virtual int Process( DWORD dwTime ); //virtual void StartAnimation(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 100, int numTilesInAColumn = 1); protected: //DWORD m_dwStartTime; //DWORD m_dwLife; float* m_fDropSpeeds; }; class KSeqShrinkScreen : public KSeqScreenTransition { public: KSeqShrinkScreen(); virtual ~KSeqShrinkScreen(); virtual void Destroy(); virtual int Process( DWORD dwTime ); //virtual void StartAnimation(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 16, int numTilesInAColumn = 16); protected: //DWORD m_dwStartTime; //DWORD m_dwLife; }; class KSeqSpinAndShrinkScreen : public KSeqScreenTransition { public: KSeqSpinAndShrinkScreen(); virtual ~KSeqSpinAndShrinkScreen(); virtual void Destroy(); virtual int Process( DWORD dwTime ); //virtual void StartAnimation(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 16, int numTilesInAColumn = 16); protected: //DWORD m_dwStartTime; //DWORD m_dwLife; float m_fSpinSpeed; }; class KSeqWarpDissolveScreen : public KSeqScreenTransition { public: KSeqWarpDissolveScreen(); virtual ~KSeqWarpDissolveScreen(); virtual void Destroy(); virtual int Process( DWORD dwTime ); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 16, int numTilesInAColumn = 16); protected: float m_fWarpCoefficient; float* m_fDeltaUs; float* m_fDeltaVs; float* m_fJiggles; }; class KSeqTileTransition : public KSeqScreenTransition { public: KSeqTileTransition(); virtual ~KSeqTileTransition(); virtual void Destroy(); protected: int* m_Priorities; // 타일 수만큼 할당하여 사용 (m_numPriorities 만큼이 아님) int m_numPriorities; }; class KSeqTileConcentric : public KSeqTileTransition { public: KSeqTileConcentric(); virtual ~KSeqTileConcentric(); //virtual int Process(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 15, int numTilesInAColumn = 15); }; class KSeqTileWipe : public KSeqTileTransition { public: KSeqTileWipe(); virtual ~KSeqTileWipe(); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 16, int numTilesInAColumn = 16); }; class KSeqSpinShrinkTileConcentric : public KSeqTileConcentric { public: KSeqSpinShrinkTileConcentric(); virtual ~KSeqSpinShrinkTileConcentric(); virtual void Destroy(); virtual int Process(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 15, int numTilesInAColumn = 15); protected: float m_fSpinSpeed; }; class KSeqSpinShrinkTileWipe : public KSeqTileWipe { public: KSeqSpinShrinkTileWipe(); virtual ~KSeqSpinShrinkTileWipe(); virtual void Destroy(); virtual int Process(DWORD dwTime); virtual void SetupTiles(KTilePrimitive::STileVertex min, KTilePrimitive::STileVertex max, int numTilesInARow = 16, int numTilesInAColumn = 16); protected: float m_fSpinSpeed; };