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来重构一下该代码。

  • 相关阅读:
    理解Fragment生命周期
    嵌入式操作系统内存管理有哪几种,各有何特性
    laravel的auth用户认证的例子
    laravel验证器例子
    laravel加载js和css等资源
    laravel的blade模板的布局嵌套
    laravel的phpstorm插件laravel-ide-helper
    laravel开启调试模式
    laravel的中间件demo
    laravel路由定义
  • 原文地址:https://www.cnblogs.com/wugang/p/14232326.html
Copyright © 2011-2022 走看看