public void Combat_MockWeaponSetUpEnvironment() { TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(); Assert.NotNull(tpw.Engine); Assert.NotNull(tpw.Engine); Assert.NotNull(tpw.Engine); }
public void Combat_WeaponCooldownPreventsFire() { TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4); var ae = tpw.Bot1.GetEquipment("Gun_Turret"); tpw.Engine.Mock_GetEquipmentInstanceById(ae.InstanceId).CooldownTicksRemaining = 1; var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.Equal(UsageEndState.Fail_CooldownActive, eur.State); }
public void Combat_CantFireWhenNoCharge() { MockEquipmentRepository mor = new MockEquipmentRepository(); mor.Mock_SetWeaponProperties(100, 10, 89); TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4, mor); tpw.Engine.Mock_DirectSetBotCharge(tpw.Bot1.PublicId, 0); var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.Equal(UsageEndState.Fail_NoCharge, eur.State); }
public void Bot_FireWeapon_IncreasesUseCount() { TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4); Guid weaponGuid = tpw.Bot1.Mock_GetWeaponEquipmentInstanceId("Gun_Turret").InstanceId; var ae = tpw.Engine.Mock_GetEquipmentInstanceById(weaponGuid); int currentUseCount = ae.UseCount; var res = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.Equal(UsageEndState.Success, res.State); Assert.Equal(currentUseCount + 1, ae.UseCount); }
public void Weapon_HasCorrectInitialAmmoAllocation() { MockEquipmentRepository mor = new MockEquipmentRepository(); mor.Mock_SetWeaponProperties(100, 11); TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4, mor); var ae = tpw.Bot1.GetEquipment("Gun_Turret"); int initialRounds = tpw.Engine.Mock_GetEquipmentInstanceById(ae.InstanceId).RoundsRemaining; Assert.Equal(11, initialRounds); }
public void Combat_FireProjectileWeaponDepletesAmmo() { TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4); var ae = tpw.Bot1.GetEquipment("Gun_Turret"); var aeE = tpw.Engine.Mock_GetEquipmentInstanceById(ae.InstanceId); int remainingRounds = aeE.RoundsRemaining; var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); int afterShotRemaining = aeE.RoundsRemaining; Assert.True(eur.State == UsageEndState.Success, "The weapon did not fire correctly"); Assert.True(remainingRounds > afterShotRemaining, "the ammo was not depleted when firing the weapon"); }
public void Combat_FireProjectileWeaponHitsTargetDoesDamage() { MockEquipmentRepository mor = new MockEquipmentRepository(); mor.Mock_SetWeaponProperties(100); TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4, mor); int beforeLife = tpw.Engine.GetMappedBotById(tpw.GetBot2EngineId()).LifeRemaining; tpw.Engine.PerformNextTick(); var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.True(eur.State == UsageEndState.Success, "The weapon did not fire correctly"); int afterLife = tpw.Engine.GetMappedBotById(tpw.GetBot2EngineId()).LifeRemaining; Assert.True(afterLife < beforeLife); }
public void Combat_ZeroProjectileAmmo_CantFire() { TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4); var ae = tpw.Bot1.GetEquipment("Gun_Turret"); tpw.Engine.Mock_GetEquipmentInstanceById(ae.InstanceId).RoundsRemaining = 1; var aeE = tpw.Engine.Mock_GetEquipmentInstanceById(ae.InstanceId); var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); int afterShotRemaining = aeE.RoundsRemaining; Assert.Equal(0, afterShotRemaining); var eur2 = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.Equal(UsageEndState.Fail_NoAmmo, eur2.State); }
public void Combat_UseScanner_ConsumesCharge() { MockEquipmentRepository mor = new MockEquipmentRepository(); mor.Mock_SetScannerProperties(0, 23); mor.Mock_SetPowerPackProperties(123); TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4, mor); var mo = tpw.Engine.Mock_GetBotMapOBjectByPublicId(tpw.Bot1.PublicId); int charge = mo.ChargeRemaining; tpw.Bot1.UseEquipment("Scanner"); int charge2 = mo.ChargeRemaining; Assert.True(charge > charge2, "No charge was consumed when the weapon was fired"); Assert.Equal(23, charge - charge2); }
public void Combat_VictimRecievesDamageNoteNextTurn() { MockEquipmentRepository mor = new MockEquipmentRepository(); mor.Mock_SetWeaponProperties(100); TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4, mor); tpw.Engine.Mock_SetBotLife(tpw.Bot2.PublicId, 1000); tpw.Engine.PerformNextTick(); var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.True(eur.State == UsageEndState.Success, "The weapon did not fire correctly"); tpw.Engine.PerformNextTick(); var ad = tpw.Bot2.Mock_GetLTR(); Assert.NotNull(ad); Assert.True(ad.Events.Count == 1, "There should have been a fire event"); }
public void Combat_FireProjectileWeapon_ConsumesCharge() { MockEquipmentRepository mor = new MockEquipmentRepository(); mor.Mock_SetWeaponProperties(100, 10, 89); mor.Mock_SetPowerPackProperties(123); TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4, mor); var ae = tpw.Bot1.GetEquipment("Gun_Turret"); var mo = tpw.Engine.Mock_GetBotMapOBjectByPublicId(tpw.Bot1.PublicId); int charge = mo.ChargeRemaining; var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); int charge2 = mo.ChargeRemaining; Assert.True(eur.State == UsageEndState.Success, "The weapon did not fire correctly - " + eur.State.ToString()); Assert.True(charge > charge2, "No charge was consumed when the weapon was fired"); Assert.Equal(charge - charge2, 89); }
public void Combat_FireProjectileFiresGeneratesMessage() { TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4); Hub h = tpw.HubUsed; int msgHitCount = 0; h.LookFor <Message_Ui>((mui) => { if ((mui.MessageKind == MainMessageKind.UIMessage) && (mui.SubKind == KnownSubkinds.WeaponFire)) { msgHitCount++; } }); tpw.MockRepos.Mock_SetWeaponProperties(0); tpw.Engine.PerformNextTick(); var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.Equal(1, msgHitCount); }
public void Combat_FireProjectileWeaponHitsTargetGeneratesMessage() { MockEquipmentRepository mor = new MockEquipmentRepository(); mor.Mock_SetWeaponProperties(100); TestPreparedWorld tpw = TestUtils.CreateWorldWithBotsReadyForCombat(4, mor); int messageRecieved = 0; tpw.HubUsed.LookFor <Message_Ui>(uim => { if (uim.SubKind == KnownSubkinds.WeaponFire) { messageRecieved++; } }); tpw.Engine.PerformNextTick(); var eur = tpw.Bot1.FireWeapon(4, "Gun_Turret"); Assert.Equal(1, messageRecieved); }
public static TestPreparedWorld CreateWorldWithBotsReadyForCombat(int withThisScanId = -1, MockEquipmentRepository mer = null) { Hub testHub = new Hub(true); TestPreparedWorld result = new TestPreparedWorld(); if (mer == null) { result.MockRepos = new MockEquipmentRepository(); } else { result.MockRepos = mer; } result.Bot1 = (BasicMockBot)new MockBotFactory().CreateBasicMockBot().WithMockPack().WithEquipmentCallback(ab => { EquipmentInstallationResult ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Turret", MountPoint.Turret); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Front", MountPoint.Forward); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Near", MountPoint.Nearside); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Offs", MountPoint.Offside); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Rear", MountPoint.Backward); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKSCANNER, "Scanner", MountPoint.Internal); }).ToBot(); result.Bot2 = (BasicMockBot)new MockBotFactory().CreateBasicMockBot().WithMockPack().WithEquipmentCallback(ab => { EquipmentInstallationResult ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Turret", MountPoint.Turret); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Front", MountPoint.Forward); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Near", MountPoint.Nearside); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Offs", MountPoint.Offside); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKPROJECTILEWEAPON, "Gun_Rear", MountPoint.Backward); ae = ab.InstallEquipment(KnownEquipmentIds.MOCKSCANNER, "Scanner", MountPoint.Internal); }).ToBot(); result.Engine = new TestEngineFactory().WithHub(testHub).WithDuellingWorld().WithEquipmentSupport(result.MockRepos).WithBot(result.Bot1).WithBot(result.Bot2).WithPrepare().ToMockEngine(); result.Engine.PerformNextTick(); result.HubUsed = testHub; if (withThisScanId >= 0) { int i1 = result.GetBot1EngineId(); int i2 = result.GetBot2EngineId(); result.Engine.Mock_CreateArtificalScanId(withThisScanId, i1, i2); } return result; }