コード例 #1
0
 void HandleShipSelectionChanged(ShipNames newShipName)
 {
     if (gameCore.ColonyShips.TryGetValue(newShipName, out ColonyShip chosenShip))
     {
         FocusShip = chosenShip;
     }
 }
コード例 #2
0
        public static void Main(string[] args)
        {
            var bot = new Bot();

            Console.WriteLine(@"
                ██████╗    ██████╗  ██████╗ 
                ╚════██╗   ╚════██╗██╔═████╗
                 █████╔╝    █████╔╝██║██╔██║
                ██╔═══╝    ██╔═══╝ ████╔╝██║
                ███████╗██╗███████╗╚██████╔╝
                ╚══════╝╚═╝╚══════╝ ╚═════╝                                       
            "); //Font Name: ANSI Shadow

            CultureInfo.DefaultThreadCurrentCulture   = CultureInfo.GetCultureInfo("ru-RU");
            CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("ru-RU");

            ReloadSettings(); // Загрузим настройки

            InviterList.ReadFromXML(BotSettings.InviterXML);
            UsersLeftList.ReadFromXML(BotSettings.UsersLeftXML);
            PriceList.ReadFromXML(BotSettings.PriceListXML);
            Vote.Read(BotSettings.VotesXML);
            Note.Read(BotSettings.NotesXML);
            Subscriber.Read(BotSettings.SubscriberXML);
            ShipNames.Read(BotSettings.ShipNamesCSV);

            bot.RunBotAsync().GetAwaiter().GetResult();
        }
コード例 #3
0
        bool Control(object[] Params)
        {
            if ((!Session.InSpace && !Session.InStation) || !Session.Safe)
            {
                return(false);
            }
            Name   = Me.Name;
            CharID = Me.CharID;

            if (Bookmarks == null || BookmarkUpdate < DateTime.Now)
            {
                Bookmarks      = Bookmark.All.Select(a => a.Title).ToArray();
                BookmarkUpdate = DateTime.Now.AddMinutes(1);
            }
            if (Session.InFleet)
            {
                FleetMembers = Fleet.Members.Select(a => a.Name).ToArray();
            }
            if (MyShip.CargoBay != null)
            {
                if (MyShip.CargoBay.IsPrimed)
                {
                    if (MyShip.CargoBay.Items != null && MyShip.CargoBay.Items.Any())
                    {
                        MyShip.CargoBay.Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); });
                    }
                }
                else
                {
                    MyShip.CargoBay.Prime();
                    return(false);
                }
            }
            if (MyShip.DroneBay != null)
            {
                if (MyShip.DroneBay.IsPrimed)
                {
                    if (MyShip.DroneBay.Items != null && MyShip.DroneBay.Items.Any())
                    {
                        MyShip.DroneBay.Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); });
                    }
                }
                else
                {
                    MyShip.DroneBay.Prime();
                    return(false);
                }
            }
            AgentMission.All.ForEach(a => { CachedMissions.AddOrUpdate(Agent.Get(a.AgentID).Name, new CachedMission(a.ContentID, a.Name, Agent.Get(a.AgentID).Level, a.State, a.Type)); });
            AvailableAgents = Agent.MyAgents.Select(a => a.Name).ToList();
            if (Session.InStation)
            {
                if (Station.ItemHangar != null)
                {
                    if (Station.ItemHangar.IsPrimed)
                    {
                        if (Station.ItemHangar.Items != null && Station.ItemHangar.Items.Any())
                        {
                            Station.ItemHangar.Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); });
                        }
                    }
                    else
                    {
                        Station.ItemHangar.Prime();
                        return(false);
                    }
                }
                if (Station.ShipHangar != null)
                {
                    if (Station.ShipHangar.IsPrimed)
                    {
                        if (Station.ShipHangar.Items != null && Station.ShipHangar.Items.Any())
                        {
                            foreach (Item ship in Station.ShipHangar.Items.Where(ship => ship != null && ship.isUnpacked))
                            {
                                ShipVolume.AddOrUpdate(ship.Type, ship.Volume);
                                if (ship.Name != null)
                                {
                                    ShipNames.Add(ship.Name);
                                }
                            }
                        }
                    }
                    else
                    {
                        Station.ShipHangar.Prime();
                        return(false);
                    }
                }

                if (FittingManager.Ready)
                {
                    if (FittingManager.Fittings != null && FittingManager.Fittings.Any())
                    {
                        Fittings = FittingManager.Fittings.Select(fit => fit.Name).ToList();
                    }
                }
                else
                {
                    FittingManager.Prime();
                }
                //for (int i = 0; i <= 6; i++)
                //{
                //    if (Session.InStation && Station.CorpHangar(i) != null)
                //    {
                //        if (Station.CorpHangar(i).IsPrimed)
                //        {
                //            Station.CorpHangar(i).Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); });
                //        }
                //        else
                //        {
                //            Station.CorpHangar(i).Prime();
                //            return false;
                //        }
                //    }
                //}
            }

            if (Session.InSpace)
            {
                ArmorPercent = MyShip.Armor / MyShip.MaxArmor;
                HullPercent  = MyShip.Hull / MyShip.MaxHull;
                if (Drone.AllInSpace.Any(a => a.ToEntity.ArmorPct < 100 || a.ToEntity.HullPct < 100))
                {
                    DamagedDrones = true;
                }
            }
            return(false);
        }
コード例 #4
0
 public Ship(ShipNames name)
 {
     ShipCells = new List <Cell>();
     Name      = name;
     IsSunk    = false;
 }
