示例#1
0
 public static void OnColonyChange(Players.Player player, Colony oldColony, Colony newColony)
 {
     if (player.ShouldSendData && newColony != null)
     {
         NetworkWrapper.Send(GetPacket(newColony), player);
     }
 }
示例#2
0
        private void HandleNetworkCommunitiesUpdate(NetworkWrapper network)
        {
            void Update()
            {
                listViewCommunities.Items.Clear();

                var items = network.Communities
                            .OrderByDescending(e => e.Nodes.Count)
                            .Select(e => new ListViewItem(e.Id.ToString())
                {
                    SubItems = { e.Nodes.Count.ToString() }
                })
                            .ToArray();

                listViewCommunities.Items.AddRange(items);
            }

            if (listViewCommunities.InvokeRequired)
            {
                listViewCommunities.Invoke((MethodInvoker)Update);
            }
            else
            {
                Update();
            }
        }
示例#3
0
    protected void Start()
    {
        //duplicate instances will be auto disabled by UNET because we have a network identity component
        Instance = this;
        DontDestroyOnLoad(gameObject);
        DontDestroyOnLoad(battleCam.gameObject);

        NetworkWrapper.OnEnterScene(NetworkWrapper.Scene.Battle);

        int wave     = 0;
        int stepSize = numWaves / (spawnGroups.Count - 1);

        foreach (SpawnGroup spawn in spawnGroups)
        {
            spawn.WaveIndex = wave;
            spawn.NumWaves  = numWaves;
            wave           += stepSize;
        }
        spawnGroups[spawnGroups.Count - 1].WaveIndex = numWaves - 1;

        availableSpawnPoints = new List <bool>();
        for (int i = 0; i < battleCam.EnemySpawnPoints.Count; i++)
        {
            availableSpawnPoints.Add(true);
        }
        RemainingEnemySpawnPoints = availableSpawnPoints.Count;

        PersistentPlayer.localAuthority.CmdSpawnBattlePlayer();

        if (isServer)
        {
            StartBattle();
        }
    }
示例#4
0
        public void SerializationTargetTestsSimplePasses()
        {
            var gameObject = new GameObject();
            var obj1       = gameObject.AddComponent <TestObjOne>();
            var obj2       = gameObject.AddComponent <TestObjTwo>();

            obj1.StringValue  = "testValue";
            obj1.NumericValue = 1337;

            obj2.StringValue  = "otherValue";
            obj2.NumericValue = 1338;
            obj2.ByteValue    = 0xff;

            var networkMessage = new NetworkWrapper(new Guid(), new[] { obj1, obj2 });

            //Convert networkMessage into Json
            var networkMessageJson = Serializer.Serialize(networkMessage);

            //Deserialize said Json to erase the type info
            var deserializedMessage = Serializer.Deserialize <NetworkWrapper>(networkMessageJson);



            var results = deserializedMessage.GameObjects.Select(c => Serializer.IdentifyBestTypeMatch(JObject.FromObject(c)))
                          .ToList();

            Assert.True(results.Any(c => c.Type == typeof(TestObjOne)));
            Assert.True(results.Any(c => c.Type == typeof(TestObjTwo)));
        }
示例#5
0
        private MasterDataSource()
        {
            var networkConfiguration   = new NetworkWrapper();
            var uiDispatcher           = new UiDispatcher();
            var peopleNetworkMessenger = new PeopleNetworkMessenger(networkConfiguration, uiDispatcher);

            PeopleDataSource = new PeopleDataSource(peopleNetworkMessenger);
        }
示例#6
0
 public static void TeleportPlayer(Players.Player target, Vector3 position)
 {
     using (ByteBuilder byteBuilder = ByteBuilder.Get()) {
         byteBuilder.Write(ClientMessageType.ReceivePosition);
         byteBuilder.Write(position);
         NetworkWrapper.Send(byteBuilder, target);
     }
 }
示例#7
0
 private void HandleNetworkAdd(NetworkWrapper network)
 {
     listNetworks.Invoke((MethodInvoker) delegate
     {
         listNetworks.Items.Add(network.Name);
         listNetworks.SelectedIndex = listNetworks.Items.Count - 1;
     });
 }
