再战中原之菜单系统

      霸王大陆事实上也就是一个文字游戏,通过菜单操作各种指令。不过添加了一些简单的动画使得用户体验更加友好。所以霸王大陆的核心应该是由一套指令组成的文字游戏。
      菜单在程序开始的时候根据配置表生成视图,在不同的场合调用合适的菜单视图,因为这时已经不需要菜单的VO类对象,所以这里就不像城池、武将那样子设置数据表生成VO类,而是直接一个树形结构的xml配置文件。
配置格式如下

<root>
    <!--开始菜单-->
    <menu id="1">
        <txt show="单人游戏" cmd="11" dir="" col="" p_x="" p_y=""></txt>
        <txt show="读取进度" cmd="12" dir="" col="" p_x="" p_y=""></txt>        
    </menu>
    <!--选择城池功能-->
    <menu id="2">
        <img show="" cmd="" dir="" col="" p_x="" p_y="">
            <txt show="" cmd="" dir="" col="" p_x="" p_y=""></txt>
            <txt show="" cmd="" dir="" col="" p_x="" p_y=""></txt>
        </img>
        <txt show="" cmd="" dir="" col="" p_x="" p_y="">
            <txt show="" cmd="" dir="" col="" p_x="" p_y=""></txt>
            <txt show="" cmd="" dir="" col="" p_x="" p_y=""></txt>
        </txt>
    </menu>
</root>

menu标签是根菜单,按霸王大陆分为8个根菜单
 1、开始菜单
 2、难度选择菜单
 3、君主选择菜单
 4、城池功能菜单
 5、行军命令菜单
 6、阵型菜单
 7、单挑菜单
 8、战斗命令菜单(非树型指令菜单,特别处理)

以下还有一些比较特别的菜单,用作选择指令的参数
 1、选择是/否
 2、选择城池(主界面城池/撤退城池)
 3、选择金和米的数量
 4、选择武将(城中武将/撤退武将)
 5、选择武器(根据城池配置动态生成)
 6、计谋(根据武将的知识动态生成)
 7、战术(根据武将的知识动态生成)

前7个menu标签是根菜单,其子级是显示在游戏中的菜单,程序根据配置递归生成各个菜单后以父级的cmd为键保存到Dictionary中,切换菜单时通过cmd来获得其子级菜单。最外层树叶的cmd是操作指令,发给Controller处理。程序中还应该有一个操作队列,保存上一级菜单的cmd,以便返回。

txt和img标签是同级的,txt表示用纯文本显示菜单,img表示图片菜单,show指示显示文本或图片路径,cmd在树枝上是表示其子菜单在Dictionary中的键,在叶子上表示将要执行的命令,dir表示光标指示的方向,col表示排列多少列,p_x表示水平间隔,p_y垂直间隔。

“是/否”是以菜单外观出现的确认弹窗,让用户选择是否继续执行命令。
点击时通过判断dic[id]==undefine来确定是展开下一级菜单还是执行命令。

原文地址:https://www.cnblogs.com/wldragon/p/3407460.html