Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
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;
        }
Ejemplo n.º 4
0
 public static void LoadCircuitState()
 {
     foreach (var item in GameObject.FindObjectsOfType <CircuitOutput>())
     {
         CircuitStatePacket.SetOutputState(item, item.On);
     }
 }
Ejemplo n.º 5
0
        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);
                }
            }
        }
Ejemplo n.º 6
0
        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);
                }
            }
        }
Ejemplo n.º 7
0
        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);
        }