public RitualSession(Map map, RitualData data) { SessionId = Multiplayer.GlobalIdBlock.NextId(); this.map = map; this.data = data; this.data.assignments.session = this; }
public void Read(ByteReader reader) { SessionId = reader.ReadInt32(); reader.MpContext().map = map; data = SyncSerialization.ReadSync <RitualData>(reader); data.assignments.session = this; }
static bool Prefix(Window window) { if (Multiplayer.Client != null && window.GetType() == typeof(Dialog_BeginRitual) && // Doesn't let BeginRitualProxy through (Multiplayer.ExecutingCmds || Multiplayer.Ticking)) { var dialog = (Dialog_BeginRitual)window; dialog.PostOpen(); // Completes initialization var comp = dialog.map.MpComp(); if (comp.ritualSession != null && (comp.ritualSession.data.ritual != dialog.ritual || comp.ritualSession.data.outcome != dialog.outcome)) { Messages.Message("MpAnotherRitualInProgress".Translate(), MessageTypeDefOf.RejectInput, false); return(false); } if (comp.ritualSession == null) { var data = new RitualData { ritual = dialog.ritual, target = dialog.target, obligation = dialog.obligation, outcome = dialog.outcome, extraInfos = dialog.extraInfos, action = dialog.action, ritualLabel = dialog.ritualLabel, confirmText = dialog.confirmText, organizer = dialog.organizer, assignments = MpUtil.ShallowCopy(dialog.assignments, new MpRitualAssignments()) }; comp.CreateRitualSession(data); } if (TickPatch.currentExecutingCmdIssuedBySelf) { comp.ritualSession.OpenWindow(); } return(false); } return(true); }