public void PartyMapDestroyWhenAllPlayersLeft() { var usualMap = testMap; var character1 = CreateCharacter(usualMap); var character2 = CreateCharacter(usualMap); var party = new Party(packetFactoryMock.Object); character1.PartyManager.Party = party; character2.PartyManager.Party = party; var partyMap = new PartyMap(party, Map.TEST_MAP_ID, new MapDefinition() { CreateType = CreateType.Party }, new Svmap() { MapSize = 100, CellSize = 100 }, mapLoggerMock.Object, packetFactoryMock.Object, databasePreloader.Object, mobFactoryMock.Object, npcFactoryMock.Object, obeliskFactoryMock.Object, timeMock.Object); var allLeftWasCalled = false; partyMap.OnAllMembersLeft += (sender) => { allLeftWasCalled = true; }; partyMap.LoadPlayer(character1); partyMap.LoadPlayer(character2); character1.PartyManager.Party = null; Assert.False(allLeftWasCalled); // Should be called only after all members left. partyMap.UnloadPlayer(character1.Id); partyMap.UnloadPlayer(character2.Id); Assert.True(allLeftWasCalled); }
public void PartyMapDestroyWhenPartyDestroyed() { var usualMap = testMap; var character1 = CreateCharacter(usualMap); var character2 = CreateCharacter(usualMap); var party = new Party(packetFactoryMock.Object); character1.PartyManager.Party = party; character2.PartyManager.Party = party; var partyMap = new PartyMap(party, Map.TEST_MAP_ID, new MapDefinition() { CreateType = CreateType.Party }, new Svmap() { MapSize = 100, CellSize = 100 }, mapLoggerMock.Object, packetFactoryMock.Object, databasePreloader.Object, mobFactoryMock.Object, npcFactoryMock.Object, obeliskFactoryMock.Object, timeMock.Object); var allLeftWasCalled = false; partyMap.OnAllMembersLeft += (sender) => { allLeftWasCalled = true; }; character1.PartyManager.Party = null; Assert.Null(character1.PartyManager.Party); Assert.Null(character2.PartyManager.Party); Assert.True(allLeftWasCalled); // No party member visited map, we can delete it. }