示例#8
0
        public static NetworkWrapper Wrap(this Net net)
        {
            if (wrapperCache == null)
            {
                wrapperCache = new NetworkWrapper(net);
            }

            return(wrapperCache);
        }
示例#9
0
    public void CreateRoomButtonClicked(InputField roomName)
    {
        if (roomName.text.Length == 0)
        {
            return;
        }

        TitleUIManager.PlayButtonSound();

        NetworkWrapper.StartServer(roomName.text);
        NavigateToRoomSessionMenu(roomName.text);
    }
示例#10
0
    private void Start()
    {
        if (Instance != null)
        {
            Debug.LogError("Multiple NetworkWrapper objects exist.");
            Destroy(gameObject);
            return;
        }

        Instance  = this;
        discovery = GetComponent <CustomNetworkDiscovery>();
        manager   = GetComponent <CustomNetworkManager>();
    }
示例#11
0
        private void HandleNetworkStatsUpdate(NetworkWrapper network)
        {
            void Update()
            {
                listViewStats.Items.Clear();

                var i1 = new ListViewItem("Vertices");

                i1.SubItems.Add(network.Stats.Nodes.ToString());

                var i2 = new ListViewItem("Edges");

                i2.SubItems.Add(network.Stats.Edges.ToString());

                var i3 = new ListViewItem("Components");

                i3.SubItems.Add(network.Stats.Components.ToString());

                var i4 = new ListViewItem("Degree centrality");

                i4.SubItems.Add(network.Stats.DegreeCentrality.ToString(DoubleFormat));

                var i5 = new ListViewItem("Closeness centrality");

                i5.SubItems.Add(network.Stats.ClosenessCentrality.ToString(DoubleFormat));

                var i6 = new ListViewItem("Mean distance");

                i6.SubItems.Add(network.Stats.MeanDistance.ToString(DoubleFormat));

                var i7 = new ListViewItem("Clustering coefficient");

                i7.SubItems.Add(network.Stats.ClusteringCoefficient.ToString(DoubleFormat));

                var i8 = new ListViewItem("Diameter");

                i8.SubItems.Add(network.Stats.Diameter.ToString());

                listViewStats.Items.AddRange(new[] { i1, i2, i3, i4, i5, i6, i7, i8 });
            }

            if (listViewStats.InvokeRequired)
            {
                listViewStats.Invoke((MethodInvoker)Update);
            }
            else
            {
                Update();
            }
        }
示例#12
0
        public static void SendPacket(Players.Player player)
        {
            if (player.IsConnected)
            {
                int builder = player.GetTempValues(false).GetOrDefault("pipliz.builderlimit", 0);
                int digger  = player.GetTempValues(false).GetOrDefault("pipliz.diggerlimit", 0);

                using (ByteBuilder b = ByteBuilder.Get()) {
                    b.Write(General.Networking.ClientMessageType.ReceiveConstructionLimits);
                    b.Write(builder);
                    b.Write(digger);
                    NetworkWrapper.Send(b.ToArray(), player);
                }
            }
        }
示例#13
0
        private void UpdatePlayerVariables()
        {
            using (ByteBuilder bRaw = ByteBuilder.Get())
            {
                bRaw.Write(ClientMessageType.ReceiveServerPerClientSettings);
                using (ByteBuilder b = ByteBuilder.Get())
                {
                    b.Write(_playerVariables.ToString());
                    bRaw.WriteCompressed(b);
                }
                NetworkWrapper.Send(bRaw.ToArray(), Player.ID);
            }

            Player.SendHealthPacket();
        }
