コード例 #1
0
ファイル: Rituals.cs プロジェクト: rwmt/Multiplayer
        public RitualSession(Map map, RitualData data)
        {
            SessionId = Multiplayer.GlobalIdBlock.NextId();

            this.map  = map;
            this.data = data;
            this.data.assignments.session = this;
        }
コード例 #2
0
ファイル: Rituals.cs プロジェクト: rwmt/Multiplayer
        public void Read(ByteReader reader)
        {
            SessionId = reader.ReadInt32();
            reader.MpContext().map = map;

            data = SyncSerialization.ReadSync <RitualData>(reader);
            data.assignments.session = this;
        }
コード例 #3
0
ファイル: Rituals.cs プロジェクト: rwmt/Multiplayer
        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);
        }