原则: | 基于事件 | 有选择同步 | ||||||||||||||||||||||||||||||
Client | Channel | Server | ||||||||||||||||||||||||||||||
UI | Model | Player | Player | Model | ||||||||||||||||||||||||||||
OnXxx | 键盘、鼠标事件 | |||||||||||||||||||||||||||||||
CommandXxxx | 发送用户指令 | |||||||||||||||||||||||||||||||
event Commnad | ||||||||||||||||||||||||||||||||
+=CommandHanler | 截获用户指令并转送 | |||||||||||||||||||||||||||||||
CommandXxx | 在服务器上执行相关指令 | |||||||||||||||||||||||||||||||
Prop=xxx | 计算后某些属性改变 | |||||||||||||||||||||||||||||||
OnSync | 决定事件是否需要同步 | |||||||||||||||||||||||||||||||
event Sync | ||||||||||||||||||||||||||||||||
+=SyncHandler | 截获属性变更指令 | |||||||||||||||||||||||||||||||
OnSync | 在客户端同步 | |||||||||||||||||||||||||||||||
Prop=xxx | 属性发生变化 | |||||||||||||||||||||||||||||||
+=PropChanged | 反应到UI上 | |||||||||||||||||||||||||||||||
TODO: | 排队缓存发送 | |||||||||||||||||||||||||||||||
上图对折后,去掉Channel监听就是单用户版 |