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

  • 相关阅读:
    Shell高级编程学习笔记(基础篇)
    基于Python的机器学习实战:Apriori
    基于Python的机器学习实战:AadBoost
    Theano教程:Python的内存管理
    基于theano的降噪自动编码器(Denoising Autoencoders--DA)
    基于theano的深度卷积神经网络
    推荐系统之矩阵分解及C++实现
    推荐系统之协同过滤的原理及C++实现
    一步一步详解ID3和C4.5的C++实现
    Principal components analysis(PCA):主元分析
  • 原文地址:https://www.cnblogs.com/wugang/p/14232326.html
Copyright © 2011-2022 走看看