protected void PerformUIMessage(Message_Ui msg) { switch (msg.SubKind) { case KnownSubkinds.BotEnterWorld: BotEnterWorldContext ctxtBew = (BotEnterWorldContext)msg.RequestContext; contestantNames.Add(ctxtBew.ObjectId, ctxtBew.BotName); ActualPerformBotEnterWorld_UI(msg, ctxtBew); break; case KnownSubkinds.BotFanfareOccurred: SystemMessageContext smc = (SystemMessageContext)msg.RequestContext; ActualOnBotMessage_UI(msg.MessageKind, msg.SubKind, smc); break; case KnownSubkinds.BotEndOccured: BotEndContext bdc = (BotEndContext)msg.RequestContext; ActualBotEndEvent_UI(msg.MessageKind, msg.SubKind, bdc); break; case KnownSubkinds.WeaponFire: var ctxt = (UICombatContext)msg.RequestContext; ActualWeaponFire_UI(msg.MessageKind, msg.SubKind, ctxt); break; case KnownSubkinds.DirectionChange: case KnownSubkinds.ChangeSpeed: var nicspd = (NavigationInfoContext)msg.RequestContext; ActualNavitationEvent_UI(msg.MessageKind, msg.SubKind, nicspd); break; case KnownSubkinds.EndGameStatus: EndGameRequestContext egrc = (EndGameRequestContext)msg.RequestContext; ActualEndGame_UI(msg.MessageKind, msg.SubKind, egrc); break; case KnownSubkinds.BotStatus: ActualOutputBotStatusMessage_UI(msg); break; } }
protected abstract void ActualPerformBotEnterWorld_UI(Message_Ui msg, BotEnterWorldContext ctxtBew);
protected override void ActualPerformBotEnterWorld_UI(Message_Ui msg, BotEnterWorldContext ctxtBew) { string msgtxt = GetContestantName(ctxtBew.ObjectId) + " ...... arrives"; Console.WriteLine(msgtxt); }
protected override void ActualPerformBotEnterWorld_UI(Message_Ui msg, BotEnterWorldContext ctxtBew) { UIMessageCount++; }
protected override void ActualPerformBotEnterWorld_UI(Message_Ui msg, BotEnterWorldContext ctxtBew) { LogBotEnterWorld(msg.MessageKind, msg.SubKind, ctxtBew); }
private void LogBotEnterWorld(MainMessageKind mainMessageKind, KnownSubkinds uIMessageSubKind, BotEnterWorldContext ctxtBew) { var el = GetEventElement(mainMessageKind.ToString(), uIMessageSubKind.ToString()); using (var w = el.CreateWriter()) { var sr = new DataContractSerializer(ctxtBew.GetType()); sr.WriteObject(w, ctxtBew); } eventsParentElement.Add(el); }