public static void PlaceBoard() { if (StuffPlacer.OkayToPlace) { foreach (var item in BoardPlacer.BoardBeingPlaced.GetComponentsInChildren <ObjectInfo>()) { var netObj = item.GetComponent <NetObject>() ?? item.gameObject.AddComponent <NetObject>(); netObj.NetID = NetObject.GetNewID(); } foreach (var item in BoardPlacer.BoardBeingPlaced.GetComponentsInChildren <NetObject>()) { item.enabled = true; } var boardComp = BoardPlacer.BoardBeingPlaced.GetComponent <CircuitBoard>(); var parent = BoardPlacer.ReferenceObject.transform.parent; var packet = PlaceBoardPacket.BuildFromBoard(boardComp, parent); Network.SendPacket(packet); foreach (var item in boardComp.GetComponentsInChildren <CircuitOutput>()) { CircuitStatePacket.SetOutputState(item, item.On, true); } } }
public void SendWorld(int playerId) { var player = Players[playerId]; //Send(new PauseGamePacket //{ // Reason = $"{player.Username} is downloading the world", // ExceptID = playerId //}); Log.WriteLine("Sending world to player " + playerId); IsSendingWorld = true; byte[] world = World.Serialize(); Packet packet = new WorldDataPacket { Data = world }; var msg = packet.GetMessage(Server); PacketLog.LogSend(packet); player.Connection.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, 0); player.Connection.SendMessage(CircuitStatePacket.Build(true).GetMessage(Server), NetDeliveryMethod.ReliableOrdered, 0); }
public static void UpdateStates(CircuitStatePacket packet) { foreach (var state in packet.States) { var netObj = NetObject.GetByNetId(state.Key.Key); if (netObj == null || !netObj.enabled) { continue; } var ios = netObj.GetComponentsInChildren <CircuitOutput>(); if (ios.Length <= state.Key.Value) { continue; } var io = ios[state.Key.Value]; CurrentlyUpdating = io; io.On = state.Value; } CurrentlyUpdating = null; HasCalledCircuitUpdate = true; }
public static void LoadCircuitState() { foreach (var item in GameObject.FindObjectsOfType <CircuitOutput>()) { CircuitStatePacket.SetOutputState(item, item.On); } }
public static void OnCircuitLogicUpdatePostfix() { if (Network.IsServer) { bool full = UpdateCounter++ % Constants.SendFullCircuitEachXUpdates == 0; var packet = CircuitStatePacket.Build(full); if (packet.Count > 0) { Network.SendPacket(packet); } } }
public override void Do() { var parentBoard = NetObject.GetByNetId(Packet.ParentBoardID); var component = SavedObjectUtilities.LoadSavedObject(Packet.SavedObject, parentBoard?.transform); component.AddComponent <NetObject>().NetID = Packet.NetID; if (Network.IsServer) { foreach (var item in component.GetComponentsInChildren <CircuitOutput>()) { CircuitStatePacket.SetOutputState(item, item.On, true); } } }
public static bool set_On(CircuitOutput __instance, bool value) { if (Network.IsClient && ComponentActions.CurrentlyUpdating != __instance) { return(false); } if (Network.IsServer) { var component = ComponentPlacer.FullComponent(__instance.transform); var netObj = component.GetComponent <NetObject>(); if (netObj == null) { component.AddComponent <NetObject>(); } CircuitStatePacket.SetOutputState(__instance, value); } return(true); }