stoneage8.5/石器时代8.5客户端最新源代码/石器源码/mylua/win.cpp
2020-06-23 15:53:23 +08:00

237 lines
5.2 KiB
C++

#include "../systeminc/version.h"
#include "../systeminc/system.h"
#include "winlua.h"
#include "../systeminc/character.h"
#include "../systeminc/tool.h"
#include "../systeminc/action.h"
#include "../systeminc/field.h"
#include "../systeminc/mouse.h"
#include "../systeminc/menu.h"
#include "../systeminc/netmain.h"
#include "../other/caryime.h"
#include "../oft/work.h"
#include <locale.h>
#include <io.h>
#ifdef _WIN_LUAJIT_
extern int cloasewindows;
extern SA_WINDOWS windows;
static int InitWindow(lua_State *L)
{
size_t l;
const int winW = luaL_checkint(L, 1);
const int winH = luaL_checkint(L, 2);
const int msgWNLen = luaL_checkint(L, 3);
const char *data = luaL_checklstring(L, 4, &l);
extern void getStrSplit( char *, char *, int, int, int );
makeStringFromEscaped((char *)data);
getStrSplit(windows.message.data[0], (char *)data, 100, 25, msgWNLen);
return 1;
}
static int NewPrint(lua_State *L)
{
size_t l;
const char *data = luaL_checklstring(L, 1, &l);
printf(data);
return 1;
}
static int getMessageData(lua_State *L)
{
const int id = luaL_checkint(L, 1);
lua_pushstring(L, windows.message.data[id]);
return 1;
}
static int getMouseLeftCrick(lua_State *L)
{
lua_pushinteger(L, (mouse.onceState & MOUSE_LEFT_CRICK));
return 1;
}
extern int indexWN;
static int getIndexWN(lua_State *L)
{
lua_pushinteger(L, indexWN);
return 1;
}
extern int idWN;
static int getIdWN(lua_State *L)
{
lua_pushinteger(L, idWN);
return 1;
}
extern int buttonTypeWN;
static int getButtonTypeWN(lua_State *L)
{
lua_pushinteger(L, buttonTypeWN);
return 1;
}
static int getHitFontNo(lua_State *L)
{
lua_pushinteger(L, HitFontNo);
return 1;
}
static int getHitDispNo(lua_State *L)
{
lua_pushinteger(L, HitDispNo);
return 1;
}
extern int windowTypeWN;
extern short wnCloseFlag;
static int CloseWindow(lua_State *L)
{
windowTypeWN = -1;
wnCloseFlag = 1;
return 1;
}
static int CloseFlg(lua_State *L)
{
wnCloseFlag = 0;
return 1;
}
static int DelWindow(lua_State *L)
{
if( CheckMenuFlag()
|| ((joy_trg[ 0 ] & JOY_ESC) && GetImeString() == NULL)
|| actBtn == 1
|| menuBtn == 1
|| disconnectServerFlag == TRUE
|| wnCloseFlag == 1
|| cloasewindows == 1)
{
wnCloseFlag = 0;
cloasewindows = 0;
lua_pushinteger(L, 1);
}else{
lua_pushinteger(L, 0);
}
return 1;
}
void initStrBuffer( STR_BUFFER *, int, int, int, int, int );
static int SaInitStrBuffer(lua_State *L)
{
const int x = luaL_checkint(L, 1);
const int y = luaL_checkint(L, 2);
const int len = luaL_checkint(L, 3);
const int color = luaL_checkint(L, 4);
const int prio = luaL_checkint(L, 5);
//初始化输入信息
windows.input.buffer[0] = '\0';
windows.input.cnt = 0;
windows.input.cursor=0;
initStrBuffer( &windows.input, x, y, len, color, prio );
return 1;
}
static int SaInitNewStrBuffer(lua_State *L)
{
size_t l;
const int x = luaL_checkint(L, 1);
const int y = luaL_checkint(L, 2);
const int len = luaL_checkint(L, 3);
const int color = luaL_checkint(L, 4);
const int prio = luaL_checkint(L, 5);
const char *str = luaL_checklstring(L, 6, &l);
//初始化输入信息
int slen = strlen((char *)str);
if(slen > 0){
strcpy(windows.input.buffer, str);
windows.input.cnt = slen;
windows.input.cursor=slen;
}else{
windows.input.buffer[0] = '\0';
windows.input.cnt = 0;
windows.input.cursor=0;
}
initStrBuffer( &windows.input, x, y, len, color, prio );
return 1;
}
static int SaWinGetKeyInputFocus(lua_State *L)
{
GetKeyInputFocus( &windows.input );
return 1;
}
static int SaStockFontBuffer2(lua_State *L)
{
StockFontBuffer2(&windows.input);
return 1;
}
static int SaSetInputMsgNum(lua_State *L)
{
for(int i = 0; i < windows.input.cnt;i++)
{
if (windows.input.buffer[i] < '0' || windows.input.buffer[i] > '9')
{
if(i == 0){
windows.input.buffer[i] = '1';
}else{
windows.input.buffer[i] = '0';
}
}
}
return 1;
}
static int SaGetInputMsg(lua_State *L)
{
lua_pushstring(L, windows.input.buffer);
return 1;
}
extern void ShowBottomLineString(int iColor,LPSTR lpstr);
static int SaShowBottomLineString(lua_State *L)
{
size_t l;
const int color = luaL_checkint(L, 1);
const char *data = luaL_checklstring(L, 2, &l);
ShowBottomLineString(color,(char *)data);
return 1;
}
static const luaL_Reg winlib[] = {
{"InitWindow", InitWindow},
{"getMouseLeftCrick", getMouseLeftCrick},
{"getIndexWN", getIndexWN},
{"getIdWN", getIdWN},
{"CloseWindow", CloseWindow},
{"DelWindow", DelWindow},
{"CloseFlg", CloseFlg},
{"getButtonTypeWN", getButtonTypeWN},
{"getHitFontNo", getHitFontNo},
{"getHitDispNo", getHitDispNo},
{"InitStrBuffer", SaInitStrBuffer},
{"InitNewStrBuffer", SaInitNewStrBuffer},
{"GetKeyInputFocus", SaWinGetKeyInputFocus},
{"getMessageData", getMessageData},
{"StockFontBuffer2", SaStockFontBuffer2},
{"GetInputMsg", SaGetInputMsg},
{"SetInputMsgNum", SaSetInputMsgNum},
{"print", NewPrint},
{"ShowBottomLineString", SaShowBottomLineString},
{NULL, NULL}
};
LUALIB_API int luaopen_Win (lua_State *L) {
luaL_register(L, "win", winlib);
return 1;
}
#endif