コード例 #1
0
ファイル: AllyManager.cs プロジェクト: qiuhoude/mu_server
        public void processEvent(EventObjectEx eventObject)
        {
            switch (eventObject.EventType)
            {
            case 10026:
            {
                KFNotifyAllyGameEvent e = eventObject as KFNotifyAllyGameEvent;
                int             unionID = e.UnionID;
                List <AllyData> list    = AllyClient.getInstance().HAllyDataList(unionID, EAllyDataType.Ally);
                int             index   = 0;
                GameClient      client;
                while ((client = GameManager.ClientMgr.GetNextClient(ref index, false)) != null)
                {
                    lock (AllyClient.getInstance()._Mutex)
                    {
                        if (client.ClientData.Faction == unionID)
                        {
                            client.ClientData.AllyList = list;
                        }
                    }
                }
                break;
            }

            case 10027:
            {
                KFNotifyAllyLogGameEvent e2 = eventObject as KFNotifyAllyLogGameEvent;
                if (null != e2)
                {
                    List <AllyLogData> list2 = (List <AllyLogData>)e2.LogList;
                    if (list2 != null && list2.Count > 0)
                    {
                        foreach (AllyLogData log in list2)
                        {
                            this.DBAllyLogAdd(log, 0);
                        }
                    }
                    eventObject.Handled = true;
                }
                break;
            }

            case 10028:
            {
                KFNotifyAllyTipGameEvent e3 = eventObject as KFNotifyAllyTipGameEvent;
                if (null != e3)
                {
                    int unionID = e3.UnionID;
                    int tipID   = e3.TipID;
                    BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, GameManager.ServerId);
                    if (unionData != null && this.IsAllyOpen(unionData.QiLevel))
                    {
                        GameClient client = GameManager.ClientMgr.FindClient(unionData.BZRoleID);
                        if (client == null)
                        {
                            break;
                        }
                        lock (AllyClient.getInstance()._Mutex)
                        {
                            if (tipID == 14112)
                            {
                                int countAlly = AllyClient.getInstance().AllyCount(unionID);
                                if (countAlly > 0 && this.IsAllyMax(countAlly))
                                {
                                    break;
                                }
                            }
                            client._IconStateMgr.AddFlushIconState(14111, false);
                            client._IconStateMgr.AddFlushIconState((ushort)tipID, false);
                            client._IconStateMgr.SendIconStateToClient(client);
                            client._IconStateMgr.AddFlushIconState(14111, true);
                            client._IconStateMgr.AddFlushIconState((ushort)tipID, true);
                            client._IconStateMgr.SendIconStateToClient(client);
                            switch (tipID)
                            {
                            case 14112:
                                client.AllyTip[0] = 1;
                                break;

                            case 14113:
                                client.AllyTip[1] = 1;
                                break;
                            }
                        }
                    }
                    eventObject.Handled = true;
                }
                break;
            }

            case 10029:
            {
                int        index = 0;
                GameClient client;
                while ((client = GameManager.ClientMgr.GetNextClient(ref index, false)) != null)
                {
                    lock (AllyClient.getInstance()._Mutex)
                    {
                        client.ClientData.AllyList = null;
                        this.UnionAllyInit(client);
                        AllyClient.getInstance().HRankClear();
                        AllyClient.getInstance().HRankTopList(1);
                    }
                }
                break;
            }
            }
        }
コード例 #2
0
ファイル: AllyManager.cs プロジェクト: chenchungit/ky
        public void processEvent(EventObjectEx eventObject)
        {
            int eventType = eventObject.EventType;

            switch (eventType)
            {
            case (int)GlobalEventTypes.KFAllyStart:
            {
                int        index  = 0;
                GameClient client = null;
                while ((client = GameManager.ClientMgr.GetNextClient(ref index)) != null)
                {
                    lock (AllyClient.getInstance()._Mutex)
                    {
                        client.ClientData.AllyList = null;
                        UnionAllyInit(client);
                    }
                }
            }
            break;

            case (int)GlobalEventTypes.Ally:
            {
                KFNotifyAllyGameEvent e = eventObject as KFNotifyAllyGameEvent;
                int             unionID = (int)e.UnionID;
                List <AllyData> list    = AllyClient.getInstance().HAllyDataList(unionID, EAllyDataType.Ally);

                int        index  = 0;
                GameClient client = null;
                while ((client = GameManager.ClientMgr.GetNextClient(ref index)) != null)
                {
                    lock (AllyClient.getInstance()._Mutex)
                    {
                        if (client.ClientData.Faction != unionID)
                        {
                            continue;
                        }

                        client.ClientData.AllyList = list;
                    }
                }
            }
            break;

            case (int)GlobalEventTypes.AllyLog:
            {
                KFNotifyAllyLogGameEvent e = eventObject as KFNotifyAllyLogGameEvent;
                if (null != e)
                {
                    List <AllyLogData> list = (List <AllyLogData>)e.LogList;
                    if (list != null && list.Count > 0)
                    {
                        foreach (var log in list)
                        {
                            DBAllyLogAdd(log, GameManager.LocalServerId);
                        }
                    }

                    eventObject.Handled = true;
                }
            }
            break;

            case (int)GlobalEventTypes.AllyTip:
            {
                KFNotifyAllyTipGameEvent e = eventObject as KFNotifyAllyTipGameEvent;
                if (null != e)
                {
                    int unionID = (int)e.UnionID;
                    int tipID   = (int)e.TipID;

                    BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, GameManager.ServerId);
                    if (unionData != null && IsAllyOpen(unionData.QiLevel))
                    {
                        GameClient client = GameManager.ClientMgr.FindClient(unionData.BZRoleID);
                        if (client == null)
                        {
                            return;
                        }

                        lock (AllyClient.getInstance()._Mutex)
                        {
                            if (tipID == (int)ActivityTipTypes.AllyAccept)
                            {
                                int countAlly = AllyClient.getInstance().AllyCount(unionID);
                                if (countAlly > 0 && IsAllyMax(countAlly))
                                {
                                    return;
                                }
                            }

                            client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.Ally, false);
                            client._IconStateMgr.AddFlushIconState((ushort)tipID, false);
                            client._IconStateMgr.SendIconStateToClient(client);

                            client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.Ally, true);
                            client._IconStateMgr.AddFlushIconState((ushort)tipID, true);
                            client._IconStateMgr.SendIconStateToClient(client);

                            switch (tipID)
                            {
                            case (int)ActivityTipTypes.AllyAccept:
                                client.AllyTip[0] = 1;
                                break;

                            case (int)ActivityTipTypes.AllyMsg:
                                client.AllyTip[1] = 1;
                                break;
                            }
                        }
                    }

                    eventObject.Handled = true;
                }
            }
            break;
            }
        }