| 
									
										
										
										
											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
										 |  |  |  | } |