示例#14
0
        public static void sendSilent(Players.Player player, string message, ChatColour colour = ChatColour.white, ChatStyle style = ChatStyle.normal, Pipliz.Chatting.ChatSenderType sender = Pipliz.Chatting.ChatSenderType.Server)
        {
            ChatSenderType type = ChatSenderType.Server;

            if (!(player.ID == NetworkID.Server))
            {
                string messageBuilt = buildMessage(message, colour, style);

                using (ByteBuilder byteBuilder = ByteBuilder.Get())
                {
                    byteBuilder.Write((ushort)ClientMessageType.Chat);
                    byteBuilder.Write((byte)type);
                    byteBuilder.Write(messageBuilt);
                    NetworkWrapper.Send(byteBuilder.ToArray(), player, NetworkMessageReliability.ReliableWithBuffering);
                }
            }
        }
示例#15
0
        private void HandleNetworkPlotUpdate(NetworkWrapper network)
        {
            if (network.Plot == null)
            {
                return;
            }

            if (pictureBoxNetworkPlot.InvokeRequired)
            {
                pictureBoxNetworkPlot.Invoke((MethodInvoker) delegate
                {
                    pictureBoxNetworkPlot.Image = network.Plot;
                });
            }
            else
            {
                pictureBoxNetworkPlot.Image = network.Plot;
            }
        }
示例#16
0
    public void CreateRoomButtonClicked(InputField roomName)
    {
        if (roomName.text.Length == 0)
        {
            return;
        }

        if (roomName.text.All(x => char.IsNumber(x) || x == '.'))
        {
            NetworkWrapper.ConnectToServer(roomName.text);
            NavigateToRoomSessionMenu(roomName.text);
            return;
        }

        TitleUIManager.PlayButtonSound();

        NetworkWrapper.StartServer(roomName.text);
        NavigateToRoomSessionMenu(roomName.text);
    }
        public async Task DoesNotCall_CollectionPropertyGetter_EveryTimeElementIsAdded()
        {
            var networkList = new List <string> {
                "Network1", "Network2"
            };

            string serialized = await Serializer.SerializeWrapper(new NetworkWrapper { NetworkList = networkList });

            Assert.Equal(@"{""NetworkList"":[""Network1"",""Network2""]}", serialized);

            NetworkWrapper obj = await Serializer.DeserializeWrapper <NetworkWrapper>(serialized);

            int i = 0;

            foreach (string network in obj.NetworkList)
            {
                Assert.Equal(networkList[i], network);
                i++;
            }
        }
示例#18
0
    protected void Start()
    {
        if (Instance)
        {
            Destroy(battleCam.gameObject);
            Destroy(gameObject);
            return;
        }

        Instance = this;
        DontDestroyOnLoad(gameObject);
        DontDestroyOnLoad(battleCam.gameObject);

        NetworkWrapper.OnEnterScene(NetworkWrapper.Scene.Battle);
        battleSceneName = SceneManager.GetActiveScene().name;

        int wave     = 0;
        int stepSize = numWaves / (spawnGroups.Count - 1);

        foreach (SpawnGroup spawn in spawnGroups)
        {
            spawn.WaveIndex = wave;
            spawn.NumWaves  = numWaves;
            wave           += stepSize;
        }
        spawnGroups[spawnGroups.Count - 1].WaveIndex = numWaves - 1;

        availableSpawnPoints = new List <bool>();
        for (int i = 0; i < battleCam.EnemySpawnPoints.Count; i++)
        {
            availableSpawnPoints.Add(true);
        }
        RemainingEnemySpawnPoints = availableSpawnPoints.Count;

        PersistentPlayer.localAuthority.CmdSpawnBattlePlayer();

        if (isServer)
        {
            StartBattle();
        }
    }
示例#19
0
    /// <summary>
    /// Button click method (set in the inspector) for buttons on the list of rooms
    /// </summary>
    /// <param name="buttonClicked"></param>
    public void RoomSelected(GameObject buttonClicked)
    {
        TitleUIManager.PlayButtonSound();
        Text t = buttonClicked.GetComponentInChildren <Text>();

        if (t != null)
        {
            string ipAddress = NetworkWrapper.discovery.GetAddressOfRoom(t.text);
            if (ipAddress != null)
            {
                NetworkWrapper.ConnectToServer(ipAddress);
                NavigateToRoomSessionMenu(t.text);
            }
            else
            {
                Debug.LogErrorFormat("No room of name {0}", t.text);
            }
        }
        else
        {
            Debug.LogError("Cannot get name of room selected.");
        }
    }
