好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 a13799218151 于 2020-11-8 17:09 编辑
菜单预览
菜单控制
通过 ↑ ↓ 控制 菜单上下移动
通过 ← → 控制 菜单展开,缩进或者是功能的开和关。
修改功能
项目的结构
项目结构
项目中有一个config.json文件夹,程序每一次启动的时候都会读取和解析这个文件夹,并根据里面的数据解析成可视的菜单结构。
config.json 数据结构
{
"title": "IMGUI分级菜单DEMO",
"items": [
{
"title": "透视设置",
"resultCode": 100,
"secondItems": [
{
"title": "方框透视",
"resultCode": 101,
"status": []
},
{
"title": "方框类型",
"resultCode": 102,
"status": [
"2D",
"3D"
]
},
{
"title": "显示血量",
"resultCode": 103,
"status": []
}
]
},
{
"title": "自瞄设置",
"resultCode": 200,
"secondItems": [
{
"title": "自动瞄准",
"resultCode": 201,
"status": []
},
{
"title": "自瞄灵敏",
"resultCode": 202,
"status": [
"0.05",
"0.10",
"0.15",
"0.20",
"0.25",
"0.30",
"0.35",
"0.40",
"0.45",
"0.50",
"0.55",
"0.60",
"0.65",
"0.70",
"0.75",
"0.80",
"0.85",
"0.90",
"0.95",
"1.00"
]
},
{
"title": "自瞄范围",
"resultCode": 205,
"status": [
"60",
"120",
"180",
"240",
"300",
"360"
]
},
{
"title": "自瞄位置",
"resultCode": 206,
"status": [
"头部",
"胸部",
"裆部"
]
}
]
},
{
"title": "其他设置",
"resultCode": 0,
"secondItems": [
{
"title": "安全退出",
"resultCode": 1,
"status": []
}
]
}
]
}
```’
items里面的节点是一级菜单,
secondItems里面的节点是二级菜单。
一级菜单的相关字段
字段 |
描述 |
title |
功能名称 |
resultCode |
回调码 |
secondItems |
二级菜单 |
二级菜单的相关字段
字段 |
描述 |
title |
功能名称 |
resultCode |
回调码 |
status |
功能状态 |
回调事件
功能的开和关必然会产生一个回调事件.我们前面通过设置resultCode来辨别是哪个功能产生的事件。
下面我们来设置回调事件。
MenuManger.cpp里面有一个menuStatusChangedListener回调函数,我们在里面设置回调事件。
//菜单回调函数
void menuStatusChangedListener(int resultCode, bool isOpen, std::string title, std::string statusTitle) {
switch (resultCode) {
case 0:
if (isOpen)
{
std::cout << "透视设置 打开" << std::endl;
}
else {
std::cout << "透视设置 关闭" << std::endl;
}
break;
case 9:
if (isOpen)
{
std::cout << "自动瞄准 打开" << std::endl;
}
else {
std::cout << "自动瞄准 关闭" << std::endl;
}
break;
break;
case 12:
if (isOpen)
{
std::cout << "自动热键 打开 按键:" << statusTitle << std::endl;
}
else {
std::cout << "自动热键 关闭" << std::endl;
}
break;
case 13:
if (isOpen)
{
std::cout << "自瞄范围 打开 范围:" << statusTitle << std::endl;
}
else {
std::cout << "自瞄范围 关闭" << std::endl;
}
break;
case 15:
if (isOpen)
{
std::cout << "辅助准心 打开" << std::endl;
}
else {
std::cout << "辅助准心 关闭" << std::endl;
}
break;
break;
}
}
运行环境
运行环境就是imgui demo运行的环境。
本机环境如下:Direct X && VS Studio 2019
下载链接
因为项目有20多兆 上传不了我放在百度网盘里了。
下载地址.txt
(141 Bytes, 下载次数: 96)
|
免费评分
-
查看全部评分
|