SRPG游戏开发(五十二)第十一章 地图动作与地图事件 - 一 初始化地图动作(Initialize Map Action)

本文详细介绍了在SRPG游戏开发中初始化地图动作的过程,包括地图战斗命令执行器的ParseArgs和Run方法,地图配置文件的创建,地图状态的设定,以及初始化函数的实现,涉及到地图场景、剧情、光标、事件和状态管理等方面。
摘要由CSDN通过智能技术生成

返回总目录

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

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

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



一 初始化地图动作(Initialize Map Action)

在进行地图动作的编写之前,我们先要进到地图才可以。

所以在这里,我们先建立一个空的类,然后编写进入地图的命令。

创建地图动作类:

namespace DR.Book.SRPG_Dev.ScriptManagement
{
   
    public class MapAction : GameAction
    {
   
        public MapAction() : base()
        {
   

        }

        public MapAction(IGameAction gameAction) : base(gameAction)
        {
   

        }

        /// <summary>
        /// 读取地图
        /// </summary>
        /// <param name="scriptName"></param>
        /// <returns></returns>
        public bool Load(string scriptName)
        {
   
            // TODO 读取地图相关
            return true;
        }

        // TODO 其它
    }
}

1 地图战斗命令执行器(battle Command Executor)

进入地图是剧本中的特殊命令,它将指定剧情进入到哪个地图进行战斗,命令将使用关键字battle

我们需要解析的命令如下:

battle Stage0Scene stage0script;

我们需要的参数为:

  • 地图场景(Stage0Scene),它指定了战斗地图所在场景(Scene);

  • 地图剧情(stage0script),它指定了在地图参数(地图如何初始化)。

这些等号符号和二元运算符号也是可以自定义的。

创建执行器类与参数类:

namespace DR.Book.SRPG_Dev.ScriptManagement
{
   
    public class BattleExecutor : ScenarioContentExecutor<BattleExecutor.BattleArgs>
    {
   
        public struct BattleArgs
        {
   
            public string sceneName;
            public string scriptName;
        }

        public override string code
        {
   
            get {
    return "battle"; }
        }

        // TODO ParseArgs and Run

    }
}
1.1 ParseArgs
        public override bool ParseArgs(IScenarioContent content, ref BattleArgs args, out string error)
        {
   
            // battle Stage0Scene stage0script;
            if (content.length != 3)
            {
   
                error = GetLengthErrorString(3);
                return false;
            }

            args.sceneName = content[1];
            args.scriptName = content[2];

            error = null;
            return true;
        }
1.2 Run

在战斗结束时,需要一个标识来标识战斗结果,这里我们采用一个变量(规定0为战斗失败,1为战斗胜利);我们还要存储地图的场景与剧本,这些存储我们依然放在ScenarioBlackboard中。

        private static string s_BattleMapScene;
        private static string s_MapScript;

        public static string battleMapScene
        {
   
            get {
    return s_BattleMapScene; }
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值