1个不稳定版本
0.1.0 | 2021年10月8日 |
---|
#11 in #优化
用于 navig18xx
1MB
18K SLoC
提供用户界面来管理18xx游戏地图并计算每个公司的最佳收入。
查看rusty_train
二进制文件,了解如何使用此存储库的示例。
概述
[用户界面]结构封装地图绘制和事件处理。它分为几个组件
- [资源]:当前的[地图]和可用的[游戏]。
- [画布]:地图绘制的表面。
- [状态]:当前用户界面状态(或“模式”),它定义了用户可用的操作以及地图的绘制方式。
- [键映射]:通过触发状态操作响应用户的键盘和鼠标输入。
- [控制器]:管理用户界面元素并收集用户输入(例如,选择要加载或保存的游戏文件)。
事件和事件处理程序
[用户界面]处理三种类型的事件
-
鼠标按钮事件,由[按钮按下]结构描述,并由UserInterface::handle_button_press处理。
-
键盘事件,由[按键按下]结构描述,并由UserInterface::handle_key_press处理。
-
“Ping”事件,由其他内容触发(例如,来自分离线程中运行的任务的消息)并由UserInterface::ping处理。可以使用Controller::ping_tx调用获得的[PingSender]发送Ping。
请注意,事件详细信息,如键标识符,由[按钮按下]和[按键按下]结构定义,这些结构使用来自GDK 3库的类型。
事件处理程序的响应
上述每个[用户界面]事件处理程序都返回一个[UiResponse]值,该值指示[用户界面]在处理事件后应采取的操作(如果有的话)。这些操作由UserInterface::respond执行。
依赖关系
~21MB
~471K SLoC