// 실제 데이터 처리 하는 곳 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); }