Skip to content

Commit 8e43b3d

Browse files
committed
代码重构
1 parent 75d942c commit 8e43b3d

19 files changed

+792
-62
lines changed

StateMachineLearn/Program.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
using StateMachineLearn;
44

5-
var miner = new Miner(new InitState(), new InitState());
5+
var miner = new Miner(new InitState(), new InitState(), EntityName.EntityMinerBob);
66

7-
var wife = new Wife(new WifeInitState(), new WifeInitState())
7+
var wife = new Wife(new WifeInitState(), new WifeInitState(), EntityName.EntityElsa)
88
{
99
FSM =
1010
{
@@ -23,10 +23,14 @@
2323

2424

2525
int loopLimit = 100;
26+
var message = MessageDispatcher.Instance;
2627
while (loopLimit-- >0)
2728
{
29+
Thread.Sleep(100);
2830
gameEntities.ForEach(entity =>
2931
{
3032
entity.Update();
3133
});
34+
35+
message.DispatchDelayMessage();
3236
}

StateMachineLearn/WestWord/BaseGameEntity.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ public interface IBaseGameEntity
1111
/// 实例 Id
1212
/// </summary>
1313
public int InsId { get; }
14+
15+
/// <summary>
16+
/// 实例名字
17+
/// </summary>
18+
public EntityName Name { get; }
19+
20+
/// <summary>
21+
/// 处理信息
22+
/// </summary>
23+
/// <param name="msg"></param>
24+
public void HandleMessage(Telegram msg);
1425
}
1526

1627
/// <summary>
@@ -21,17 +32,31 @@ public class BaseGameEntity : IBaseGameEntity
2132
/// <summary>
2233
/// 防止外部绕过 Builder 创建对象
2334
/// </summary>
24-
protected BaseGameEntity()
35+
protected BaseGameEntity(EntityName name)
2536
{
2637
InsId = NextValidId;
2738
++NextValidId;
39+
Name = name;
2840
}
2941

3042
/// <summary>
3143
/// 当前对象的实例 Id
3244
/// </summary>
3345
public int InsId { get; private set; }
3446

47+
/// <summary>
48+
/// 实例名字
49+
/// </summary>
50+
public EntityName Name { get; private set; }
51+
52+
/// <summary>
53+
/// 处理信息
54+
/// </summary>
55+
/// <param name="msg"></param>
56+
public virtual void HandleMessage(Telegram msg)
57+
{
58+
}
59+
3560
/// <summary>
3661
/// 生成对象序列中,下一个对象的有效 Id
3762
/// 该 Id 自动在对象创建的时候自增 1

StateMachineLearn/WestWord/ConstDefine.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,12 @@ public enum LocationType
6565
/// <summary>
6666
/// 客厅
6767
/// </summary>
68-
LivingRoom
68+
LivingRoom,
69+
70+
/// <summary>
71+
/// 厨房
72+
/// </summary>
73+
Kitchen,
6974
}
7075
}
7176

@@ -102,4 +107,21 @@ public enum MinerStateType
102107
QuenchThirst
103108
}
104109
}
110+
111+
/// <summary>
112+
/// 消息类型
113+
/// </summary>
114+
public enum MessageType
115+
{
116+
/// <summary>
117+
/// 宝,我回来了
118+
/// </summary>
119+
HiHoneyImHome,
120+
121+
/// <summary>
122+
/// 炖肉好了,准备开恰⑧
123+
/// </summary>
124+
StewReady
125+
}
126+
105127
}

StateMachineLearn/WestWord/GameEntityManger.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Collections.Concurrent;
22
using System.Diagnostics;
3-
using System.Diagnostics.CodeAnalysis;
43

54
namespace StateMachineLearn;
65

@@ -33,6 +32,16 @@ public bool TryAddNewEntity(IBaseGameEntity entity)
3332
return GameEntities.TryGetValue(insId, out var entity) ? entity : null;
3433
}
3534

35+
/// <summary>
36+
/// 通过实例名字找实例
37+
/// </summary>
38+
/// <param name="entityName"></param>
39+
/// <returns></returns>
40+
public IBaseGameEntity? TryGetEntityByEntityName(EntityName entityName)
41+
{
42+
return GameEntities.Values.FirstOrDefault(entity => entity.Name == entityName);
43+
}
44+
3645
#region Singleton
3746

3847
/// <summary>

0 commit comments

Comments
 (0)