📄 sfapi.h
字号:
/* $Id: SFApi.h 142 2006-12-22 02:28:50Z snowfish $ */
/**
* @file sfapi.h
* @version 0.9.0
* @author Myles Yu
*/
#ifndef __SNOWFISH_API__H__
#define __SNOWFISH_API__H__
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//#define SF_SCREEN_WIDTH 240
//#define SF_SCREEN_HEIGHT 320
typedef unsigned short UNICHAR;
typedef const UNICHAR* UString;
typedef int SFInt;
typedef unsigned int SFUint;
typedef long SFInt32;
typedef unsigned long SFUint32;
typedef char SFInt8;
typedef unsigned char SFUint8;
typedef short SFInt16;
typedef unsigned short SFUint16;
typedef char SFChar;
typedef UNICHAR UChar;
typedef SFUint8 SFByte;
typedef SFByte* SFBytePtr;
typedef const SFByte* SFCBytePtr;
typedef SFInt32 int32;
typedef SFInt16 int16;
typedef SFInt8 int8;
typedef SFUint32 uint32;
typedef SFUint16 uint16;
typedef SFUint8 uint8;
typedef void SFVoid;
typedef void SFAny;
typedef void* SFAnyPtr;
typedef SFAnyPtr* SFAnyPtrPtr;
typedef SFUint32 SFSize_T;
#define SFNull ((void*)0)
#define SFNULL ((void*)0)
typedef unsigned int SFLPARAM;
typedef unsigned int SFWPARAM;
typedef int SFEVT_ID;
typedef int SFBool;
typedef enum _SF_BOOLEAN
{
SFTrue=1,
SFFalse=0
} SF_BOOLEAN;
typedef SFUint16 SFNColor;
#define SFMAKE_PARAM(high,low) (((high&0xffff)<<16)|(low&0xffff))
#define SFGET_HIGH(v) ((short)((v>>16)&0xffff))
#define SFGET_LOW(v) ((short)((v)&0xffff))
#define SFMAKE_POINT(x,y) SFMAKE_PARAM(x,y)
#define SFPOINT_X(p) SFGET_HIGH(p)
#define SFPOINT_Y(p) SFGET_LOW(p)
#define PARAM_UNUSED(x) (x)
//!定时器ID
typedef unsigned int SFTIMER_ID;
//!声音ID
typedef unsigned int SFSND_ID;
//!短消息ID
typedef unsigned int SFSMS_ID;
typedef struct tagISFApplication ISFApplication;
//!事件处理句柄,对于每一个消息都有一个事件ID(idEvent)和最多2个的关联的参数(lParam,wParam)
//以下关于事件一律写作 evt_id ( [param1 [,param2] ] )
//@param pApp - 系统维护的ISFApplication实例指针 (由系统调用SFApp_Create创建,到应用相应EVT_APP_DESTROY后指向的内容自动被清除)
//@param idEvent - 事件ID
//@param lParam - 事件的参数1
//@param wParam - 事件的参数2
typedef void (*SF_EVENT_HANDLER) (ISFApplication*pApp,SFEVT_ID idEvent,SFLPARAM lParam,SFWPARAM wParam);
typedef enum _SF_KEYCODE
{
SFKEY_NONE=0,
//左软键
SFKEY_SL=1,
//中软键
SFKEY_SM,
//右软键
SFKEY_SR,
SFKEY_UP,
SFKEY_DOWN,
SFKEY_LEFT,
SFKEY_RIGHT,
//数字键
SFKEY_NUM0,
SFKEY_NUM1,
SFKEY_NUM2,
SFKEY_NUM3,
SFKEY_NUM4,
SFKEY_NUM5,
SFKEY_NUM6,
SFKEY_NUM7,
SFKEY_NUM8,
SFKEY_NUM9,
//井号
SFKEY_POUND,
//星号
SFKEY_STAR,
SFKEY_CLR,
SFKEY_BACK
} SF_KEYCODE;
typedef enum _SF_SOCKET_STATUS
{
SF_SOCK_STATUS_READY=0,
SF_SOCK_STATUS_ERROR=1
} SF_SOCKET_STATUS;
typedef enum _SF_EVENT
{
//EVT_APP_NONE()
//@brief 空事件
EVT_APP_NONE=0,
//EVT_APP_START()
//@brief 应用程序开始运行的信号
EVT_APP_START,
//EVT_APP_PAUSE()
//@brief 应用程序暂停的信号
EVT_APP_PAUSE,
//EVT_APP_RESUME()
//@brief 应用程序从暂停恢复的信号
EVT_APP_RESUME,
//EVT_APP_DESTROY()
//@brief 应用程序关闭的信号
EVT_APP_DESTROY,
//EVT_KEYUP(SPLPARAM nKeyCode)
//@brief
//@param nKeyCode - 释放的按键的键值,见SF_KEYCODE
EVT_KEYUP,
//EVT_KEYDOWN(SPLPARAM nKeyCode)
//@brief
//@param nKeyCode - 按下的按键的键值,见SF_KEYCODE
EVT_KEYDOWN,
//EVT_POINTER_PRESSED(SPLPARAM ptPress)
//@brief 触摸屏按下
//@param ptPress - SFMAKE_POINT(x,y) 按下点的屏幕坐标
EVT_POINTER_PRESSED,
//EVT_POINTER_PRESSED(SPLPARAM ptRelease)
//@brief 触摸屏释放
//@param ptRelease - SFMAKE_POINT(x,y) 释放点的屏幕坐标
EVT_POINTER_RELEASED,
//EVT_POINTER_PRESSED(SPLPARAM ptDrag)
//@brief 触摸屏拖动
//@param ptDrag - SFMAKE_POINT(x,y) 拖动点的屏幕坐标
EVT_POINTER_DRAGGED,
//EVT_TIMER(SPLPARAM idTimer)
//@brief 定时器到时
//@param idTimer - SFTIMER_ID 到时的定时器ID
EVT_TIMER,
//EVT_SMS_SEND(SPLPARAM idSms,SFWPARAM nResult)
//@brief 短消息发送结果
//@param idSms - SFSMS_ID 之前取到的短消息发送ID
//@param nResult - int 发送结果,1表示成功,0表示失败
EVT_SMS_SEND,
//EVT_SOCKET(SPLPARAM socket,SFWPARAM evt_err)
//@brief socket消息
//@param socket - SFSMS_ID 之前取到的短消息发送ID
//@param evt_err - SFMAKE_PARAM(event,error);
EVT_SOCKET,
//EVT_SOCKET_STATUS(SPLPARAM idStatus)
//@brief 网络系统状态
//@param idStatus - SF_SOCK_STATUS_READY表示网络系统初始化,socket已经可以连接、SF_SOCK_STATUS_ERROR表示网络系统已出错关闭,需要重新初始化。
EVT_SOCKET_STATUS
#ifdef WIN32
,EVT_MEM_PROFILE
#endif
} SF_EVENT;
//应用程序接口
struct tagISFApplication
{
SF_EVENT_HANDLER pfnEvtHandler;
};
//这是我们提供实现的方法,但调用由你们这边调用,并需要保留返回值
/**
* @brief 创建应用程序的需要系统维护的唯一实例
* @param idGame - 游戏ID
* @return 应用实例句柄
*/
ISFApplication* SFApp_Create(int idGame);
ISFApplication* SFAppTest_Create(int idGame);
/**
* @brief 表示应用主动要求退出,系统随后应该发送EVT_APP_DESTORY消息
*/
void SFApp_Exit(void);
/**
* @brief 获取系统的屏幕缓冲区
* @return 屏幕缓冲区指针
*/
SFNColor* SFScreen_GetBuffer(void);
#ifdef WIN32
typedef struct HDC__* HDC;
HDC SFScreen_GetDC(void);
#endif //WIN32
/**
* @brief 获取系统的屏幕宽度
* @return 屏幕宽度
*/
SFInt SFScreen_GetWidth(void);
/**
* @brief 获取系统的屏幕高度
* @return 屏幕高度
*/
SFInt SFScreen_GetHeight(void);
/**
* @brief 把系统的屏幕缓冲区内容刷新到前台(实际屏幕)
*/
void SFScreen_Update(void);
/**
* @brief 取得文字的逻辑高度,所有文字有统一的逻辑高度
* @return 取得的逻辑高度
*/
SFInt SFFont_GetHeight(void);
/**
* @brief 获取单个字符的宽度
* @return 取得的宽度
*/
SFInt SFFont_GetCharWidth(UChar aChar);
/**
* @brief 获取字符串的宽度
* @return 取得的宽度
*/
SFInt SFFont_GetStringWidth(UString aStr,SFInt aLength);
/**
* @brief 设置clipping区域,用于文字的clipping
*/
void SFScreen_SetClip(SFInt x,SFInt y,SFInt w,SFInt h);
/**
* @brief 重置clipping区域
*/
void SFScreen_ResetClip(void);
/**
* @brief 启动一个定时器
* @param idTimer - IN 定时器ID
* @param nExpiredTime - IN 以毫秒为单位的定时时间
* @param bOnceOrPeriod - IN YSTrue 表示定时器只有效一次,YSFalse 表示按指定间隔反复发出信号
*/
void SFTimer_Start(SFTIMER_ID idTimer,int nExpiredTime,SFBool bOnce,ISFApplication*pHandler);
/**
* @brief 停止指定的定时器
* @param idTimer - IN 定时器ID
*/
void SFTimer_Stop(SFTIMER_ID idTimer);
/**
* @brief 获取游戏中可分配的连续空间首地址
* @return 取得的空间首地址
*/
SFAnyPtr SFSystem_GetHeap(void);
/**
* @brief 获取游戏中可分配的连续空间大小
* @return 空间的大小
*/
SFSize_T SFSystem_GetHeapSize(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -