public void TestMethod_Statistics() { IVehicleInventory inventory = new VehicleInventory(); var mfg = new Manufacturer("Toyota", "100 main", "800-999-9999"); var vehicle = VehicleFactory.CreateVehicle("vinnumber3", VehicleMake.Ford, "model", 2017, "yellow", 1500, 10000, 10000); inventory.Add(vehicle); vehicle = VehicleFactory.CreateVehicle("vinnumber1", VehicleMake.BMW, "model", 2016, "red", 2500, 60000, 60000); inventory.Add(vehicle); vehicle = VehicleFactory.CreateVehicle("vinnumber1", VehicleMake.Toyota, "model", 2016, "red", 2500, 20000, 20000); inventory.Add(vehicle); var vehicleList = inventory.List(); Assert.AreEqual(30000, vehicleList.AverageMSRP()); Assert.AreEqual(10000, vehicleList.MinMSRP()); Assert.AreEqual(60000, vehicleList.MaxMSRP()); Assert.AreEqual(30000, vehicleList.AverageMileage()); Assert.AreEqual(10000, vehicleList.MinMileage()); Assert.AreEqual(60000, vehicleList.MaxMileage()); Assert.AreEqual(3, vehicleList.CountDueForOilChange()); //do an oil change, then re-check count vehicle.LastOilChangeDate = DateTime.Now; vehicle.LastOilChangeMiles = 20000; Assert.AreEqual(2, vehicleList.CountDueForOilChange()); }
private static void DemoVehicleInventory() { IVehicleInventory inventory = new VehicleInventory(); var vehicle = VehicleFactory.CreateVehicle("vinnumber3", VehicleMake.Tesla, "Model S", 2017, "yellow", 1500, 2500, 100); //var temp = vehicle.Mfg; inventory.Add(vehicle); vehicle = VehicleFactory.CreateVehicle("vinnumber1", VehicleMake.BMW, "325i", 2016, "red", 2500, 4000, 100); inventory.Add(vehicle); inventory.Remove(vehicle); inventory.Add(vehicle); var v1 = inventory.List(SortOrder.Vin); Console.WriteLine("List of Vehicles"); v1.ForEach(v => Console.WriteLine($"{v.VinNumber}, {v.Make}, {v.Model}")); var v2 = inventory.FindByYear(2017); var v3 = inventory.List(SortOrder.Vin).FindByMake(VehicleMake.BMW); v3.AddToMileage(99); var v3_1 = inventory.List().FindByMake(VehicleMake.BMW); var v4 = inventory.List().FindByMake(VehicleMake.Ford); var stringList = inventory.ListAsString(SortOrder.Vin); Console.WriteLine("List of Vehicles - in Json(string) format"); Console.WriteLine($"{stringList}"); }
public void TestMethod_BasicFeatures() { IVehicleInventory inventory = new VehicleInventory(); var vehicle = VehicleFactory.CreateVehicle("vinnumber3", VehicleMake.Tesla, "model", 2017, "yellow", 1500, 2500, 100); //var temp = vehicle.Mfg; inventory.Add(vehicle); vehicle = VehicleFactory.CreateVehicle("vinnumber1", VehicleMake.BMW, "model", 2016, "red", 2500, 4000, 100); inventory.Add(vehicle); var v1 = inventory.List(SortOrder.Vin); Assert.AreEqual(2, v1.Count); Assert.AreEqual(v1[0].VinNumber, "vinnumber1"); inventory.Remove(vehicle); v1 = inventory.List(SortOrder.Vin); Assert.AreEqual(1, v1.Count); inventory.Add(vehicle); var v2 = inventory.FindByYear(2017); Assert.AreEqual(1, v2.Count); var v3 = inventory.List(SortOrder.Vin).FindByMake(VehicleMake.BMW); Assert.AreEqual(1, v3.Count); Assert.IsTrue(v3[0].Disclaimer.Contains("Copyright BMW AG, Munich, Germany")); v3.AddToMileage(99); var v3_1 = inventory.List().FindByMake(VehicleMake.BMW); Assert.AreEqual(199, v3_1[0].Miles); var v4 = inventory.List().FindByMake(VehicleMake.Ford); Assert.AreEqual(0, v4.Count); var stringList = inventory.ListAsString(SortOrder.Vin); Assert.IsTrue(stringList.Contains("vinnumber3")); Assert.IsTrue(stringList.Contains("vinnumber1")); // verify that the BMW has the disclaimer Assert.IsTrue(stringList.Contains("Copyright BMW AG, Munich, Germany")); // test for tesla manufacturer info Assert.IsTrue(stringList.Contains("Teslaphone")); }
public static void BuyDrugs(Client player, int amount) { if (!Main.Players.ContainsKey(player)) { return; } if (!player.IsInVehicle || !player.Vehicle.HasData("CANDRUGS")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Вы должны находиться в машине, которая может перевозить наркотики", 3000); return; } if (Fractions.Manager.FractionTypes[Main.Players[player].FractionID] != 1) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Вы не можете закупать наркотики", 3000); return; } if (!Fractions.Manager.canUseCommand(player, "buydrugs")) { return; } var tryAdd = VehicleInventory.TryAdd(player.Vehicle, new nItem(ItemType.Drugs, amount)); if (tryAdd == -1 || tryAdd > 0) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Недостаточно места в машине", 3000); return; } if (Fractions.Stocks.fracStocks[Main.Players[player].FractionID].Money < amount * PricePerDrug) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Недостаточно средств на складе банды", 3000); return; } VehicleInventory.Add(player.Vehicle, new nItem(ItemType.Drugs, amount)); Fractions.Stocks.fracStocks[Main.Players[player].FractionID].Money -= amount * PricePerDrug; Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы закупили {amount}г наркотиков", 3000); }
public static void interactPressed(Client player, int interact) { switch (interact) { case 15: if (player.IsInVehicle) { return; } if (player.HasData("FOLLOWING")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вас кто-то тащит за собой", 3000); return; } player.SetData("IN_HOSPITAL", true); NAPI.Entity.SetEntityPosition(player, emsCheckpoints[1] + new Vector3(0, 0, 1.12)); Main.PlayerEnterInterior(player, emsCheckpoints[1] + new Vector3(0, 0, 1.12)); return; case 16: if (player.HasData("FOLLOWING")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вас кто-то тащит за собой", 3000); return; } if (NAPI.Player.GetPlayerHealth(player) < 100) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы должны сначала закончить лечение", 3000); break; } /*if (player.HasData("HEAL_TIMER")) * { * Main.StopT(player.GetData("HEAL_TIMER")); * player.ResetData("HEAL_TIMER"); * Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Ваше лечение закончено", 3000); * }*/ player.SetData("IN_HOSPITAL", false); NAPI.Entity.SetEntityPosition(player, emsCheckpoints[0] + new Vector3(0, 0, 1.12)); Main.PlayerEnterInterior(player, emsCheckpoints[0] + new Vector3(0, 0, 1.12)); return; case 17: if (Main.Players[player].FractionID != 8) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не сотрудник EMS", 3000); return; } if (!player.GetData("ON_DUTY")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не начали рабочий день", 3000); return; } if (!Stocks.fracStocks[8].IsOpen) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Склад закрыт", 3000); return; } OpenHospitalStockMenu(player); return; case 18: if (Main.Players[player].FractionID == 8) { if (!NAPI.Data.GetEntityData(player, "ON_DUTY")) { Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы начали рабочий день", 3000); Manager.setSkin(player, 8, Main.Players[player].FractionLVL); NAPI.Data.SetEntityData(player, "ON_DUTY", true); break; } else { Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы закончили рабочий день", 3000); Customization.ApplyCharacter(player); if (player.HasData("HAND_MONEY")) { player.SetClothes(5, 45, 0); } else if (player.HasData("HEIST_DRILL")) { player.SetClothes(5, 41, 0); } NAPI.Data.SetEntityData(player, "ON_DUTY", false); break; } } else { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не сотрудник EMS", 3000); } return; case 19: if (NAPI.Player.GetPlayerHealth(player) > 99) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не нуждаетесь в лечении", 3000); break; } if (player.HasData("HEAL_TIMER")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы уже лечитесь", 3000); break; } Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы начали лечение", 3000); //player.SetData("HEAL_TIMER", Main.StartT(3750, 3750, (o) => healTimer(player), "HEAL_TIMER")); player.SetData("HEAL_TIMER", Timers.Start(3750, () => healTimer(player))); return; case 51: OpenTattooDeleteMenu(player); return; case 58: if (Main.Players[player].FractionID != 8) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не сотрудник EMS", 3000); break; } if (!player.IsInVehicle || !player.Vehicle.HasData("CANMEDKITS")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не в машине или Ваша машина не может перевозить аптечки", 3000); break; } var medCount = VehicleInventory.GetCountOfType(player.Vehicle, ItemType.HealthKit); if (medCount >= 50) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"В машине максимум аптечек", 3000); break; } if (HumanMedkitsLefts <= 0) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Аптечки закончились. Приезжайте за новыми через час", 3000); break; } var toAdd = (HumanMedkitsLefts > 50 - medCount) ? 50 - medCount : HumanMedkitsLefts; HumanMedkitsLefts = toAdd; VehicleInventory.Add(player.Vehicle, new nItem(ItemType.HealthKit, toAdd)); Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы заполнили машину аптечками", 3000); return; case 63: if (Main.Players[player].FractionID != 8) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не сотрудник EMS", 3000); break; } if (player.IsInVehicle) { return; } if (player.Position.Z > 50) { if (player.HasData("FOLLOWING")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вас кто-то тащит за собой", 3000); return; } player.SetData("IN_HOSPITAL", true); NAPI.Entity.SetEntityPosition(player, emsCheckpoints[8] + new Vector3(0, 0, 1.12)); Main.PlayerEnterInterior(player, emsCheckpoints[8] + new Vector3(0, 0, 1.12)); } else { if (player.HasData("FOLLOWING")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вас кто-то тащит за собой", 3000); return; } player.SetData("IN_HOSPITAL", false); NAPI.Entity.SetEntityPosition(player, emsCheckpoints[7] + new Vector3(0, 0, 1.12)); Main.PlayerEnterInterior(player, emsCheckpoints[7] + new Vector3(0, 0, 1.12)); } return; } }
public static void loadMaterialsTimer(Client player) { NAPI.Task.Run(() => { try { if (!player.HasData("vehicleMats")) { return; } if (!player.IsInVehicle) { return; } Vehicle vehicle = player.GetData("vehicleMats"); var itemCount = VehicleInventory.GetCountOfType(player.Vehicle, ItemType.Material); if (player.GetData("whereLoad") == "WAR" && !Fractions.MatsWar.isWar) { player.SetData("INTERACTIONCHECK", 0); //Main.StopT(player.GetData("loadMatsTimer"), "loadMaterialsTimer"); player.ResetData("loadMatsTimer"); Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Корабль уже уехал", 3000); return; } if (itemCount >= Fractions.Stocks.maxMats[vehicle.DisplayName]) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"В машине максимальное кол-во материала", 3000); //Main.StopT(player.GetData("loadMatsTimer"), "loadMaterialsTimer_1"); player.ResetData("loadMatsTimer"); return; } var data = new nItem(ItemType.Material); if (player.GetData("whereLoad") == "WAR") { var count = Fractions.Stocks.maxMats[vehicle.DisplayName] - itemCount; if (count >= Fractions.MatsWar.matsLeft) { data.Count = itemCount + Fractions.MatsWar.matsLeft; Fractions.MatsWar.matsLeft = 0; Fractions.MatsWar.endWar(); } else { data.Count = count; Fractions.MatsWar.matsLeft -= count; } } else { data.Count = Fractions.Stocks.maxMats[vehicle.DisplayName] - itemCount; } VehicleInventory.Add(vehicle, data); NAPI.Data.ResetEntityData(vehicle, "loaderMats"); //Main.StopT(player.GetData("loadMatsTimer"), "loadMaterialsTimer_2"); player.ResetData("loadMatsTimer"); Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы загрузили материалы в машину", 3000); } catch (Exception e) { Log.Write("LoadMatsTimer: " + e.Message, nLog.Type.Error); } }); }