public void UpdatePlayerMatchResult_ValidData_NormalResponse(int accountId, int place, int matchId) { //Arrange var warship = new Warship { Id = 1, AccountId = accountId, CurrentSkinTypeId = SkinTypeEnum.Hare, WarshipTypeId = WarshipTypeEnum.Hare }; var account = new Account { Id = accountId, ServiceId = "", Username = "", Warships = new List <Warship> { warship } }; var matchResult = new MatchResult { Id = 1, MatchId = matchId, Warship = warship }; var match = new DataLayer.Tables.Match { Id = matchId, GameServerIp = "", MatchResults = new List <MatchResult> { matchResult } }; DbContext.Accounts.Add(account); DbContext.Matches.Add(match); DbContext.SaveChanges(); var service = GetSetUpService(); //Act var result = service.UpdatePlayerMatchResultInDbAsync(accountId, place, matchId).Result; //Assert Assert.IsTrue(result, "Method returned false."); Assert.IsTrue(matchResult.IsFinished, "Match result was not marked as finished."); Assert.AreEqual(place, matchResult.PlaceInMatch, "Incorrect place in match."); Assert.AreEqual(accountId, matchResult.Transaction.AccountId, "Incorrect account id."); }
public void UpdatePlayerMatchResult_WrongData_Exception(int accountId, int place, int matchId) { //Arrange var warship = new Warship { Id = 1, AccountId = 1, CurrentSkinTypeId = SkinTypeEnum.Hare, WarshipTypeId = WarshipTypeEnum.Hare }; var account = new Account { Id = 1, ServiceId = "", Username = "", Warships = new List <Warship> { warship } }; var matchResult = new MatchResult { Id = 1, MatchId = 1, Warship = warship }; var match = new DataLayer.Tables.Match { Id = 1, GameServerIp = "", MatchResults = new List <MatchResult> { matchResult } }; DbContext.Accounts.Add(account); DbContext.Matches.Add(match); DbContext.SaveChanges(); var service = GetSetUpService(); //Act service.UpdatePlayerMatchResultInDbAsync(accountId, place, matchId).Wait(); //Assert Assert.Fail("Exception was not raised."); }
public void FinishMatchAndWriteToDb_ValidData_NormalResponse() { //Arrange var match = new DataLayer.Tables.Match { Id = 1, GameServerIp = "", MatchResults = new List <MatchResult>(10) }; for (var i = 1; i <= 10; i++) { var account = new Account { Id = i, ServiceId = i.ToString(), Username = i.ToString() }; var warship = new Warship { Id = i, Account = account, CurrentSkinTypeId = SkinTypeEnum.Hare, WarshipTypeId = WarshipTypeEnum.Hare }; match.MatchResults.Add(new MatchResult { Id = i, Match = match, Warship = warship }); } DbContext.Matches.Add(match); DbContext.SaveChanges(); var service = GetSetUpService(); //Act service.FinishMatchAndWriteToDbAsync(match.Id).Wait(); //Assert Assert.IsTrue(match.MatchResults.All(r => r.IsFinished), "Match was not finished."); }
/// <summary> /// 布局蓝图的MOD部分 /// </summary> /// <param name="tid">蓝图的TID</param> /// <param name="materialNode">MOD节点</param> private void LayoutBlueprintModList(uint tid, Transform modNode) { CfgEternityProxy cfg = GetConfig(); Produce produce = cfg.GetProduceByKey(tid); Item item = cfg.GetItemByKey((uint)produce.ProductId); Category itemType = ItemTypeUtil.GetItemType(item.Type).MainType; int modCount = 0; if (itemType == Category.Warship) { Warship ship = cfg.GetWarshipByKey(item.Id); ModPosition modPosCfg = cfg.GetModPosition((uint)ship.ModPosition); modCount = modPosCfg.PositionsLength; } else if (itemType == Category.Weapon) { Weapon weapon = cfg.GetWeapon(item.Id); ModPosition modPosCfg = cfg.GetModPosition((uint)weapon.ModPosition); modCount = modPosCfg.PositionsLength; } LayoutModList(new int[modCount], modNode); }
public static void SetupWarship(ref Warship setupWarship, int soldierAmount, int warshipDistance) { var totalDistance = 0.0; for (var i = 0; i < setupWarship.AmountOfTrips(soldierAmount); i++) { totalDistance += setupWarship.Swim(warshipDistance); } setupWarship.TotalFuelConsumption = totalDistance * setupWarship.FuelConsumption / 100; }
public static string OptimalVehicleCalculator(Tank checkTank, Warship checkWarship, Amfibia checkAmfibia) { if (checkTank.TotalFuelConsumption < checkWarship.TotalFuelConsumption && checkTank.TotalFuelConsumption < checkAmfibia.TotalFuelConsumption) { return($"\nTank is the optimal vehicle with {checkTank.TotalFuelConsumption}L used"); } if (checkWarship.TotalFuelConsumption < checkAmfibia.TotalFuelConsumption) { return($"\nWarship is the optimal vehicle with {checkWarship.TotalFuelConsumption}L used"); } return($"\nAmfibia is the optimal vehicle with {checkAmfibia.TotalFuelConsumption}L used"); }
public Warship BuildWarship(string name) { Warship warship = _factory.CreateWarship(name); if (warship == null) { return(null); } warship.Swim(); warship.Shoot(); warship.Reload(); warship.Repair(); return(warship); }
public async Task <bool> TryChange(string playerServiceId, int warshipId, string skinName) { //Корабль принаджлежит аккаунту? Warship warship = await dbContext.Warships .Include(warship1 => warship1.Account) .Where(warship1 => warship1.Id == warshipId && warship1.Account.ServiceId == playerServiceId) .SingleOrDefaultAsync(); if (warship == null) { return(false); } //У аккаунта куплен этот скин? SkinType skinType = await dbContext.Increments .Include(increment => increment.Transaction) .Include(increment => increment.SkinType) .Where(increment => increment.IncrementTypeId == IncrementTypeEnum.Skin && increment.Transaction.AccountId == warship.AccountId && increment.WarshipId == warshipId && increment.SkinType.Name == skinName) .Select(increment => increment.SkinType) .SingleOrDefaultAsync(); bool isSkinBought = skinType != null; if (!isSkinBought) { return(false); } warship.CurrentSkinTypeId = skinType.Id; await dbContext.SaveChangesAsync(); return(true); }
public IEnumerator TestFire_2WarShips_2ShipsFighting() { SceneManager.LoadScene("MainMenuScene"); yield return(new WaitForSeconds(1)); MainMenuSceneInit initializer = GameObject.Find("Initializer").GetComponent <MainMenuSceneInit>(); initializer.ChangeScene("NewGameMapScene"); yield return(new WaitForSeconds(1)); GameApp gameApp = GameObject.Find("GameApp").GetComponent <GameApp>(); gameApp.PersistAllParameters(SceneManager.GetActiveScene().name); gameApp.Parameters.Remove("ServerAddress"); gameApp.Parameters.Remove("ServerPort"); gameApp.Parameters.Add("ServerAddress", "127.0.0.1"); gameApp.Parameters.Add("ServerPort", "9999"); LevelLoader levelLoader = GameObject.Find("LevelLoader").GetComponent <LevelLoader>(); levelLoader.LoadLevel("NewGameScene"); yield return(new WaitForSeconds(1)); NewGameSceneInit newGameSceneInit = GameObject.Find("Initializer").GetComponent <NewGameSceneInit>(); newGameSceneInit.AddPlayer(); newGameSceneInit.AddPlayer(); List <GameApp.PlayerMenu> playerMenuList = new List <GameApp.PlayerMenu>(); GameApp.PlayerMenu player1 = new GameApp.PlayerMenu { name = "player1", password = "******", race = "human", playerType = "L" }; GameApp.PlayerMenu player2 = new GameApp.PlayerMenu { name = "player12", password = "******", race = "human", playerType = "L" }; playerMenuList.Add(player1); playerMenuList.Add(player2); gameApp.SavePlayersFromMenu(playerMenuList); ServerNetworkManager serverNetworkManager = GameObject.Find("ServerNetworkManager").GetComponent <ServerNetworkManager>(); serverNetworkManager.SetupNewGame(); yield return(new WaitForSeconds(1)); GameController gameController = GameObject.Find("GameController").GetComponent <GameController>(); GameObject gameObjectKorriban = GameObject.Find("Korriban"); GameObject gameObjectWarShip = Resources.Load("Object/Warship", typeof(GameObject)) as GameObject; Planet Korriban = gameObjectKorriban.GetComponent <Planet>(); gameController.GetCurrentPlayer().minerals = 100; gameController.GetCurrentPlayer().population = 100; gameController.GetCurrentPlayer().solarPower = 100; EventManager.selectionManager.SelectedObject = gameObjectKorriban; yield return(new WaitForSeconds(1)); gameController.BuildSpaceship(gameObjectWarShip); yield return(new WaitForSeconds(1)); GameObject gameObjectWarshipSpaceShip1 = GameObject.Find("Warship(Clone)"); Warship warShip1 = gameObjectWarshipSpaceShip1.GetComponent <Warship>(); gameController.GetCurrentPlayer().engines = 100; warShip1.actionPoints = 100; gameController.GetCurrentPlayer().attack = 100; gameController.NextTurn(); yield return(new WaitForSeconds(1)); gameController.GetCurrentPlayer().minerals = 100; gameController.GetCurrentPlayer().population = 100; gameController.GetCurrentPlayer().solarPower = 100; GameObject noVa = GameObject.Find("Nova"); EventManager.selectionManager.SelectedObject = noVa; yield return(new WaitForSeconds(1)); gameController.BuildSpaceship(gameObjectWarShip); yield return(new WaitForSeconds(1)); GameObject gameObjectWarshipSpaceShip2 = GameObject.Find("Warship(Clone)"); Warship warShip2 = gameObjectWarshipSpaceShip2.GetComponent <Warship>(); gameController.NextTurn(); yield return(new WaitForSeconds(1)); HexGrid grid = (GameObject.Find("HexGrid").GetComponent <HexGrid>()); EventManager.selectionManager.SelectedObject = gameObjectWarshipSpaceShip1; yield return(new WaitForSeconds(1)); HexCoordinates des = new HexCoordinates(warShip2.Coordinates.X - 1, warShip2.Coordinates.Z); grid.TouchCell(des); yield return(new WaitForSeconds(10)); EventManager.selectionManager.TargetObject = gameObjectWarshipSpaceShip2; yield return(new WaitForSeconds(1)); gameController.Attack(); yield return(new WaitForSeconds(2)); Assert.IsTrue(gameObjectWarshipSpaceShip2 == null); }
public void UpdatePlayerMatchResult_RewardCalculations_NormalResponse(int lootboxReward, int softCurrencyReward, int ratingReward) { //Arrange var warship = new Warship { Id = 1, AccountId = 1, CurrentSkinTypeId = SkinTypeEnum.Hare, WarshipTypeId = WarshipTypeEnum.Hare }; var account = new Account { Id = 1, ServiceId = "", Username = "", Warships = new List <Warship> { warship } }; var matchResult = new MatchResult { Id = 1, MatchId = 1, Warship = warship }; var match = new DataLayer.Tables.Match { Id = 1, GameServerIp = "", MatchResults = new List <MatchResult> { matchResult } }; DbContext.Accounts.Add(account); DbContext.Matches.Add(match); DbContext.SaveChanges(); var service = GetSetUpService(lootboxReward, softCurrencyReward, ratingReward); //Act var result = service.UpdatePlayerMatchResultInDbAsync(1, 1, 1).Result; //Assert var transaction = matchResult.Transaction; Assert.IsTrue(result, "Method returned false."); Assert.IsFalse(transaction.WasShown, "Transaction was shown."); var increments = transaction.Increments; var decrements = transaction.Decrements; Assert.IsTrue(increments.All(i => i.MatchRewardTypeId == MatchRewardTypeEnum.RankingReward), "Incorrect reward type."); CheckReward(lootboxReward, IncrementTypeEnum.LootboxPoints, DecrementTypeEnum.LootboxPoints, "lootbox"); CheckReward(softCurrencyReward, IncrementTypeEnum.SoftCurrency, DecrementTypeEnum.SoftCurrency, "soft currency"); CheckReward(ratingReward, IncrementTypeEnum.WarshipRating, DecrementTypeEnum.WarshipRating, "rating", true); void CheckReward(int expectedReward, IncrementTypeEnum incrementType, DecrementTypeEnum decrementType, string rewardName, bool canHaveDecrement = false) { var increment = increments.SingleOrDefault(i => i.IncrementTypeId == incrementType); var decrement = decrements.SingleOrDefault(d => d.DecrementTypeId == decrementType); // ReSharper disable PossibleNullReferenceException if (expectedReward > 0) { Assert.AreEqual(expectedReward, increment.Amount, $"Incorrect {rewardName} increment."); Assert.IsNull(decrement, $"The {rewardName} decrement was not null."); } else if (expectedReward < 0 && canHaveDecrement) { Assert.IsNull(increment, $"The {rewardName} increment was not null."); Assert.AreEqual(-expectedReward, decrement.Amount, $"Incorrect {rewardName} decrement."); } else { Assert.IsNull(increment, $"The {rewardName} increment was not null."); Assert.IsNull(decrement, $"The {rewardName} decrement was not null."); } // ReSharper restore PossibleNullReferenceException } }
static void Main(string[] args) { WarShip NavePlayer = new WarShip("Bob Nelson", 100, 30, 1, 10, 10, false); CargoShip NavePlayerCena2 = new CargoShip("Bob Nelson", 200, 30, 1, 10, 10); WarShip NaveInimigo1 = new WarShip("inimigoTeste1", 100, 1, 1, 15, 20, true); WarShip NaveInimigo2 = new WarShip("inimigoTeste2", 100, 1, 1, 10, 20, true); WarShip NaveInimigo3 = new WarShip("inimigoTeste3", 100, 1, 1, 5, 20, true); WarShip [] NavesEmJogo = new Warship[] { NavePlayer, NaveInimigo1, NaveInimigo2, NaveInimigo3 }; int cena = 1; int delayTiro = 1; int delayMeteoros = 1; bool verificarDanos = false; bool atirou = false; int ação = 0; List <Projetil> ListaTiros = new List <Projetil>(); List <Meteoro> ListaMeteoros = new List <Meteoro>(); ListaMeteoros.Add(new Meteoro(10, 0, NavePlayer.Posição[1] - 1)); string[,] Campo; Campo = new string[20, 20]; while (NavePlayer.Energia > 0) { DelimitarEspaço(); if (atirou) { AtirarPlayer(); atirou = false; } Colisoes(); DeterminarEspaços(); DesenharEspaço(); FimDeJogo(); foreach (Projetil elemento in ListaTiros) { elemento.MovimentaçãoTiro(); } foreach (Meteoro elementoMeteoro in ListaMeteoros) { elementoMeteoro.Posição[0] += 1; } ação = int.Parse(Console.ReadLine()); switch (ação) { case 5: if (cena == 1) { atirou = true; } break; case 0: verificarDanos = true; break; case 8: NavePlayer.MoverCima(); NavePlayer.LimitarEspaço(); break; case 2: NavePlayer.MoverBaixo(); NavePlayer.LimitarEspaço(); break; case 6: NavePlayer.MoverDireita(); NavePlayer.LimitarEspaço(); break; case 4: NavePlayer.MoverEsquerda(); NavePlayer.LimitarEspaço(); break; } AtirarInimigo(); CriarMeteoros(); Console.Clear(); } while (NavePlayer.Energia > 0) { } Console.Read(); void DesenharEspaço() { for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { Console.Write(Campo[i, j]); } Console.WriteLine(""); } if (verificarDanos == true) { Console.WriteLine($"{NavePlayer.VerificarDanos()}\n(5)Ataque\n(0)Dano\n(8)Cima\n(2)Baixo\n" + "(6)Direira\n(4)Esquerda\n"); verificarDanos = false; } else { Console.WriteLine("\n(5)Ataque\n(0)Dano\n(8)Cima\n(2)Bbaixo\n" + "(6)Direita\n(4)Esquerda\n"); } } void DelimitarEspaço() { for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { Campo[i, j] = " "; } } } void DeterminarEspaços() { foreach (Warship Naves in NavesEmJogo) { for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { if (Naves.Posição[0] == i + 1 && Naves.Posição[1] == j + 1) { if (Naves.EInimigo == true && Naves.Vivo == true) { Campo[i, j] = "<=E "; } else if (Naves.EInimigo == false && Naves.Vivo == true) { Campo[i, j] = "B=> "; } else { } } if (ListaTiros.Count > 0) { foreach (Projetil elemento in ListaTiros) { if (elemento.Posição[0] == i && elemento.Posição[1] == j) { if (elemento.VeldeTiro > 0) { Campo[i, j] = "* "; } else { Campo[i, j] = "- "; } } } } if (ListaMeteoros.Count > 0) { foreach (Meteoro elementoAsteroide in ListaMeteoros) { if (elementoAsteroide.Posição[0] == i && elementoAsteroide.Posição[1] == j) { Campo[i, j] = "O "; } } } } } } } void AtirarPlayer() { atirou = true; ListaTiros.Add(new Projetil(10, 1, NavePlayer.Posição[0] - 1, NavePlayer.Posição[1])); } void AtirarInimigo() { foreach (Nave elementoNave in NavesEmJogo) { if (elementoNave.EInimigo && elementoNave.Vivo && delayTiro >= 5) { ListaTiros.Add(new Projetil(10, -1, elementoNave.Posição[0] - 1, elementoNave.Posição[1] - 2)); delayTiro = 0; } delayTiro += 1; } } void Colisoes() { foreach (Projetil elementoTiro in ListaTiros) { foreach (Nave elementoNave in NavesEmJogo) { if (elementoTiro.Posição[0] + 1 == elementoNave.Posição[0] && elementoTiro.Posição[1] + 1 == elementoNave.Posição[1]) { elementoNave.LevarDano(elementoTiro.ForcaTiro); } } } foreach (Meteoro elementoMeteoro in ListaMeteoros) { if (elementoMeteoro.Posição[0] + 1 == NavePlayer.Posição[0] && elementoMeteoro.Posição[1] + 1 == NavePlayer.Posição[1]) { NavePlayer.LevarDano(elementoMeteoro.Dano); } } } void FimDeJogo() { if (NavePlayer.Vivo == false || NavePlayer.NivelCombustivel <= 0) { Console.Clear(); Console.WriteLine("A carga foi perdida. Fim de Jogo."); Console.ReadLine(); Environment.Exit(0); } else if (NaveInimigo1.Vivo == false && NaveInimigo2.Vivo == false && NaveInimigo3.Vivo == false) { Console.Clear(); Console.WriteLine("Bob Nelson passou pela armadilha dos piratas do espaço e entregou a carga. Fim de Jogo."); Console.ReadLine(); Environment.Exit(0); } else { return; } } void CriarMeteoros() { if (delayMeteoros >= 5) { ListaMeteoros.Add(new Meteoro(10, 0, NavePlayer.Posição[1] - 1)); delayMeteoros = 0; } else { delayMeteoros += 1; } } }
static void Main(string[] args) { #region Strategy Console.WriteLine("------------Strategy------------------"); Console.WriteLine("\r\n ------Strategy Test"); { CashNormal cn = new CashNormal(); Context ct = new Context(cn); ct.PayAmount(100); CashDiscount cd = new CashDiscount(0.1); ct = new Context(cd); ct.PayAmount(100); CashReturn cr = new CashReturn(300, 100); ct = new Context(cr); ct.PayAmount(400); } #endregion #region Observer Console.WriteLine("------------Observer------------------"); Console.WriteLine("\r\n ------Observer Test"); SydneyStock ss = new SydneyStock(); StockObserver ob1 = new StockObserver(); ss.Register(ob1); ss.Notify(100); ss.Register(new StockObserver()); ss.Notify(200); ss.Unregister(ob1); ss.Notify(300); #endregion #region Factory Console.WriteLine("------------Factory------------------"); Console.WriteLine("\r\n ------Factory Test"); WarshipFactory wf = new WarshipFactory(); String s = "A"; Warship ws = wf.GetWarship(s); if (ws != null) { ws.Fight(); } s = "B"; ws = wf.GetWarship(s); if (ws != null) { ws.Fight(); } #endregion #region Abstract Factory Console.WriteLine("------------Abstract Factory------------------"); Console.WriteLine("\r\n ------Abstract Factory Test"); IRestaurant ir = new ChineseRestaurant(); IVegetable iv = ir.CookVegetable(); iv.Display(); IMeat im = ir.CookMeat(); im.Display(); ir = new AustralianRestaurant(); iv = ir.CookVegetable(); iv.Display(); im = ir.CookMeat(); im.Display(); #endregion #region Singleton Console.WriteLine("------------Singleton------------------"); Console.WriteLine("\r\n ------Singleton Test"); MySingleton ms1 = MySingleton.GetInstance(); MySingleton ms2 = MySingleton.GetInstance(); if (ms1 == ms2) { Console.WriteLine("Same Instance of Singleton"); } #endregion #region Builder Console.WriteLine("------------Builder------------------"); Console.WriteLine("\r\n ------Builder Test"); { IPersonBuilder pb = new FatPersonBuilder(); PersonBuilderDirector pbd = new PersonBuilderDirector(pb); pbd.BuildPerson(); pbd = new PersonBuilderDirector(new ThinPersonBuilder()); pbd.BuildPerson(); } #endregion #region AdvanceBuilder Console.WriteLine("\r\n ------AdvanceBuilder Test"); { PersonBuilderDirectorBase pbd = new PersonBuilderDirector1(); pbd.SetPersonBuilder(new FatPersonBuilder()); pbd.BuildPerson(); pbd.SetPersonBuilder(new ThinPersonBuilder()); pbd.BuildPerson(); Console.WriteLine(); pbd = new PersonBuilderDirector2(); pbd.SetPersonBuilder(new FatPersonBuilder()); pbd.BuildPerson(); pbd.SetPersonBuilder(new ThinPersonBuilder()); pbd.BuildPerson(); } #endregion #region Prototype Console.WriteLine("------------Prototype------------------"); Resume r1 = new Resume(); r1.id = 1; r1.Name = "P1"; r1.Experience.Company = "C1"; Console.WriteLine(r1); Resume r2 = (Resume)r1.Clone(); r2.id = 2; r2.Name = "P2"; r2.Experience.Company = "C2"; Console.WriteLine(r2); #endregion #region Decorator Console.WriteLine("------------Decorator------------------"); Pizza pp = new PlainPizza(); ToppingPizza tp = new Mozzarella(pp); ToppingPizza ts = new TomatoSauce(tp); ts.GetDescription(); #endregion #region Command Console.WriteLine("------------Command------------------"); Cook barbecuerCook = new BarbecuerCook(); Cook fryDishCook = new FryDishCook(); Command.Command barbecuerCommand = new BarbecuerCommand(barbecuerCook); Command.Command fryDishCommand = new FryDishCommand(fryDishCook); Waiter waiter = new Waiter(); waiter.AddCommand(barbecuerCommand); waiter.AddCommand(fryDishCommand); waiter.Notify(); #endregion #region Adapter Console.WriteLine("------------Adapter------------------"); BasketballPlayer bp1 = new Forward(); BasketballPlayer bp2 = new Guard(); ChineseCenter cc = new ChineseCenter(); BasketballPlayer bp3 = new CenterInterPreter(cc); List <BasketballPlayer> bps = new List <BasketballPlayer>(); bps.Add(bp1); bps.Add(bp2); bps.Add(bp3); foreach (var item in bps) { item.Attack(); item.Defense(); } #endregion #region Facade Console.WriteLine("------------Facade------------------"); FundFacade ff = new FundFacade(); ff.Buy(); ff.Sell(); #endregion #region Bridge { Console.WriteLine("------------Bridge---------------------"); IProtocol udp = new Bridge.Udp(); IProtocol tcp = new Bridge.Tcp(); Communication c = new Communication(); c.SetProtocol(udp); c.Work(); c.SetProtocol(tcp); c.Work(); } #endregion #region Template { Console.WriteLine("------------Template-----------------------"); MediaProtocol tcp = new Template.Tcp(); tcp.Work(); MediaProtocol udp = new Template.Udp(); udp.Work(); } #endregion #region Composite { Console.WriteLine("------------Composite-----------------------"); FileComponent First = new FileFolder() { Name = "C" }; FileComponent second1 = new FileFolder() { Name = "-Folder1" }; FileComponent second2 = new File() { Name = "-File2" }; FileComponent second1_1 = new File() { Name = "--File1_1" }; second1.Add(second1_1); First.Add(second1); First.Add(second2); First.Display(); } #endregion Console.ReadLine(); }