一个lua状态机,随着时间的流逝,执行不同的动作。
136 function test_fsm()
137
138
139 if not test_fsm_state then
140 return
141 end
142
143 if test_fsm_start_time == 0 then
144 test_fsm_start_time = get_cur_time()
145 test_last_check_time = get_cur_time()
146 end
147
148 if test_fsm_state == 0 then
149 local last_test_fsm_state = test_fsm_state
150 test_fsm_state = 1
151 print(string.format("fsm_state:%s->%s", last_test_fsm_state, test_fsm_state))
152 test_fsm_do_something(test_fsm_state);
153 end
154
155 test_cur_fsm_end_time = get_fsm_state_time(test_fsm_state) + test_fsm_start_time
156 if test_last_check_time < test_cur_fsm_end_time and get_cur_time() >= test_cur_fsm_end_time then
157
158 test_fsm_start_time = test_fsm_start_time + get_fsm_state_time(test_fsm_state)
159 local last_test_fsm_state = test_fsm_state
160 test_fsm_state = test_fsm_state + 1
161
162 local cur_state_time = get_fsm_state_time(test_fsm_state)
163 if not cur_state_time then
164 print(string.format("fsm_state:%s->%s", last_test_fsm_state, "end"))
165 test_fsm_state = nil
166 return
167 end
168
169 print(string.format("fsm_state:%s->%s", last_test_fsm_state, test_fsm_state))
171 test_fsm_do_something(test_fsm_state);
172 end
173
174 test_last_check_time = get_cur_time()
175 end