2025-06-27 00:32:57 +08:00
|
|
|
|
#include "mywin_inc.h"
|
|
|
|
|
|
2025-07-06 18:46:13 +08:00
|
|
|
|
// <20><><EFBFBD>㶨ʱ<E3B6A8><CAB1>
|
|
|
|
|
int WIN_TimerReload(int timerId) {
|
|
|
|
|
WIN_GetWinStruct()->softTimer[timerId - 1].time_ms = 0;
|
|
|
|
|
return 0;
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-07-06 18:46:13 +08:00
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int WIN_SetTimerCycle(int timerId, int cycle) {
|
|
|
|
|
WIN_GetWinStruct()->softTimer[timerId - 1].cycle_ms = cycle;
|
|
|
|
|
return 0;
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-07-06 18:46:13 +08:00
|
|
|
|
// <20><><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><CAB1>,<2C>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>id<69><64>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>0
|
|
|
|
|
int WIN_CreatTimer(WIN_WindowStruct *win, u32 ms) {
|
|
|
|
|
for (int i = 0; i < WIN_SOFTTIMER_MAXNUM; i++) {
|
|
|
|
|
if (WIN_GetWinStruct()->softTimer[i].win == 0) {
|
|
|
|
|
WIN_GetWinStruct()->softTimer[i].win = win;
|
|
|
|
|
WIN_GetWinStruct()->softTimer[i].cycle_ms = ms;
|
|
|
|
|
WIN_GetWinStruct()->softTimer[i].time_ms = 0;
|
|
|
|
|
return i + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-07-06 18:46:13 +08:00
|
|
|
|
// ɾ<><C9BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>-1<><31><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>0
|
|
|
|
|
int WIN_DeleteTimer(int id) {
|
|
|
|
|
if (id >= WIN_SOFTTIMER_MAXNUM)
|
|
|
|
|
return -1;
|
|
|
|
|
if (id <= 0)
|
|
|
|
|
return -1;
|
|
|
|
|
WIN_GetWinStruct()->softTimer[id - 1].win = 0;
|
|
|
|
|
return 0;
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-07-06 18:46:13 +08:00
|
|
|
|
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
int WIN_WinDeleteTimer(WIN_WindowStruct *win) {
|
|
|
|
|
for (int i = 0; i < WIN_SOFTTIMER_MAXNUM; i++) {
|
|
|
|
|
if (WIN_GetWinStruct()->softTimer[i].win == win) {
|
|
|
|
|
WIN_GetWinStruct()->softTimer[i].win = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-07-06 18:46:13 +08:00
|
|
|
|
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void WIN_TimerWork(void) {
|
|
|
|
|
WIN_MsgStruct msg = {0};
|
|
|
|
|
u32 timePast = WIN_GetTimePast();
|
|
|
|
|
for (int i = 0; i < WIN_SOFTTIMER_MAXNUM; i++) {
|
|
|
|
|
if (WIN_GetWinStruct()->softTimer[i].win) {
|
|
|
|
|
WIN_GetWinStruct()->softTimer[i].time_ms += timePast;
|
|
|
|
|
if (WIN_GetWinStruct()->softTimer[i].time_ms >=
|
|
|
|
|
WIN_GetWinStruct()->softTimer[i].cycle_ms) {
|
|
|
|
|
WIN_GetWinStruct()->softTimer[i].time_ms = 0;
|
|
|
|
|
msg.msg = WIN_MSG_TIMER;
|
|
|
|
|
msg.data.v = i + 1; // <20><><EFBFBD>䶨ʱ<E4B6A8><CAB1>id
|
|
|
|
|
WIN_SendMsg(0, WIN_GetWinStruct()->softTimer[i].win, &msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|