📄 sprite.h
字号:
// Sprite.h: interface for the CSprite class.
//
// BREW Game Engine.
// Version: 1.0a
// (c)2003 anecia all rights reserved
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SPRITE_H__81251FF2_867C_4555_B865_DEB652575B61__INCLUDED_)
#define AFX_SPRITE_H__81251FF2_867C_4555_B865_DEB652575B61__INCLUDED_
#ifdef WIN32
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#endif // WIN32
#include "jobject.h"
#include "ImageManager.h"
#include "sprfunc.h"
// Sprite Temp Data
#define JIN_MAX_SPR_TEMP_INT 20
#define JIN_MAX_ACTION_KIND 20
typedef struct _FRAMEDATA
{
LPJINIMAGE lpImageData;
WORD wSrcX; // 弊妨临 盔夯 x困摹
WORD wSrcY; // 弊妨临 盔夯 y困摹
WORD wWidth; // 弊妨临 承捞
WORD wHeight; // 弊妨临 臭捞
int nDelay;
JRECT weaknessRect;
JRECT attackRect;
int nDistanceX; // (Left, Top) 谅钎肺何磐 冻绢柳 芭府(x谅钎)
int nDistanceY; // (Left, Top) 谅钎肺何磐 冻绢柳 芭府(y谅钎)
} FRAMEDATA, FAR* LPFRAMEDATA;
LPFRAMEDATA CreateFrame(LPJINIMAGE lpImageData,
WORD wSrcX, WORD wSrcY, WORD wWidth, WORD wHeight, int nDelay,
JRECT weaknessRect, JRECT attackRect,
int nDistanceX, int nDistanceY, BOOL bCenterDistance);
//class CMyApp;
class CSprite : public CJObject
{
public:
static BOOL DrawImage(IDisplay* lpIDisplay, void* lpBLZ, const char* szResFileName, byte* lpPalette, uint16 unResID,
int nX, int nY, AEERasterOp dwRASOp);
static void DrawImage(IDisplay* lpIDisplay, LPJINIMAGE lpImageData,
int nX, int nY, AEERasterOp dwRASOp);
public:
CSprite(IDisplay* lpIDisplay, LPJRECT m_lpViewPortRect, LPJRECT lpClipRect);
virtual ~CSprite();
void Release();
void Hide();
void Show();
BOOL IsShow() { return m_bShow; }
void SetX(int nNewX);
void SetY(int nNewY);
void StepX(int nStepX);
void StepY(int nStepY);
void SetCenter(int nCenterX, int nCenterY);
void SetHotSpotToCenter(int nCenterX, int nCenterY);
void SetHotSpotToCenter();
void SetDistanceX(int nNewDistanceX);
void SetDistanceY(int nNewDistanceY);
void UpdateXYByHotSpot(int nHotSpotX, int nHotSpotY);
void UpdateXYByHotSpot();
BOOL SetImage(LPJINIMAGE lpImageData, WORD wSrcX, WORD wSrcY, WORD wWidth, WORD wHeight,
int nDelay, JRECT weaknessRect, JRECT attackRect,
int nDistanceX, int nDistanceY, BOOL bCenterDistance);
BOOL SetImage(LPJINIMAGE lpImageData);
/* Not use...
void SetFuncIndex(int nIndex);
int GetFuncIndex();
*/
void SetFunction(ObjectHandleFunction lpFunc);
ObjectHandleFunction GetFunction();
void Put();
void Put(int nX, int nY);
void Put2(int nHotSpotX, int nHotSpotY); // by HotSpot
void Put3(int nDistanceX, int nDistanceY); // by Distance
void Draw(int nX, int nY, AEERasterOp dwRASOp);
void FillColor(IDisplay* lpIDisplay, RGBVAL clrFill);
static void FillColor(CSprite* lpSprObj, RGBVAL rgb, JRECT fillArea);
BOOL Collision(int nX, int nY, int nExt = 0);
BOOL Collision(CSprite* pSpr, int nExt = 0);
BOOL Collision(LPJRECT lpRect, int nExt = 0);
BOOL Collision(int nX1, int nY1, int nX2, int nY2);
BOOL Collision2(int nX, int nY, int nExtX = 0, int nExtY = 0);
BOOL Collision2(CSprite* pSpr, int nExtX = 0, int nExtY = 0);
BOOL Collision2(LPJRECT lpRect, int nExtX = 0, int nExtY = 0);
BOOL IsDamage(CSprite* lpSpr);
void Update(DWORD dwDt);
LPJINLIST CreateAction(uint16 unKindNo);
BOOL AddFrame(uint16 unKindNo, LPFRAMEDATA lpActionData);
BOOL InsertFrame(uint16 unKindNo, LPFRAMEDATA lpActionData, uint16 unWhere);
BOOL DeleteFrame(uint16 unKindNo, uint16 unWhere);
BOOL DeleteHeadFrame(uint16 unKindNo);
BOOL DeleteTailFrame(uint16 unKindNo);
BOOL SetFrameNo(uint16 unFrameNo);
void SetNextFrame();
void SetPrevFrame();
BOOL SetAction(uint16 unActionKindNo, uint16 unStartFrameNo = 1, BOOL bDelayNew = TRUE);
void ActionOn() { m_bAction = TRUE; }
void ActionOff() { m_bAction = FALSE; }
void ActionLoopOn() { m_bActionLoop = TRUE; }
void ActionLoopOff() { m_bActionLoop = FALSE; }
void Action(DWORD dwDt);
BOOL SetImage(uint16 unKindNo, LPJINIMAGE lpImageData, uint16 unWhere);
BOOL SetImage(uint16 unKindNo, LPJINIMAGE lpImageData, uint16 unWhere,
uint16 unSrcX, uint16 unSrcY, uint16 unWidth, uint16 unHeight,
int nDelay, JRECT weaknessRect, JRECT attackRect,
int nDistanceX, int nDistanceY, BOOL bCenterDistance);
void SetClipRect(LPJRECT lpClipRect);
void SetViewPort(LPJRECT lpViewPortRect);
int CallFunction(void* lpParam, DWORD dwDt);
ObjectHandleFunction GetCallFunction() const;
// Zoom: BREW can't use float data, so maybe not proportion.
int GetZoom();
void SetZoom(int nZoom);
uint16 GetCurrFrameNo();
uint16 GetCurrActionKindNo();
LPJINIMAGE GetCurrImageData();
LPFRAMEDATA GetCurrFrameData();
static void DrawBackground(CSprite* lpSprObj, LPJBMP lpBackGround);
static void DrawBackground(CSprite* lpSprObj, LPJBMP lpBackGround,
int nViewOrgX, int nViewOrgY,
int nImageSrcPosX, int nImageSrcPosY,
int nWidth, int nHeight);
public:
int m_nTemp[JIN_MAX_SPR_TEMP_INT];
CSprite* m_lpParentSpr;
BOOL m_bActionOffOrEnd;
int m_nHotSpotX;
int m_nHotSpotY;
int m_nDistanceX;
int m_nDistanceY;
DWORD m_dwDelay;
DWORD m_dwCurrDelay;
BOOL m_bActionLoop;
JRECT m_clipRect;
LPJRECT m_lpViewPortRect; // reference pointer!
int m_nY;
int m_nX;
DWORD m_dwDt;
// int m_uchColorKey; not use yet.
private:
// CMyApp* m_lpMyApp;
IDisplay* m_lpIDisplay;
int m_nZoom;
BOOL m_bAction;
uint16 m_unMaxFrame;
uint16 m_unCurrFrameNo;
uint16 m_unCurrActionKindNo;
BOOL m_bShow;
int m_nFuncIndex;
LPFRAMEDATA m_lpFrameData;
// LPJINIMAGE m_lpImageData; old version!
ObjectHandleFunction m_lpfnObjFunc;
LPJINLIST m_lpCurrAction;
LPJINLIST m_arlpListAction[JIN_MAX_ACTION_KIND];
};
typedef CSprite FAR* LPSPRITE;
#endif // !defined(AFX_SPRITE_H__81251FF2_867C_4555_B865_DEB652575B61__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -