mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-01-15 23:05:45 -05:00
Merge pull request #341 from madsboddum/335
Desired outcome of active_quest can now be flipped and task check is …
This commit is contained in:
@@ -35,11 +35,13 @@ import java.util.Collection;
|
||||
public class ActiveQuestRequirement implements Requirement {
|
||||
|
||||
private final String questName;
|
||||
private final int task;
|
||||
private final boolean active;
|
||||
private final Integer task;
|
||||
|
||||
public ActiveQuestRequirement(String questName, int task) {
|
||||
public ActiveQuestRequirement(String questName, boolean active, Integer task) {
|
||||
this.questName = questName;
|
||||
this.task = task;
|
||||
this.active = active;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,15 +49,32 @@ public class ActiveQuestRequirement implements Requirement {
|
||||
PlayerObject playerObject = player.getPlayerObject();
|
||||
|
||||
if (!playerObject.isQuestInJournal(questName)) {
|
||||
return false;
|
||||
return !active;
|
||||
}
|
||||
|
||||
if (playerObject.isQuestComplete(questName)) {
|
||||
return false;
|
||||
return !active;
|
||||
}
|
||||
|
||||
Collection<Integer> questActiveTasks = playerObject.getQuestActiveTasks(questName);
|
||||
|
||||
return questActiveTasks.contains(task);
|
||||
if (task != null) {
|
||||
Collection<Integer> questActiveTasks = playerObject.getQuestActiveTasks(questName);
|
||||
boolean taskActive = questActiveTasks.contains(task);
|
||||
|
||||
return taskActive == active;
|
||||
}
|
||||
|
||||
return active;
|
||||
}
|
||||
|
||||
public String getQuestName() {
|
||||
return questName;
|
||||
}
|
||||
|
||||
public Integer getTask() {
|
||||
return task;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return active;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,8 +36,18 @@ public class ActiveQuestRequirementParser implements RequirementParser<ActiveQue
|
||||
@Override
|
||||
public ActiveQuestRequirement parse(Map<String, Object> args) {
|
||||
String questName = (String) args.get("quest");
|
||||
int task = (int) args.get("task");
|
||||
boolean active = (Boolean) args.get("active");
|
||||
Long task = (Long) args.get("task");
|
||||
|
||||
return new ActiveQuestRequirement(questName, task);
|
||||
return new ActiveQuestRequirement(questName, active, getTaskValue(task));
|
||||
}
|
||||
|
||||
private Integer getTaskValue(Long task) {
|
||||
if (task == null) {
|
||||
// The parameter is optional
|
||||
return null;
|
||||
}
|
||||
|
||||
return task.intValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.projectswg.holocore.resources.gameplay.conversation.requirements;
|
||||
|
||||
import com.projectswg.holocore.resources.support.global.player.Player;
|
||||
import com.projectswg.holocore.resources.support.objects.swg.player.PlayerObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class ActiveQuestRequirementTest {
|
||||
|
||||
private Player player;
|
||||
private PlayerObject playerObject;
|
||||
private String questName;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
player = mock(Player.class);
|
||||
playerObject = mock(PlayerObject.class);
|
||||
questName = "testquest";
|
||||
|
||||
when(player.getPlayerObject()).thenReturn(playerObject);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void questMissingInJournal() {
|
||||
Integer task = null;
|
||||
boolean active = true;
|
||||
ActiveQuestRequirement requirement = new ActiveQuestRequirement(questName, active, task);
|
||||
|
||||
when(playerObject.isQuestInJournal(questName)).thenReturn(false);
|
||||
|
||||
boolean result = requirement.test(player);
|
||||
|
||||
assertFalse(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void questComplete() {
|
||||
Integer task = null;
|
||||
boolean active = true;
|
||||
ActiveQuestRequirement requirement = new ActiveQuestRequirement(questName, active, task);
|
||||
|
||||
when(playerObject.isQuestInJournal(questName)).thenReturn(true);
|
||||
when(playerObject.isQuestComplete(questName)).thenReturn(true);
|
||||
|
||||
boolean result = requirement.test(player);
|
||||
|
||||
assertFalse(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void taskActive() {
|
||||
Integer task = 1;
|
||||
boolean active = true;
|
||||
ActiveQuestRequirement requirement = new ActiveQuestRequirement(questName, active, task);
|
||||
|
||||
when(playerObject.isQuestInJournal(questName)).thenReturn(true);
|
||||
when(playerObject.isQuestComplete(questName)).thenReturn(false);
|
||||
when(playerObject.getQuestActiveTasks(questName)).thenReturn(Collections.singleton(task));
|
||||
|
||||
boolean result = requirement.test(player);
|
||||
|
||||
assertTrue(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void taskActiveFlipped() {
|
||||
Integer task = 1;
|
||||
boolean active = false;
|
||||
ActiveQuestRequirement requirement = new ActiveQuestRequirement(questName, active, task);
|
||||
|
||||
when(playerObject.isQuestInJournal(questName)).thenReturn(true);
|
||||
when(playerObject.isQuestComplete(questName)).thenReturn(false);
|
||||
when(playerObject.getQuestActiveTasks(questName)).thenReturn(Collections.singleton(task));
|
||||
|
||||
boolean result = requirement.test(player);
|
||||
|
||||
assertFalse(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void skipOptionalTaskCheck() {
|
||||
Integer task = null;
|
||||
boolean active = true;
|
||||
ActiveQuestRequirement requirement = new ActiveQuestRequirement(questName, active, task);
|
||||
|
||||
when(playerObject.isQuestInJournal(questName)).thenReturn(true);
|
||||
when(playerObject.isQuestComplete(questName)).thenReturn(false);
|
||||
when(playerObject.getQuestActiveTasks(questName)).thenReturn(Collections.singleton(task));
|
||||
|
||||
boolean result = requirement.test(player);
|
||||
|
||||
assertTrue(result);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.projectswg.holocore.resources.support.data.server_info.loader.conversation.requirements;
|
||||
|
||||
import com.projectswg.holocore.resources.gameplay.conversation.requirements.ActiveQuestRequirement;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class ActiveQuestRequirementParserTest {
|
||||
|
||||
private ActiveQuestRequirementParser parser;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
parser = new ActiveQuestRequirementParser();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllParametersSet() {
|
||||
String expectedQuestName = "testquest";
|
||||
Integer expectedTask = 1234;
|
||||
boolean expectedActive = true;
|
||||
|
||||
Map<String, Object> args = Map.of(
|
||||
"quest", expectedQuestName,
|
||||
"task", Long.valueOf(expectedTask),
|
||||
"active", expectedActive
|
||||
);
|
||||
|
||||
ActiveQuestRequirement requirement = parser.parse(args);
|
||||
|
||||
assertEquals(expectedQuestName, requirement.getQuestName());
|
||||
assertEquals(expectedTask, requirement.getTask());
|
||||
assertEquals(expectedActive, requirement.isActive());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTaskOptional() {
|
||||
String expectedQuestName = "testquest";
|
||||
Integer expectedTask = null;
|
||||
boolean expectedActive = true;
|
||||
|
||||
Map<String, Object> args = Map.of(
|
||||
"quest", expectedQuestName,
|
||||
"active", expectedActive
|
||||
);
|
||||
|
||||
ActiveQuestRequirement requirement = parser.parse(args);
|
||||
|
||||
assertEquals(expectedQuestName, requirement.getQuestName());
|
||||
assertEquals(expectedTask, requirement.getTask());
|
||||
assertEquals(expectedActive, requirement.isActive());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user