예제 #1
0
        public void Update(int timePassed)
        {
            orig_Update(timePassed);

            List <AbstractPhysicalObject> remove = new List <AbstractPhysicalObject>();

            foreach (AbstractWorldEntity we in entities)
            {
                if (we is AbstractPhysicalObject)
                {
                    patch_AbstractPhysicalObject patchPhys = we as patch_AbstractPhysicalObject;

                    if (!MonklandSteamManager.ObjectManager.IsNetObject(patchPhys) && !MonklandSteamManager.ObjectManager.OwnsObject(patchPhys))
                    {
                        if (patchPhys.realizedObject != null)
                        {
                            patchPhys.realizedObject.Destroy();
                        }
                        patchPhys.realizedObject = null;
                        patchPhys.Destroy();
                        remove.Add(patchPhys);
                    }
                }
            }

            foreach (AbstractPhysicalObject phys in remove)
            {
                RemoveEntity(phys);
            }
        }
예제 #2
0
        public void AddEntity(AbstractWorldEntity ent)
        {
            orig_AddEntity(ent);
            if (ownerID == NetworkGameManager.playerID)
            {
                if (ent is AbstractPhysicalObject)
                {
                    patch_AbstractPhysicalObject patchObject = ent as patch_AbstractPhysicalObject;

                    if (patchObject.ownerID == 0)
                    {
                        patchObject.ownerID = ownerID;
                        if (patchObject.realizedObject != null)
                        {
                            (patchObject.realizedObject as patch_PhysicalObject).ownerID = ownerID;
                        }

                        MonklandSteamManager.ObjectManager.ownedObjects[patchObject.ID.ToString()] = patchObject;
                    }
                }
            }
        }
예제 #3
0
        public void ctor_RainWorldGame(ProcessManager manager)
        {
            OriginalConstructor(manager);
            MonklandSteamManager.monklandUI = new UI.MonklandUI(Futile.stage);

            AbstractRoom thisRoom = this.world.GetAbstractRoom(this.overWorld.FIRSTROOM);


            if (thisRoom != null)
            {
                int num = thisRoom.index;

                foreach (AbstractCreature ac in session.Players)
                {
                    ac.Destroy();
                    this.world.GetAbstractRoom(ac.Room.index).RemoveEntity(ac);
                }

                foreach (AbstractPhysicalObject absPhys in thisRoom.entities)
                {
                    patch_AbstractPhysicalObject patch = absPhys as patch_AbstractPhysicalObject;

                    if (!MonklandSteamManager.ObjectManager.IsNetObject(patch))
                    {
                        patch.ownerID = NetworkGameManager.playerID;
                        MonklandSteamManager.ObjectManager.SendObjectCreation(patch);
                    }
                }

                session.Players.Clear();

                if (mainGame == null)
                {
                    mainGame = this;
                }

                ulong playerID = MonklandSteamManager.instance.allChannels[0].SendForcewaitPacket(0, (CSteamID)NetworkGameManager.managerID);

                Debug.Log("Player Count is " + session.Players.Count);

                if (this.IsStorySession)
                {
                    patch_AbstractCreature playerCreature = new AbstractCreature(this.world, StaticWorld.GetCreatureTemplate("Slugcat"), null, new WorldCoordinate(num, 15, 25, -1), new EntityID(-1, (int)playerID)) as patch_AbstractCreature;
                    playerCreature.state = new PlayerState(playerCreature, 0, this.GetStorySession.saveState.saveStateNumber, false);
                    this.world.GetAbstractRoom(playerCreature.pos.room).AddEntity(playerCreature);
                    if (this.session.Players.Count > 0)
                    {
                        this.session.Players.Insert(0, playerCreature);
                    }
                    else
                    {
                        this.session.Players.Add(playerCreature);
                    }

                    playerCreature.ownerIDNew = NetworkGameManager.playerID;
                    MonklandSteamManager.ObjectManager.SendObjectCreation(playerCreature);

                    MonklandUI.trackedPlayer = playerCreature;

                    this.cameras[0].followAbstractCreature = playerCreature;
                    this.roomRealizer.followCreature       = playerCreature;
                }
            }
        }