Files
player/Project/Src/MyWin/MyWinCore/mywin_timer.c

65 lines
1.7 KiB
C
Raw Normal View History

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
}