Beispiel #1
0
        private void GenerateMap()
        {
            /*********** Generate Items ***********/
            Logger.WriteLine("Room {0} : Generating items", Id);
            ItemGenerator itemGenerator = new ItemGenerator();

            itemGenerator.Generate();
            _itemList = itemGenerator.ItemList;

            NetworkWriter writer = new NetworkWriter(InGameProtocol.TCPServerToClient.ItemList);

            writer.Put(itemGenerator.ItemList.Count);

            foreach (var item in itemGenerator.ItemList)
            {
                writer.Put(item.Value.SpawnIndex);
                writer.Put(item.Value.ID);
                writer.Put(item.Value.Type);
                writer.Put(item.Value.Rarity);
                writer.Put(item.Value.Quantity);
                Logger.WriteLine("Room {0} : Item generated -> id = {1}\tquantity = {2}\ttype = {3}",
                                 Id,
                                 item.Value.ID,
                                 item.Value.Quantity,
                                 (ItemTypes.ItemEnum)item.Value.Type);
            }

            _server.SendAll(writer, DeliveryMethod.ReliableOrdered);
            Logger.WriteLine("Room {0} : Generating items finish", Id);

            /*********** Generate Enigmas ***********/
            Logger.WriteLine("Room {0} : Generating enigmas", Id);
            EnigmasGenerator enigmasGenerator = new EnigmasGenerator();

            enigmasGenerator.Generate();
            _enigmasList = enigmasGenerator.EnigmasList;

            writer = new NetworkWriter(InGameProtocol.TCPServerToClient.EnigmasList);
            writer.Put(enigmasGenerator.EnigmasList.Count);

            foreach (var enimga in enigmasGenerator.EnigmasList)
            {
                writer.Put(enimga.Value.SpawnIndex);
                writer.Put(enimga.Value.EnigmaID);
                writer.Put(enimga.Value.EnigmaType);
                Logger.WriteLine("Room {0} : Enigma generated -> id = {1}\ttype = {2}",
                                 Id,
                                 enimga.Value.EnigmaID,
                                 enimga.Value.EnigmaType);
            }

            _server.SendAll(writer, DeliveryMethod.ReliableOrdered);
            Logger.WriteLine("Room {0} : Generating enigmas finish", Id);
        }
Beispiel #2
0
        private void OpenCrateMessage(InGamePlayer player, NetworkMessage msg)
        {
            if (!GameStarted || GameEnded)
            {
                return;
            }

            int crateID = msg.GetInt();

            Logger.WriteLine("Room {0} : Player {1} open crate {2}.", Id, player.Id, crateID);

            var itemList = ItemGenerator.GenerateCrateItem();

            var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.OpenCrate);

            writer.Put(player.Id);
            writer.Put(crateID);
            writer.Put(itemList.Count);

            foreach (var item in itemList)
            {
                writer.Put(item.ID);
                writer.Put(item.Type);
                writer.Put(item.Rarity);
                writer.Put(item.Quantity);
                _itemList.Add(item.ID, item);

                Logger.WriteLine("Room {0} : Item generated on crate {1} -> id = {2}\tquantity = {3}\ttype = {4}",
                                 Id,
                                 crateID,
                                 item.ID,
                                 item.Quantity,
                                 (ItemTypes.ItemEnum)item.Type);
            }

            _server.SendAll(writer, DeliveryMethod.ReliableOrdered);
        }