SRPG游戏开发(五十三)第十一章 地图动作与地图事件 - 二 地图剧情(Map Plot)

返回总目录

第十一章 地图动作与地图事件(Map Action and Map Event)

我们已经有了剧本,而且可以运行剧本,但我们还缺少对地图的操作控制。

我们这一章来完成地图上的操作,地图的操作将全部由MapAction控制。



二 地图剧情(Map Plot)

地图中的剧情和普通的剧情在操作上区别不大。

区别:

  • 命令执行器不同;

  • 返回上一层不同。


1 返回上一个行动(Back Game Action)

GameDirector中,我们缺少了返回上一个动作的方法。

  • 它在剧本中是返回上一个剧本动作;

  • 而在触发地图剧情结束后,我们同样需要返回上一层的MapAction,且我们的MapScenarioAction并不是由GameDirector控制,而是由MapAction控制的。

基于以上,先在GameDirector中创建返回上一层的方法:

        /// <summary>
        /// 返回上一个action
        /// </summary>
        public void BackGameAction()
        {
   
            IGameAction old = currentAction;
            currentAction = currentAction.previous;
            old.Dispose();

            if (currentAction == null)
            {
   
                // TODO 返回游戏的开始场景
            }
        }

ActionStatus中,我们添加两个状态:

namespace DR.Book.SRPG_Dev.ScriptManagement
{
   
    public enum ActionStatus : int
    {
   
        // 省略其它

        /// <summary>
        /// 返回上一个Action
        /// </summary>
        BackAction,

        /// <summary>
        /// 在地图中等待剧情
        /// </summary>
        WaitScenarioDone
    }
}

MapAction不同于ScenarioAction。实际上在MapAction中,ActionStatus只使用了WaitScenarioDoneWaitInputError。而其它方面全部由MapStatus控制。

ScenarioAction中,我们为新的状态添加控制,让它可以返回上一层:

        /// <summary>
        /// 每帧运行
        /// </summary>
        /// <returns></returns>
        public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值