Esempio n. 1
0
        // 실제 데이터 처리 하는 곳
        private void PacketWorker_OnEventReceived(string pid, GameEvents gameevent, int[] args)
        {
            var text = pid + "|" + gameevent + "|";
            var pos  = 0;

            var isfate = false;

            switch (gameevent)
            {
            case GameEvents.InstanceEnter:                          // [0] = instance code
            case GameEvents.InstanceLeave:
            {
                if (args.Length > 0)
                {
                    text += GameData.GetInstanceName(args[0]) + "|";
                    pos++;
                }

                _frmOverlay.EventNone();
            }
            break;

            case GameEvents.FateOccur:                              // [0] = fate code
            {
                var fate = GameData.GetFate(args[0]);
                text += fate.Name + "|" + fate.Area.Name + "|";
                pos++;

                // 모든 페이트를 골라도 목록에 있는것만 알려줌
                if (Settings.SelectedFates.Contains(args[0].ToString()))
                {
                    _frmOverlay.EventFate(fate);
                    if (_use_notify)
                    {
                        NotifyFate(fate);
                    }
                    PlayEffectSound();
                }

                isfate = true;
            }
            break;

            case GameEvents.MatchQueue:                             // [0] = MatchType, [1] = code, [...] = instances
            {
                var type = (MatchType)args[0];

                text += type + "|";
                pos++;

                switch (type)
                {
                case MatchType.Roulette:
                    var roulette = GameData.GetRoulette(args[1]);

                    text += roulette.Name + "|";
                    pos++;

                    _frmOverlay.EventRoulette(roulette);

                    break;

                case MatchType.Assignment:
                    text += args[1] + "|";
                    pos++;

                    var p = pos;
                    for (var i = p; i < args.Length; i++)
                    {
                        text += GameData.GetInstanceName(args[i]) + "|";
                        pos++;
                    }

                    _frmOverlay.EventStatus(args[1]);

                    break;
                }
            }
            break;

            case GameEvents.MatchDone:                              // [0] = roulette code, [1] = instance code
            {
                var roulette = GameData.GetRoulette(args[0]);
                var instance = GameData.GetInstance(args[1]);

                text += roulette.Name + "|";
                pos++;
                text += instance.Name + "|";
                pos++;

                _frmOverlay.EventMatch(instance);
                if (_use_notify)
                {
                    NotifyDuty(instance);
                }
                PlayEffectSound();
            }
            break;

            case GameEvents.MatchCancel:
                _frmOverlay.StopBlink();
                break;
            }

            for (var i = pos; i < args.Length; i++)
            {
                text += args[i] + "|";
            }

            if (isfate)
            {
                text += args[0] + "|";
            }

            ActGlobals.oFormActMain.ParseRawLogLine(false, DateTime.Now, "00|" + DateTime.Now.ToString("O") + "|0048|F|" + text);
        }