internal bool SetOffer(int index, bool accept)
        {
            MyOffer offer = Offer(index);

            if (offer is null)
            {
                return(false);
            }
            offer.Confirm = accept ? (true, true) : (false, false);
            return(true);
        }
예제 #2
0
        static public void Load()
        {
            try
            {
                Console.WriteLine($"{DateTime.Now}: Начат процесс загрузки…");
                MyBotSettings.Load();
                ImmutableList <MyPlayer> .Builder  playersBuilder  = ImmutableList.CreateBuilder <MyPlayer>();
                ImmutableList <MyFaction> .Builder factionsBuilder = ImmutableList.CreateBuilder <MyFaction>();
                ImmutableList <MySector> .Builder  sectorsBuilder  = ImmutableList.CreateBuilder <MySector>();
                ImmutableList <MyPolitic> .Builder politicsBuilder = ImmutableList.CreateBuilder <MyPolitic>();
                ImmutableList <AMyFight> .Builder  fightsBuilder   = ImmutableList.CreateBuilder <AMyFight>();
                ImmutableList <MyOffer> .Builder   offersBuilder   = ImmutableList.CreateBuilder <MyOffer>();
                ImmutableList <MyScript> .Builder  scriptsBuilder  = ImmutableList.CreateBuilder <MyScript>();
                ImmutableList <MyTimer> .Builder   timersBuilder   = ImmutableList.CreateBuilder <MyTimer>();

                Parallel.Invoke(() => Parallel.ForEach(Directory.GetFiles(SavePathPlayers), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        MyPlayer player = (MyPlayer)MyPlayerSerializer.ReadObject(stream);
                        lock (playersBuilder)
                        {
                            playersBuilder.Add(player);
                        }
                    }
                }), () => Parallel.ForEach(Directory.GetFiles(SavePathFactions), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        MyFaction faction = (MyFaction)MyFactionSerializer.ReadObject(stream);
                        lock (factionsBuilder)
                        {
                            factionsBuilder.Add(faction);
                        }
                    }
                }), () => Parallel.ForEach(Directory.GetFiles(SavePathSectors), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        MySector sector = (MySector)MySectorSerializer.ReadObject(stream);
                        lock (sectorsBuilder)
                        {
                            sectorsBuilder.Add(sector);
                        }
                    }
                }), () => Parallel.ForEach(Directory.GetFiles(SavePathPolitics), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        MyPolitic pol = (MyPolitic)MyPoliticSerializer.ReadObject(stream);
                        lock (politicsBuilder)
                        {
                            politicsBuilder.Add(pol);
                        }
                    }
                }), () => Parallel.ForEach(Directory.GetFiles(SavePathFights), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        AMyFight fight;
                        if (item.Contains("@S"))
                        {
                            fight = (MySectorFight)MySectorFightSerializer.ReadObject(stream);
                        }
                        else if (item.Contains("@T"))
                        {
                            fight = (MyTradeShipFight)MyTradeShipFightSerializer.ReadObject(stream);
                        }
                        else if (item.Contains("@C"))
                        {
                            fight = (MyCustomFight)MyCustomFightSerializer.ReadObject(stream);
                        }
                        else
                        {
                            throw new FileLoadException("Неизвестный тип боя", item);
                        }

                        lock (fightsBuilder)
                        {
                            fightsBuilder.Add(fight);
                        }
                    }
                }), () => Parallel.ForEach(Directory.GetFiles(SavePathOffers), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        MyOffer offer = (MyOffer)MyOfferSerializer.ReadObject(stream);
                        lock (offersBuilder)
                        {
                            offersBuilder.Add(offer);
                        }
                    }
                }), () => Parallel.ForEach(Directory.GetFiles(SavePathScripts), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        MyScript scr = (MyScript)MyScriptSerializer.ReadObject(stream);
                        lock (scriptsBuilder)
                        {
                            scriptsBuilder.Add(scr);
                        }
                    }
                }), () => Parallel.ForEach(Directory.GetFiles(SavePathTimers), item =>
                {
                    using (FileStream stream = File.OpenRead(item))
                    {
                        MyTimer timer = (MyTimer)MyTimerSerializer.ReadObject(stream);
                        lock (timersBuilder)
                        {
                            timersBuilder.Add(timer);
                        }
                    }
                }));

                playersBuilder.Sort();
                factionsBuilder.Sort();
                sectorsBuilder.Sort();
                Players  = playersBuilder.ToImmutable();
                Factions = factionsBuilder.ToImmutable();
                Sectors  = sectorsBuilder.ToImmutable();
                Politics = politicsBuilder.ToImmutable();
                Fights   = fightsBuilder.ToImmutable();
                Offers   = offersBuilder.ToImmutable();
                Scripts  = scriptsBuilder.ToImmutable();
                Timers   = timersBuilder.ToImmutable();
                Console.WriteLine($"{DateTime.Now}: Загрузка завершена");
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"{DateTime.Now}: Исключение во время попытки загрузки: {e.Message}\r\n{e.StackTrace}");
                Console.ForegroundColor = ConsoleColor.Green;
            }
        }
예제 #3
0
 public MyEventOfferCreated(MyOffer offer) : base(false) => Offer = offer;