修改时间容器前

This commit is contained in:
2022-06-20 03:10:33 +08:00
parent ff48fc1d25
commit e17ffc3965
9 changed files with 116 additions and 73 deletions

View File

@@ -868,13 +868,16 @@ int squirrel::New_STL(uint32_t v)
//时间 STL
#if defined TIME_STL
extern std::map<wchar_t*, TimeSTLStruct>Time_STL;
//时间容器线程
void TimeSTL(LPVOID lpParam)
{
TimeSTLStruct *pack = (TimeSTLStruct*)lpParam;//得到传递的包
std::wcout << "线程启动:" << pack->Name << std::endl;
Time_STL[pack->Name].Static_Time = (int)GetTickCount64();//设置时间容器的基准时间
while (true)//线程循环
{
Sleep(10);
int N_Time = (int)GetTickCount64() - Time_STL[pack->Name].Static_Time;//得到现在的时间
if (N_Time < Time_STL[pack->Name].Max_Time)//如果还没到 设定新的now时间
{
@@ -905,7 +908,7 @@ int squirrel::Timer_STL(uint32_t v)
switch (Type)
{
case 0: {//设置时间容器
case 0: //设置时间容器
if (Time_STL.count(Name) != 0)//如果这个标识容器存在 就返回 否则创建
{
SQPushBool(v, false);
@@ -918,24 +921,25 @@ int squirrel::Timer_STL(uint32_t v)
pack.Static_Time = 0;//设置 基础时间(用于运算)
pack.Thand = NULL;//设置句柄为空
Time_STL[Name] = pack;//设置包给标识时间容器
break; }
case 1: {//启动时间容器
break;
case 1: //启动时间容器
if (Time_STL[Name].Thand == NULL)//只有句柄为空的时候new线程
{
DWORD threadID;//线程ID
Time_STL[Name].Now_Time = 0;//设置当前容器时间
Time_STL[Name].Thand = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TimeSTL, &Time_STL[Name], 0, &threadID);//创建一个新线程 开始计算时间 并把线程赋予给容器
}
break; }
break;
case 2://获取时间容器
SQPushInt(v, Time_STL[Name].Now_Time);//返回当前容器时间
return 1;
break;
case 3://重置时间容器
SuspendThread(Time_STL[Name].Thand);//挂起线程
//SuspendThread(Time_STL[Name].Thand);//挂起线程
CloseHandle(Time_STL[Name].Thand);//销毁线程
Time_STL[Name].Static_Time = 0;//基准时间设置为0
Time_STL[Name].Thand = NULL;
ResumeThread(Time_STL[Name].Thand);//启动线程
//ResumeThread(Time_STL[Name].Thand);//启动线程
break;
case 4://暂停时间容器
SuspendThread(Time_STL[Name].Thand);//挂起线程
@@ -1284,6 +1288,34 @@ int squirrel::Jsoner_STL(uint32_t v)
Json_STL[Name] = jsonBuffer.GetString();
SQPushBool(v, true);
}
else if (ParameterNum == 5)
{
//获取容器名字
SQGetString(v, 2, &WName);
char* CName = DNFTOOL::wchar_tTochar(WName);
std::string Name = CName;
//获取Str 的内容
wchar_t* str;
SQGetString(v, 3, &str);
//转化为可用内容
char* Jso = DNFTOOL::wchar_tTochar(str);
//获取类型
int Type;
SQGetInt(v, 4, &Type);
switch (Type)
{
case 0:
Json_STL[Name] = Jso;
break;
case 1:
if(Json_STL[Name].empty())Json_STL[Name] = Jso;
break;
default:
break;
}
}
else
{
SQPushBool(v, false);