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); } }
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; } } } }
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; } } }