示例#1
0
        /// <summary>
        /// Initialize <see cref="StarMain"/> for use
        /// </summary>
        public void Init()
        {
            if (Initialized)
            {
                throw new Exception("Star has already been initialized!");
            }

            Initialized = true;
            InitPackets();

            Server = new StarServer(ServerConfig, ConnectionManager, DefaultPacketTypes.ToArray());
        }
示例#2
0
        private void InitPackets()
        {
            var tasks = new List <Task>();

            foreach (Type type in typeof(StarMain).Assembly.GetTypes().Where(p => p.Namespace == "StarLib.Packets.Starbound"))
            {
                if (!typeof(Packet).IsAssignableFrom(type))
                {
                    continue;
                }

                _log.Debug("Adding default packet type {0}", type.FullName);
                DefaultPacketTypes.Add(type);

                _log.Debug("Building and caching packet serializer/deserializer for type {0}", type.FullName);

                tasks.Add(Task.Run(() => PacketSerializer.BuildAndStore(type)));
            }

            Task.WhenAll(tasks).Wait();
        }