Example #1
0
    private GameEntityMsg getGameEntityMsg()
    {
        GameEntityMsg result = null;

        if (gameEntityMsgPool.Count == 0)
        {
            result = new GameEntityMsg();
            gameEntityMsgPool.Add(result);
            return(result);
        }

        List <GameEntityMsg> .Enumerator tor = gameEntityMsgPool.GetEnumerator();
        while (tor.MoveNext())
        {
            if (tor.Current.DispatchTime == 0)
            {
                result = tor.Current;
                break;
            }
        }

        if (result == null)
        {
            result = new GameEntityMsg();
            gameEntityMsgPool.Add(result);
        }
        gameEntityMsgPool.Sort(CompareByDispatchTime);

        return(result);
    }
Example #2
0
    public void SendMessage(float delay, int senderID, int receiverID, int msgID, params object[] ExtraInfo)
    {
        BaseGameEntity receiver = getRegisteredEntityByID(receiverID);

        GameEntityMsg msg = getGameEntityMsg();  //GameEntityMsg msg = new GameEntityMsg();

        if (delay <= 0.0f)
        {
            receiver.HandleMessage(msg);
        }
        else
        {
            float CurrentTime = Time.time;
            CurrentTime     += delay;
            msg.DispatchTime = CurrentTime;
        }

        msg.Set(delay, senderID, receiverID, msgID, ExtraInfo);
    }
    public override void HandleMessage(object gameEntityMsg)
    {
        base.HandleMessage(gameEntityMsg);


        GameEntityMsg msg = gameEntityMsg as GameEntityMsg;

        switch ((GameEntityMsgType)msg.MsgID)
        {
        case GameEntityMsgType.EntityEx:
        {
            Debug.Log("扩展消息:" + (int)msg.ExtraInfo[0]);
        }
        break;

        default:
            Debug.Log("默认消息 //这边可以用来管理对象,比如用状态机来管理对象");
            break;
        }
    }
Example #4
0
    public bool Equals(GameEntityMsg obj)
    {
        bool result = false;

        if (obj != null)
        {
            float diff = DispatchTime - obj.DispatchTime;
            if (diff < SmallestDelay)
            {
                if (m_Sender == obj.senderID)
                {
                    if (m_Receiver == obj.m_Receiver)
                    {
                        if (MsgID == obj.MsgID)
                        {
                            result = true;
                        }
                    }
                }
            }
        }

        return(result);
    }