Ejemplo n.º 1
0
 public override void Initialize(GameDateTime current)
 {
     base.Initialize(current);
     this.Character.Name       = "蛮族_仁官";
     this.Character.Intellect  = 100;
     this.Character.Leadership = 40;
 }
Ejemplo n.º 2
0
 public SaveDataCollection(string fileName)
 {
     //if (string.isNullOrEmpty(fileName) || !Path.Exists(fileName))
     //{
     gameTime = new GameDateTime(0, 0);
     //}
 }
Ejemplo n.º 3
0
        public static bool CanNavigateToNext(this GameDateTime gameDateTime)
        {
            if (gameDateTime.Status != GameDateTimeStatus.Now)
            {
                return(false);
            }

            bool nothingOnToDo = gameDateTime.Matches != GameDateTimeEventStatus.ToDo &&
                                 gameDateTime.EndOfSeason != GameDateTimeEventStatus.ToDo;

            if (nothingOnToDo)
            {
                return(true);
            }

            bool thereAreMatchesButNotForTheManager = gameDateTime.EndOfSeason == GameDateTimeEventStatus.NotApplicable &&
                                                      gameDateTime.Matches == GameDateTimeEventStatus.ToDo &&
                                                      !gameDateTime.ManagerPlaysMatch;

            if (thereAreMatchesButNotForTheManager)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 4
0
        public MailShipping(int gols)
        {
            money    = gols;
            Type     = MailType.Gift;
            itemList = new List <IdCount>();
            GameDateTime gdt = Module <TimeManager> .Self.DateTime;
            GameDateTime morning;

            if (gdt.Hour >= 7)
            {
                gdt = gdt.AddDays(1);
            }
            morning = new GameDateTime(gdt.Year, gdt.Month, gdt.Day, 7, 0, 0);

            sendDateTicks = morning.Ticks;

            baseData = new Pathea.MailConfInfo
            {
                Title   = 103556,
                Content = new int[] { 100777 },
                Type    = (int)MailType.Gift,
            };
            typeof(MailItemBase).GetProperty("titleId").SetValue(this, baseData.Title, null);
            typeof(MailItemBase).GetProperty("contentId").SetValue(this, baseData.GetContent(), null);
            mailIcon = "Mail/Mail3";
        }
Ejemplo n.º 5
0
 public override void Initialize(GameDateTime current)
 {
     this.Character.Name      = "政務官_交易商";
     this.Character.Intellect = (short)(100 + current.Year / 3.3f);
     this.Character.Money     = 1000000;
     this.Character.Rice      = 1000000;
 }
Ejemplo n.º 6
0
        void RecvSetGameTime(IIPSocket conn, BitStream r)
        {
            var serverTimeBinary = r.ReadLong();
            var serverTime       = DateTime.FromBinary(serverTimeBinary);

            GameDateTime.SetServerTimeOffset(serverTime);
        }
Ejemplo n.º 7
0
 public override void Initialize(GameDateTime current)
 {
     this.Character.Name       = "政務官_集合官";
     this.Character.Popularity = (short)(100 + current.Year / 3.2f);
     this.Character.Money      = 1000000;
     this.Character.Rice       = 1000000;
 }
Ejemplo n.º 8
0
        public void SubtractOperatorTest()
        {
            var a = new GameDateTime(50);
            var b = new GameDateTime(25);

            Assert.AreEqual(new GameDateTime(25), a - b);
        }
Ejemplo n.º 9
0
 public override void Initialize(GameDateTime current)
 {
     base.Initialize(current);
     this.Character.Name       = "蛮族_武将";
     this.Character.Strong     = (short)(this.Character.Strong * 0.79f);
     this.Character.Leadership = 80;
 }
Ejemplo n.º 10
0
        private void GenerateWeeklyRecipes()
        {
            var gameDateTime   = new GameDateTime(Game1.timeOfDay, Game1.dayOfMonth, Game1.currentSeason, Game1.year);
            var startDayOfWeek = (((gameDateTime.DayOfMonth / 7) + 1) * 7) - 6;
            var seed           = int.Parse($"{startDayOfWeek}{gameDateTime.Season}{gameDateTime.Year}");
            var random         = new Random(seed);

            if (_seed == seed)
            {
                return;
            }
            _seed = seed;

            _thisWeeksRecipes = new List <CookingRecipe>();
            var maxNumberOfRecipesPerWeek = 5;
            var unknownRecipes            = _cookingRecipes.Where(x => !x.IsKnown).ToList();
            var unknownRecipesCount       = unknownRecipes.Count;

            if (unknownRecipesCount == 0)
            {
                ShowNoRecipes();
                return;
            }

            for (int i = 0; i < maxNumberOfRecipesPerWeek; i++)
            {
                var recipe = unknownRecipes[random.Next(unknownRecipesCount)];
                if (!_thisWeeksRecipes.Any(x => x.Name.Equals(recipe.Name)))
                {
                    _thisWeeksRecipes.Add(recipe);
                }
            }

            ShowWeeklyRecipes();
        }
Ejemplo n.º 11
0
 public override void Initialize(GameDateTime current)
 {
     this.Character.Name       = "農民_文官";
     this.Character.Intellect  = (short)Math.Max(current.ToInt() * 0.9f / 12 + 100, 100);
     this.Character.Leadership = 100;
     this.Character.Money      = 1000000;
     this.Character.Rice       = 1000000;
 }
Ejemplo n.º 12
0
        public void LessThanOperatorTest()
        {
            var less = new GameDateTime(100);
            var more = new GameDateTime(200);

            Assert.IsTrue(less < more);
            Assert.IsFalse(more < less);
        }
Ejemplo n.º 13
0
        public void GreaterThanOperatorTest()
        {
            var less = new GameDateTime(100);
            var more = new GameDateTime(200);

            Assert.IsFalse(less > more);
            Assert.IsTrue(more > less);
        }
Ejemplo n.º 14
0
 public override void Initialize(GameDateTime current)
 {
     this.Character.Religion  = RandomService.Next(new ReligionType[] { ReligionType.Buddhism, ReligionType.Confucianism, ReligionType.Taoism, });
     this.Character.Name      = "伝道師";
     this.Character.Intellect = (short)(100 + current.Year / 2.9f);
     this.Character.Money     = 1000000;
     this.Character.Rice      = 1000000;
 }
Ejemplo n.º 15
0
        public void ToFromMinutesTest()
        {
            const int minutes = 123123;
            var       gt      = new GameDateTime(minutes);

            Assert.AreEqual(minutes, (int)gt.TotalRealMinutes);
            Assert.AreEqual(gt, new GameDateTime((int)gt.TotalRealMinutes));
        }
Ejemplo n.º 16
0
        public void AddOperatorTest()
        {
            var a = new GameDateTime(50);
            var b = new GameDateTime(25);

            Assert.AreEqual(new GameDateTime(75), a + b);
            Assert.AreEqual(new GameDateTime(75), b + a);
        }
Ejemplo n.º 17
0
 public override void Initialize(GameDateTime current)
 {
     this.Character.Name       = "異民族_仁官";
     this.Character.Intellect  = (short)Math.Min(Math.Max(current.ToInt() * 1.4f / 12, 120), 240);
     this.Character.Popularity = 140;
     this.Character.Leadership = 30;
     this.Character.Money      = 99999999;
     this.Character.Rice       = 99999999;
 }
Ejemplo n.º 18
0
 public override void Initialize(GameDateTime current)
 {
     this.Character.Name       = "異民族_文官";
     this.Character.Strong     = 10;
     this.Character.Intellect  = (short)Math.Max(current.ToInt() * 0.8f / 12 + 60, 100);
     this.Character.Leadership = 90;
     this.Character.Money      = 99999999;
     this.Character.Rice       = 99999999;
 }
Ejemplo n.º 19
0
 public override void Initialize(GameDateTime current)
 {
     this.Character.Name       = "異民族_武将";
     this.Character.Strong     = (short)Math.Max(current.ToInt() * 0.87f / 12 + 60, 100);
     this.Character.Leadership = (short)Math.Min(current.ToInt() * 0.3f / 12 + 83, 150.0f);
     this.Character.Money      = 99999999;
     this.Character.Rice       = 99999999;
     this.Character.SkillPoint = 40 * 20;
 }
Ejemplo n.º 20
0
 public CharacterCache(Character chara)
 {
     this.Id                  = chara.Id;
     this.AliasId             = chara.AliasId;
     this.Name                = chara.Name;
     this.CountryId           = chara.CountryId;
     this.LastUpdated         = chara.LastUpdated;
     this.LastUpdatedGameDate = chara.LastUpdatedGameDate;
 }
Ejemplo n.º 21
0
        public void EqualsOperatorTest()
        {
            var a = new GameDateTime(512);
            var b = new GameDateTime(512);
            var c = new GameDateTime(312);

            Assert.IsTrue(a == b);
            Assert.IsTrue(b == a);
            Assert.IsFalse(a == c);
            Assert.IsFalse(b == c);
        }
Ejemplo n.º 22
0
        public void TimeOffsetTest()
        {
            var clientTime = DateTime.Now;

            var serverTime = new DateTime(clientTime.Year, clientTime.Month, clientTime.Day,
                                          clientTime.Hour - (clientTime.Hour <= 1 ? 0 : 1), clientTime.Minute, clientTime.Second);

            GameDateTime.SetServerTimeOffset(serverTime);

            Assert.AreEqual((clientTime.Hour <= 1 ? 0 : 1), Math.Round(GameDateTime.ServerTimeOffset.TotalHours));
        }
Ejemplo n.º 23
0
        public void GreaterThanOrEqualToOperatorTest()
        {
            var less  = new GameDateTime(100);
            var more  = new GameDateTime(200);
            var less2 = new GameDateTime(100);

            Assert.IsFalse(less >= more);
            Assert.IsTrue(more >= less);
            Assert.IsTrue(less >= less2);
            Assert.IsTrue(less2 >= less);
        }
Ejemplo n.º 24
0
    private void Start()
    {
        MM            = GetComponent <MenuManager>();
        InvUI         = InventoryUI.FindObjectOfType(typeof(InventoryUI)) as InventoryUI;
        currentScreen = GameStates.gameScreens.mainGame;
        mainCam       = Camera.main.transform;

        // Update Sprite Dictionary before loading the player data
        foreach (Item itemPot in allPotTypes)
        {
            spriteDictionary.Add(itemPot.itemProperties.itemID, itemPot.itemSprites);
        }

        foreach (Item itemPlant in allPlantTypes)
        {
            spriteDictionary.Add(itemPlant.itemProperties.itemID, itemPlant.itemSprites);
        }

        //Start Loading Player Data. Includes Updating GameDateTime
        GetComponent <XMLSaveLoad>().LoadGame();
        Debug.Log("Loading going to the next stage...");

        // If New Game, Do stuff...
        if (playerData.newGame)
        {
            NewGame();
        }

        // Update Currencies
        Currencies.OverrideFlorets(playerData.playerFlorets);
        Currencies.OverrideCrystals(playerData.playerCrystals);

        // Update WorldItems
        foreach (WorldItem wi in allWorldItemsInScene)
        {
            wi.UpdateWorldItemStats();
        }

        // Turn off PlacePoint Icons
        placePoints.AddRange(GameObject.FindObjectsOfType <PlacePoint>());
        foreach (PlacePoint p in placePoints)
        {
            p.HidePointer();
        }


        // TESTING DateTime stuff
        GameDateTime.LogCurrentDateTime();
        Debug.Log("Finished Updating DateTime");
    }
Ejemplo n.º 25
0
        public void EqualsTest()
        {
            var a = new GameDateTime(512);
            var b = new GameDateTime(512);
            var c = new GameDateTime(312);

            Assert.AreEqual(a, b);
            Assert.AreEqual(b, a);
            Assert.AreNotEqual(a, c);
            Assert.AreNotEqual(b, c);

            Assert.IsTrue(a.Equals(b));
            Assert.IsTrue(b.Equals(a));
            Assert.IsFalse(a.Equals(c));
            Assert.IsFalse(b.Equals(c));
        }
Ejemplo n.º 26
0
    public void SaveGame() // Called from Game Manager
    {
        Debug.Log("Saving...");
        GameDateTime.LogCurrentDateTime();

        pd = GetComponent <GameManager>().playerData;

        SaveCurrencies();
        SaveItems(GetComponent <GameManager>());
        SaveShop();
        SaveDelayedOrders();
        SaveTime();
        SaveXML(pd, saveFileName);

        SaveEmailsToJson();

        Debug.Log("Finished Saving at " + System.DateTime.Now.ToLongTimeString());
    }
Ejemplo n.º 27
0
    public void LoadPlayerData(PlayerData data) // Called from XMLSaveLoad
    {
        Debug.Log("Game Manager getting info from PlayerData");
        playerData = data;

        if (playerData.newGame == false)
        {
            Debug.Log("Checking saved inventory...");
            // Sort World Items from Inventory Items
            foreach (GameItem item in playerData.allGameItems)
            {
                if (item.inWorld)
                {
                    LoadItemToWorld(item);
                }
                else
                {
                    LoadItemToInventory(item);
                }
            }
            Debug.Log("Inventory and World Items Loaded");
        }


        // Get Time Since Last Play
        GameDateTime.SetRealTimeSinceLastPlay(playerData.newGame, playerData.savedMinuteOfYear, playerData.savedDayOfYear);

        // Load Emails now
        GetComponent <XMLSaveLoad>().LoadEmailsFromJSON();

        // Load Shop Items
        FindObjectOfType <Shop>().LoadItemsForSale(playerData.itemsInShop);


        // Load and Check Delayed Orders AFTER Realtime Since Last Play ONLY if this is NOT a new game
        if (playerData.newGame == false)
        {
            Debug.Log("Updating Undelivered Orders...");
            GetComponent <DelayedOrderManager>().AddListOfDelayedOrders(playerData.delayedOrdersUndelivered, GameDateTime.realTimeSinceLastPlay);
            Debug.Log("Undelivered Orders have been updated");
        }

        Debug.Log("Finished LoadPlayerData()");
    }
Ejemplo n.º 28
0
        public static async Task RequestResetAsync(MainRepository repo, uint unifiedCountryId)
        {
            var system = await repo.System.GetAsync();

            system.IsWaitingReset     = true;
            system.IsBattleRoyaleMode = false;

            var currentMonth   = system.CurrentMonthStartDateTime;
            var todayResetHour = new DateTime(currentMonth.Year, currentMonth.Month, currentMonth.Day, 20, 0, 0, 0);
            var resetHour      = todayResetHour.AddDays(currentMonth.Hour < 20 ? 1 : 2);
            var sinceResetTime = resetHour - currentMonth;
            var resetTurn      = (int)Math.Round(sinceResetTime.TotalMinutes / 10.0f);

            system.ResetGameDateTime = GameDateTime.FromInt(system.GameDateTime.ToInt() + resetTurn);

            await RecordHistoryAsync(repo, system, unifiedCountryId);

            await StatusStreaming.Default.SendAllAsync(ApiData.From(system));
        }
        /// <summary>
        /// 指定した武将の指定した年月のコマンドを取得する
        /// </summary>
        /// <returns>コマンド</returns>
        /// <param name="characterId">武将ID</param>
        /// <param name="month">取得する年月</param>
        public async Task <Optional <CharacterCommand> > GetAsync(uint characterId, GameDateTime month)
        {
            var monthInt = month.ToInt();

            try
            {
                var newest = await this.container.Context.CharacterCommands
                             .Where(c => c.CharacterId == characterId && c.IntGameDateTime == monthInt)
                             .GroupJoin(this.container.Context.CharacterCommandParameters,
                                        c => c.Id,
                                        cp => cp.CharacterCommandId,
                                        (c, cps) => c.SetParameters(cps))
                             .FirstOrDefaultAsync()
                             .ToOptionalAsync();

                return(newest);
            }
            catch (Exception ex)
            {
                this.container.Error(ex);
                return(default);
Ejemplo n.º 30
0
        public override async Task ExecuteAsync(MainRepository repo, Character character, IEnumerable <CharacterCommandParameter> options, CommandSystemData game)
        {
            var isRegularly = options.Any(p => p.Type == CharacterCommandParameterTypes.Regularly);

            var itemTypeOptional = options.FirstOrDefault(p => p.Type == 1);

            if (itemTypeOptional == null || itemTypeOptional.NumberValue == null)
            {
                await game.CharacterLogAsync("アイテム生産のパラメータが不正です。<emerge>管理者にお問い合わせください</emerge>");

                return;
            }
            var itemType = (CharacterItemType)itemTypeOptional.NumberValue;

            var delays = await repo.DelayEffect.GetAllAsync();

            if (delays.Any(d => d.CharacterId == character.Id && d.Type == DelayEffectType.GenerateItem))
            {
                if (!isRegularly)
                {
                    await game.CharacterLogAsync($"アイテム生産しようとしましたが、複数のアイテムを同時に生産することはできません");
                }
                return;
            }

            var infoOptional = CharacterItemInfoes.Get(itemType);

            if (!infoOptional.HasData)
            {
                await game.CharacterLogAsync($"ID: {(short)itemType} のアイテムは存在しません。<emerge>管理者にお問い合わせください</emerge>");

                return;
            }
            var info = infoOptional.Data;

            var generateInfo = GenerateItemInfo.GetInfo(character, itemType);

            if (generateInfo == null)
            {
                await game.CharacterLogAsync("アイテム生産の情報が不正です。<emerge>管理者にお問い合わせください</emerge>");

                return;
            }

            var money = info.IsResource ? info.MoneyPerResource * info.DefaultResource / 16 : info.Money / 16;

            if (character.Money < money)
            {
                await game.CharacterLogAsync("アイテム生産しようとしましたが、金が足りません。<num>" + money + "</num> 必要です");

                return;
            }

            var townOptional = await repo.Town.GetByIdAsync(character.TownId);

            if (townOptional.HasData)
            {
                var country = await repo.Country.GetByIdAsync(character.CountryId);

                var town = townOptional.Data;
                if (town.CountryId != character.CountryId && country.HasData && !country.Data.HasOverthrown)
                {
                    await game.CharacterLogAsync($"<town>{town.Name}</town> でアイテム生産しようとしましたが、自国の都市ではありません");

                    return;
                }

                character.Money -= money;
                var delay = new DelayEffect
                {
                    CharacterId        = character.Id,
                    CountryId          = character.CountryId,
                    AppearGameDateTime = game.GameDateTime,
                    Type     = DelayEffectType.GenerateItem,
                    TypeData = (int)itemType,
                };
                await repo.DelayEffect.AddAsync(delay);

                await repo.SaveChangesAsync();

                await StatusStreaming.Default.SendCharacterAsync(ApiData.From(delay), character.Id);

                var finish = GameDateTime.FromInt(game.GameDateTime.ToInt() + generateInfo.Length);
                generateInfo.AddExAttribute(character);
                if (!isRegularly)
                {
                    character.Contribution += generateInfo.Contribution;
                    character.SkillPoint++;
                }
                await game.CharacterLogAsync($"<town>{town.Name}</town> で <num>{money}</num> を投し、{info.Name} の生産を開始しました。結果は <num>{finish.Year}</num> 年 <num>{finish.Month}</num> 月に来ます");
            }
            else
            {
                await game.CharacterLogAsync("ID:" + character.TownId + " の都市は存在しません。<emerge>管理者にお問い合わせください</emerge>");
            }
        }
Ejemplo n.º 31
0
        public void DrawDayNight(double lightness, GameDateTime gameDateTime, List<BurningProps> lightObjects)
        {
            var drawingGroup = new DrawingGroup();

            // Create a DrawingBrush.
            DrawingBrush myDrawingBrush = new DrawingBrush();

            // Create a drawing.
            GeometryDrawing myBlackDrawing = new GeometryDrawing();
            // myGeometryDrawing.Brush
            myBlackDrawing.Brush = Brushes.Black;
            myBlackDrawing.Pen = new Pen(Brushes.Black, 1);
            GeometryGroup rectangle = new GeometryGroup();
            rectangle.FillRule = FillRule.EvenOdd;
            rectangle.Children.Add(new RectangleGeometry(new System.Windows.Rect() { Height = _canvas.Height, Width = _canvas.Width }));

            GeometryGroup rectangle11 = new GeometryGroup();
            rectangle11.FillRule = FillRule.Nonzero;
            foreach (var lightObject in lightObjects)
            {
                rectangle11.Children.Add(
                    new EllipseGeometry(new System.Windows.Point(lightObject.Point.X + 10, lightObject.Point.Y + 10),
                        20 * lightObject.LightRadius, 20 * lightObject.LightRadius));
            }
            rectangle.Children.Add(rectangle11);
            var combined = new CombinedGeometry(GeometryCombineMode.Exclude, rectangle, rectangle11);
            myBlackDrawing.Geometry = combined;

            drawingGroup.Children.Add(myBlackDrawing);
            myDrawingBrush.Drawing = drawingGroup;
            Rectangle rec = new Rectangle()
            {
                Fill = myDrawingBrush,
                Stroke = Brushes.Black,
                Height = _canvas.Height,
                Width = _canvas.Width,
                Opacity = lightness,
                IsEnabled = false
            };

            _canvas.Children.Add(rec);
            Canvas.SetLeft(rec, 0);
            Canvas.SetTop(rec, 0);

            _ListBoxDateTime.Items.Clear();
            _ListBoxDateTime.Items.Add(string.Format("{0}:{1}:{2}", gameDateTime.Day, gameDateTime.Hour, gameDateTime.Minute));
        }