stoneage8.5/石器时代8.5客户端最新源代码/石器源码/mylua/win.cpp
2020-06-22 17:49:02 +08:00

237 lines
5.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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);
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
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);
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
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