zoukankan      html  css  js  c++  java
  • 任务框架

    任务模块框架

    #region Class Information
    /*-----------------------------------------
    // File:				ICmd.cs
    // author:				wugang
    // description:			命令策略
    // Date:				2015-9-12
    // ----------------------------------------*/
    # endregion
    using UnityEngine;
    using System.Collections;
    
    /// <summary>
    /// 命令接口 所有策略类基础此接口
    /// </summary>
    public interface ICmd
    {
        //回调
        event Callback callback;
        //初始化、设置参数
        void SetParams(params object[] objs);
        void Update();
        void DoOnce();
        void Stop();
    }
    /// <summary>
    /// 与npc对话策略实现 继承命令接口
    /// </summary>
    public class ChatNpcCmd : ICmd
    {
        public event Callback callback;
    
        int m_mapId;
        int m_npcId;
    
        Vector3 npcPosition;
    
        public void SetParams(params object[] objs)
        {
            m_mapId = (int)objs[0];
            m_npcId = (int)objs[1];
        }
    
        public void Update()
        {
            //执行具体逻辑
            //DOTO:
    
            
            //执行stop
            if (true) { Stop(); }
    
        }
    
        public void DoOnce()
        {
            //执行具体逻辑
        }
    
        public void Stop()
        {
            //执行回调
            if (callback != null)
                callback();
        }
    }
    #region Class Information
    /*-----------------------------------------
    // File:				CmdContext.cs
    // author:				wugang
    // description:			命令中间层
    // Date:				2015-9-12
    // ----------------------------------------*/
    #endregion
    using UnityEngine;
    using System.Collections;
    
    public class CmdContext
    {
        ICmd m_Cmd;
        public CmdContext(ICmd cmd)
        {
            this.m_Cmd = cmd;
        }
    
        public void DoOnce()
        {
            m_Cmd.DoOnce();
        }
    
        public void Update()
        {
            m_Cmd.Update();
        }
    }
    #region Class Information
    /*-----------------------------------------
    // File:				CmdManager.cs
    // author:				wugang
    // description:			命令管理器
    // Date:				2015-9-12
    // ----------------------------------------*/
    # endregion
    using UnityEngine;
    using System.Collections;
    public class CmdManager : MonoBehaviour
    {
        bool m_Running = false;
        CmdContext m_CmdContext;
        public void StartCmd(TaskDataType type, params object[] objs)
        {
            switch (type)
            {
                case TaskDataType.ChatNpc:
                    m_CmdContext = new CmdContext(new ChatNpcCmd());
                    break;
                case TaskDataType.KillMonster:
                    break;
                case TaskDataType.GuildPortal:
                    break;
            }
            m_Running = true;
        }
        public void Stop()
        {
            m_Running = false;
            m_CmdContext = null;
        }
    
        void Update()
        {
            if (!m_Running) return;
            if (m_CmdContext == null)
            {
    #if UNITY_EDITOR
                Debug.LogError("m_CmdContext is null!!!");
    #endif
                return;
            }
            m_CmdContext.Update();
        }
    }


    ------------------2017-2-17

    最近接触IOC比较多,有时间的话可以通过IOC来重构一下该代码。

  • 相关阅读:
    My97DatePicker使用说明文档
    内存溢出之Tomcat内存配置
    myeclipse控制台不显示tomcat信息
    修改 MyEclipse 编辑区域背景颜色
    window.open() 弹出窗体居中
    javascript控制页面控件隐藏显示的两种方法
    (转)MyEclipse7.5.0版注册码破解及激活操作
    [置顶] Android代码读取 android 设备的电池信息
    [置顶] Android代码获得我们手机的cpu序列号
    [置顶] Android高手进阶教程Android常用名令集锦(图文并茂)!
  • 原文地址:https://www.cnblogs.com/wugang/p/14232326.html
Copyright © 2011-2022 走看看