コード例 #5
0
        public static async Task CreateOnVoiceStateUpdated(DiscordClient client, VoiceStateUpdateEventArgs e)
        {
            try
            {
                if (e.Channel != null)
                {
                    if (e.Channel.Id == Bot.BotSettings.AutocreateGalleon ||
                        e.Channel.Id == Bot.BotSettings.AutocreateBrigantine ||
                        e.Channel.Id == Bot.BotSettings.AutocreateSloop
                        )                                      // мы создаем канал, если пользователь зашел в один из каналов автосоздания
                    {
                        if (ShipCooldowns.ContainsKey(e.User)) // проверка на кулдаун
                        {
                            if ((ShipCooldowns[e.User] - DateTime.Now).Seconds > 0)
                            {
                                var m = await e.Guild.GetMemberAsync(e.User.Id);

                                await m.PlaceInAsync(e.Guild.GetChannel(Bot.BotSettings.WaitingRoom));

                                await m.SendMessageAsync($"{Bot.BotSettings.ErrorEmoji} Вам нужно подождать " +
                                                         $"**{(ShipCooldowns[e.User] - DateTime.Now).Seconds}** секунд прежде чем " +
                                                         "создавать новый корабль!");

                                client.Logger.LogInformation(BotLoggerEvents.Event, $"Участник {e.User.Username}#{e.User.Discriminator} ({e.User.Discriminator}) был перемещён в комнату ожидания.");
                                return;
                            }
                        }

                        // если проверка успешно пройдена, добавим пользователя
                        // в словарь кулдаунов
                        ShipCooldowns[e.User] = DateTime.Now.AddSeconds(Bot.BotSettings.FastCooldown);

                        //Проверка на эмиссарство
                        var channelSymbol = Bot.BotSettings.AutocreateSymbol;

                        var member = await e.Guild.GetMemberAsync(e.User.Id);

                        member.Roles.ToList().ForEach(x =>
                        {
                            if (x.Id == Bot.BotSettings.EmissaryGoldhoadersRole)
                            {
                                channelSymbol = DiscordEmoji.FromName(client, ":moneybag:");
                            }
                            else if (x.Id == Bot.BotSettings.EmissaryTradingCompanyRole)
                            {
                                channelSymbol = DiscordEmoji.FromName(client, ":pig:");
                            }
                            else if (x.Id == Bot.BotSettings.EmissaryOrderOfSoulsRole)
                            {
                                channelSymbol = DiscordEmoji.FromName(client, ":skull:");
                            }
                            else if (x.Id == Bot.BotSettings.EmissaryAthenaRole)
                            {
                                channelSymbol = DiscordEmoji.FromName(client, ":gem:");
                            }
                            else if (x.Id == Bot.BotSettings.EmissaryReaperBonesRole)
                            {
                                channelSymbol = DiscordEmoji.FromName(client, ":skull_crossbones:");
                            }
                            else if (x.Id == Bot.BotSettings.HuntersRole)
                            {
                                channelSymbol = DiscordEmoji.FromName(client, ":fish:");
                            }
                        });

                        var autoCreateSloopCategory      = e.Guild.GetChannel(Bot.BotSettings.AutocreateSloopCategory);
                        var autoCreateBrigantineCategory = e.Guild.GetChannel(Bot.BotSettings.AutocreateBrigantineCategory);
                        var autoCreateGalleongCategory   = e.Guild.GetChannel(Bot.BotSettings.AutocreateGalleonCategory);

                        //Генерируем создание канала
                        var used_names = autoCreateSloopCategory.Children.Select(x => x.Name).ToArray();
                        used_names.Concat(autoCreateBrigantineCategory.Children.Select(x => x.Name).ToArray());
                        used_names.Concat(autoCreateGalleongCategory.Children.Select(x => x.Name).ToArray());

                        var generatedName = ShipNames.GenerateChannelName(used_names);
                        var channelName   = $"{channelSymbol} {generatedName}";

                        DiscordChannel created = null;

                        if (!Bot.ShipNamesStats.ContainsKey(generatedName)) // create a key-value pair for a new ship name
                        {
                            Bot.ShipNamesStats[generatedName] = new[] { 0, 0, 0 }
                        }
                        ;

                        if (e.Channel.Id == Bot.BotSettings.AutocreateSloop)
                        {
                            Bot.ShipNamesStats[generatedName][0]++;
                            created = await e.Guild.CreateVoiceChannelAsync(
                                channelName, autoCreateSloopCategory,
                                bitrate : Bot.BotSettings.Bitrate, user_limit : 2);
                        }
                        else if (e.Channel.Id == Bot.BotSettings.AutocreateBrigantine)
                        {
                            Bot.ShipNamesStats[generatedName][1]++;
                            created = await e.Guild.CreateVoiceChannelAsync(
                                channelName, autoCreateBrigantineCategory,
                                bitrate : Bot.BotSettings.Bitrate, user_limit : 3);
                        }
                        else
                        {
                            Bot.ShipNamesStats[generatedName][2]++;
                            created = await e.Guild.CreateVoiceChannelAsync(
                                channelName, autoCreateGalleongCategory,
                                bitrate : Bot.BotSettings.Bitrate, user_limit : 4);
                        }

                        FastShipStats.WriteToFile(Bot.ShipNamesStats, "generated/stats/ship_names.csv");

                        await member.PlaceInAsync(created);

                        client.Logger.LogInformation(BotLoggerEvents.Event, $"Участник {e.User.Username}#{e.User.Discriminator} ({e.User.Id}) создал канал через автосоздание." +
                                                     $" Каналов в категории: {created.Parent.Children.Count()}");
                    }
                }
            }
            catch (NullReferenceException) // исключение выбрасывается если пользователь покинул канал
            {
                // нам здесь ничего не надо делать, просто пропускаем
            }
        }