示例#20
0
        private static void Main(string [] args)
        {
            //get our cities
            var cities = CreateCities().ToList();

            //Each city is an object the chromosome is a special case as it needs
            //to contain each city only once. Therefore, our chromosome will contain
            //all the cities with no duplicates

            //we can create an empty population as we will be creating the
            //initial solutions manually.
            var population = new Population(false, false);

            //create the initial solutions (chromosomes)
            for (var p = 0; p < populationSize; p++)
            {
                var chromosome = new Chromosome();
                foreach (var city in cities)
                {
                    chromosome.Genes.Add(new Gene(city));
                }

                chromosome.Genes.ShuffleFast();
                population.Solutions.Add(chromosome);
            }

            //create the elite operator
            var elite = new Elite(5);

            //create crossover operator
            var crossover = new Crossover(0.85)
            {
                CrossoverType = CrossoverType.DoublePointOrdered
            };

            //create the SwapMutate operator
            var mutate = new SwapMutate(0.02);

            //note that for network fitness evaluation we simply pass null instead of a fitness
            //function.
            var ga = new GeneticAlgorithm(population, null);

            //subscribe to the generation and run complete events
            ga.OnGenerationComplete += ga_OnGenerationComplete;
            ga.OnRunComplete        += ga_OnRunComplete;

            //add the operators
            ga.Operators.Add(elite);
            ga.Operators.Add(crossover);
            ga.Operators.Add(mutate);

            /****************************************************************************************
             * Up until now the GA is configured as if it were a non-distributed example except,
             * the fitness function is not specified (see note above)
             *
             * The NetworkWrapper (below) adds the networking and  the Consul class adds service
             * discovery functionality.
             *
             ***************************************************************************************/

            //we can point the service discovery client at any node running a consul service, typically
            //this would be the localhost. An explicit IP/Port is stated here for clarity, see the
            //constructor overloads for more details.
            IServiceDiscovery serviceDiscovery = new GAF.ServiceDiscovery.Consul.Client("192.168.1.90", 8500);

            /****************************************************************************************
             * The StaticServices class is a IServiceDiscovery implementation that can be used to access
             * the specified endpoints. Use this is no specific discovery service is available.
             *
             ***************************************************************************************
             * var endpoints = new List<IPEndPoint> ();
             * endpoints.Add (NetworkWrapper.CreateEndpoint ("127.0.0.1:11000"));
             * endpoints.Add (NetworkWrapper.CreateEndpoint ("127.0.0.1:11001"));
             *
             * IServiceDiscovery serviceDiscovery = new GAF.ServiceDiscovery.ServiceEndpoints (endpoints);
             */

            var networkWrapper = new NetworkWrapper(ga, serviceDiscovery, "Example.IRemoteFitness.dll", true);

            _stopWatch = new Stopwatch();
            _stopWatch.Start();

            //locally declared terminate function
            networkWrapper.GeneticAlgorithm.Run(TerminateAlgorithm);
            Console.ReadLine();
        }
示例#21
0
        public void SendSync(object obj)
        {
            var message = new NetworkWrapper(this.Guid, new[] { obj });

            _connectHandlerInstance.SendTcpUpdate(message);
        }
示例#22
0
 private void InitializationServer(string wsAddress, int wsPort, int wsTimeOut, string wsDataBase)
 {
     _networkWrapper = new NetworkWrapper(wsAddress, Convert.ToInt32(wsPort), Convert.ToInt32(wsTimeOut), wsDataBase);
     _networkWrapper.Start();
 }
示例#23
0
 private void button_Click(object sender, RoutedEventArgs e)
 {
     _net            = new NetworkWrapper(2222);
     _net.Connected += _net_Connected2;
 }
示例#24
0
 private void HandleNetworkRemove(NetworkWrapper network)
 {
     listNetworks.Items.Remove(network.Name);
 }