@@ -227,21 +227,6 @@ public override void Enter(Wife owner)
227227 return ;
228228 }
229229
230- // 1. 将妻子放置到洗手间
231- if ( owner . CurrentLocation != Location . BathRoom )
232- {
233-
234- owner . CurrentLocation = Location . BathRoom ;
235- }
236-
237- // 2. 1/2 的概率来进入煮肉状态
238- var random = new Random ( ) ;
239- int result = random . Next ( 0 , 10 ) ;
240- if ( result % 2 == 0 )
241- {
242- owner . FSM . ChangState ( CookStew . Instance ) ;
243- }
244-
245230 WriteExt . WriteBgWhiteAndFgYellow ( $ "wifeId:{ entity . InsId } , 全局状态") ;
246231 }
247232
@@ -251,27 +236,6 @@ public override void Enter(Wife owner)
251236 /// <param name="owner"></param>
252237 public override void Execute ( Wife owner )
253238 {
254- // 2. 1/2 的概率来进入煮肉状态
255- var random = new Random ( ) ;
256- int result = random . Next ( 0 , 10 ) ;
257- if ( result % 2 == 0 )
258- {
259- owner . FSM . ChangState ( CookStew . Instance ) ;
260- }
261-
262- if ( ! owner . IsNeedToGoBathroom ( ) )
263- {
264- return ;
265- }
266-
267- // 1. 情况妻子的疲劳度
268- owner . CurrentTirednessThreshold = 0 ;
269-
270- // 2. 回到进入全局状态前的状态
271- owner . FSM . RevertToPreviousState ( ) ;
272-
273- // 3. 打日志
274- WriteExt . WriteBgWhiteAndFgBlue ( $ "WifeId:{ owner . InsId } , 全局状态解决完毕,切换状态到进入全局状态前的状态") ;
275239 }
276240
277241 /// <summary>
@@ -308,6 +272,33 @@ public static WifeGlobalState Instance
308272 }
309273 }
310274
275+ #region Overrides of State<Wife>
276+
277+ /// <summary>
278+ /// 处理消息
279+ /// </summary>
280+ /// <param name="message"></param>
281+ /// <param name="owner"></param>
282+ /// <returns></returns>
283+ public override bool OnMessage ( in Telegram message , Wife owner )
284+ {
285+ // 1. 不是矿工回家的消息
286+ if ( message . MessageType != ConstDefine . MessageType . HiHoneyImHome )
287+ {
288+ return false ;
289+ }
290+
291+ WriteExt . WriteBgWhiteAndFgYellow ( $ "WifeId:{ owner . InsId } , 收到消息,开始进入全局状态") ;
292+
293+ // 2. 更改状态到烹饪
294+ owner . FSM . ChangState ( CookStew . Instance ) ;
295+
296+ return true ;
297+
298+ }
299+
300+ #endregion
301+
311302 #endregion
312303}
313304
@@ -329,10 +320,20 @@ private CookStew()
329320 /// <param name="owner"></param>
330321 public override void Enter ( Wife owner )
331322 {
323+ // 1. 检查当前状态
332324 if ( owner . CurrentLocation != Location . Kitchen )
333325 {
334326 owner . CurrentLocation = Location . Kitchen ;
335327 }
328+
329+ // 2. 检查是否处于烹饪状态
330+ if ( owner . IsInCooking )
331+ {
332+ return ;
333+ }
334+
335+ // 3. 设置当前处于烹饪状态
336+ owner . IsInCooking = true ;
336337
337338 WriteExt . WriteBgWhiteAndFgYellow ( $ "wifeId:{ owner . InsId } , 进入煮肉的状态") ;
338339 }
@@ -343,9 +344,9 @@ public override void Enter(Wife owner)
343344 /// <param name="owner"></param>
344345 public override void Execute ( Wife owner )
345346 {
346- // 1. 发送煮肉完成的消息给矿工
347+ // 1. 开始烹饪,并在烹饪好的时候提醒自己
347348 MessageDispatcher . Instance . DispatchMessage ( owner . Name , EntityName . EntityElsa ,
348- ConstDefine . MessageType . StewReady , 0.0001 , null ) ;
349+ ConstDefine . MessageType . StewReady , 0.01 , null ) ;
349350
350351 WriteExt . WriteBgWhiteAndFgBlue ( $ "wifeId:{ owner . InsId } , 正在煮肉") ;
351352 }
@@ -365,16 +366,18 @@ public override void Exit(Wife owner)
365366 /// <param name="message"></param>
366367 /// <param name="owner"></param>
367368 /// <returns></returns>
368- public override bool OnMessage ( Telegram message , Miner owner )
369+ public override bool OnMessage ( in Telegram message , Wife owner )
369370 {
370371 switch ( message . MessageType )
371372 {
372373 // 1. 煮肉完成通知矿工
373374 case ConstDefine . MessageType . StewReady :
374375 {
375376 WriteExt . WriteBgWhiteAndFgRed ( $ "wifeId:{ owner . InsId } , 收到煮肉完成的消息") ;
376- MessageDispatcher . Instance . DispatchMessage ( owner . Name , EntityName . EntityMinerBob ,
377+ MessageDispatcher . Instance . DispatchMessage ( EntityName . EntityMinerBob , owner . Name ,
377378 ConstDefine . MessageType . StewReady , 0 , null ) ;
379+ owner . IsInCooking = false ;
380+ owner . FSM . ChangState ( DoHouseWork . Instance ) ;
378381 return true ;
379382 }
380383 case ConstDefine . MessageType . HiHoneyImHome :
0 commit comments