mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Update AdventureQuestStage.java
format
This commit is contained in:
@@ -50,8 +50,8 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
|
|
||||||
public UUID stageID;
|
public UUID stageID;
|
||||||
|
|
||||||
public void initialize(){
|
public void initialize() {
|
||||||
if (stageID == null){
|
if (stageID == null) {
|
||||||
stageID = UUID.randomUUID();
|
stageID = UUID.randomUUID();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,12 +60,12 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
//Todo - implement
|
//Todo - implement
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdventureQuestController.QuestStatus getStatus(){
|
public AdventureQuestController.QuestStatus getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatus(AdventureQuestController.QuestStatus newStatus){
|
public void setStatus(AdventureQuestController.QuestStatus newStatus) {
|
||||||
if (!status.equals(newStatus) && newStatus.equals(AdventureQuestController.QuestStatus.Active)){
|
if (!status.equals(newStatus) && newStatus.equals(AdventureQuestController.QuestStatus.Active)) {
|
||||||
AdventureQuestController.instance().addQuestSprites(this);
|
AdventureQuestController.instance().addQuestSprites(this);
|
||||||
}
|
}
|
||||||
status = newStatus;
|
status = newStatus;
|
||||||
@@ -80,30 +80,26 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
targetPOI = target;
|
targetPOI = target;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTargetPOI(Dictionary<String, PointOfInterest> poiTokens){
|
public void setTargetPOI(Dictionary<String, PointOfInterest> poiTokens) {
|
||||||
|
if (POIToken != null && POIToken.length() > 0) {
|
||||||
if (POIToken != null && POIToken.length() > 0){
|
|
||||||
PointOfInterest tokenTarget = poiTokens.get(POIToken);
|
PointOfInterest tokenTarget = poiTokens.get(POIToken);
|
||||||
if (tokenTarget != null){
|
if (tokenTarget != null) {
|
||||||
setTargetPOI(tokenTarget);
|
setTargetPOI(tokenTarget);
|
||||||
return;
|
return;
|
||||||
}
|
} else {
|
||||||
else{
|
System.out.println("Quest Stage '" + this.name + "' failed to generate POI from token reference: '" + POIToken + "'");
|
||||||
System.out.println("Quest Stage '" + this.name+ "' failed to generate POI from token reference: '" + POIToken +"'");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (here){
|
if (here) {
|
||||||
setTargetPOI(AdventureQuestController.instance().mostRecentPOI);
|
setTargetPOI(AdventureQuestController.instance().mostRecentPOI);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!anyPOI) {
|
if (!anyPOI) {
|
||||||
List<PointOfInterest> candidates = Current.world().getAllPointOfInterest();
|
List<PointOfInterest> candidates = Current.world().getAllPointOfInterest();
|
||||||
for (String tag : POITags)
|
for (String tag : POITags) {
|
||||||
{
|
|
||||||
candidates.removeIf(q -> Arrays.stream(q.getData().questTags).noneMatch(tag::equals));
|
candidates.removeIf(q -> Arrays.stream(q.getData().questTags).noneMatch(tag::equals));
|
||||||
}
|
}
|
||||||
if (candidates.size() < 1)
|
if (candidates.size() < 1) {
|
||||||
{
|
|
||||||
//no POI matched, fall back to anyPOI valid for the objective that doesn't match all tags
|
//no POI matched, fall back to anyPOI valid for the objective that doesn't match all tags
|
||||||
candidates = Current.world().getAllPointOfInterest();
|
candidates = Current.world().getAllPointOfInterest();
|
||||||
if (objective == AdventureQuestController.ObjectiveTypes.Clear)
|
if (objective == AdventureQuestController.ObjectiveTypes.Clear)
|
||||||
@@ -112,16 +108,15 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
candidates.removeIf(q -> Arrays.asList(q.getData().questTags).contains("Hostile"));
|
candidates.removeIf(q -> Arrays.asList(q.getData().questTags).contains("Hostile"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
count1 = (count1* candidates.size()/ 100);
|
count1 = (count1 * candidates.size() / 100);
|
||||||
count2 = (count2* candidates.size()) /100;
|
count2 = (count2 * candidates.size()) / 100;
|
||||||
int targetIndex = Math.max(0,(int) (count1 - count2 + (new Random().nextFloat() * count2 * 2)));
|
int targetIndex = Math.max(0, (int) (count1 - count2 + (new Random().nextFloat() * count2 * 2)));
|
||||||
|
|
||||||
if (targetIndex < candidates.size() && targetIndex > 0 && count1 > 0) {
|
if (targetIndex < candidates.size() && targetIndex > 0 && count1 > 0) {
|
||||||
candidates.sort(new AdventureQuestController.DistanceSort());
|
candidates.sort(new AdventureQuestController.DistanceSort());
|
||||||
setTargetPOI(candidates.get(targetIndex));
|
setTargetPOI(candidates.get(targetIndex));
|
||||||
}
|
} else {
|
||||||
else{
|
if (count1 != 0 || count2 != 0) {
|
||||||
if (count1 !=0 || count2 != 0) {
|
|
||||||
System.out.println("Quest Stage '" + this.name + "' has invalid count1 ('" + count1 + "') and/or count2 ('" + count2 + "') value");
|
System.out.println("Quest Stage '" + this.name + "' has invalid count1 ('" + count1 + "') and/or count2 ('" + count2 + "') value");
|
||||||
}
|
}
|
||||||
setTargetPOI(Aggregates.random(candidates));
|
setTargetPOI(Aggregates.random(candidates));
|
||||||
@@ -133,11 +128,13 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
public EnemySprite getTargetSprite() {
|
public EnemySprite getTargetSprite() {
|
||||||
return targetSprite;
|
return targetSprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTargetEnemyData(EnemyData target) {
|
public void setTargetEnemyData(EnemyData target) {
|
||||||
targetEnemyData = target;
|
targetEnemyData = target;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnemyData getTargetEnemyData() {
|
public EnemyData getTargetEnemyData() {
|
||||||
if (targetEnemyData == null & targetSprite!=null)
|
if (targetEnemyData == null & targetSprite != null)
|
||||||
return targetSprite.getData();
|
return targetSprite.getData();
|
||||||
return targetEnemyData;
|
return targetEnemyData;
|
||||||
}
|
}
|
||||||
@@ -147,13 +144,11 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AdventureQuestController.QuestStatus updateEnterPOI(PointOfInterest entered) {
|
public AdventureQuestController.QuestStatus updateEnterPOI(PointOfInterest entered) {
|
||||||
if (getStatus() == AdventureQuestController.QuestStatus.Complete){
|
if (getStatus() == AdventureQuestController.QuestStatus.Complete) {
|
||||||
return status;
|
return status;
|
||||||
}
|
} else if (getStatus() == AdventureQuestController.QuestStatus.Failed) {
|
||||||
else if (getStatus() == AdventureQuestController.QuestStatus.Failed){
|
|
||||||
return status;
|
return status;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
checkIfInTargetLocation(entered);
|
checkIfInTargetLocation(entered);
|
||||||
if (inTargetLocation &&
|
if (inTargetLocation &&
|
||||||
(this.objective == AdventureQuestController.ObjectiveTypes.Delivery ||
|
(this.objective == AdventureQuestController.ObjectiveTypes.Delivery ||
|
||||||
@@ -164,14 +159,12 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdventureQuestController.QuestStatus updateMapFlag(String mapFlag, int mapFlagValue){
|
public AdventureQuestController.QuestStatus updateMapFlag(String mapFlag, int mapFlagValue) {
|
||||||
if (getStatus() == AdventureQuestController.QuestStatus.Complete){
|
if (getStatus() == AdventureQuestController.QuestStatus.Complete) {
|
||||||
return status;
|
return status;
|
||||||
}
|
} else if (getStatus() == AdventureQuestController.QuestStatus.Failed) {
|
||||||
else if (getStatus() == AdventureQuestController.QuestStatus.Failed){
|
|
||||||
return status;
|
return status;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (this.objective == AdventureQuestController.ObjectiveTypes.MapFlag) {
|
if (this.objective == AdventureQuestController.ObjectiveTypes.MapFlag) {
|
||||||
if (mapFlag.equals(this.mapFlag) && mapFlagValue >= this.mapFlagValue)
|
if (mapFlag.equals(this.mapFlag) && mapFlagValue >= this.mapFlagValue)
|
||||||
status = AdventureQuestController.QuestStatus.Complete;
|
status = AdventureQuestController.QuestStatus.Complete;
|
||||||
@@ -179,38 +172,36 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public AdventureQuestController.QuestStatus updateLeave(){
|
|
||||||
if (status == AdventureQuestController.QuestStatus.Complete){
|
public AdventureQuestController.QuestStatus updateLeave() {
|
||||||
|
if (status == AdventureQuestController.QuestStatus.Complete) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
if (status == AdventureQuestController.QuestStatus.Failed){
|
if (status == AdventureQuestController.QuestStatus.Failed) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
inTargetLocation = false; //todo: handle case when called between multi-map PoIs (if necessary)
|
inTargetLocation = false; //todo: handle case when called between multi-map PoIs (if necessary)
|
||||||
if (this.objective == AdventureQuestController.ObjectiveTypes.Leave){
|
if (this.objective == AdventureQuestController.ObjectiveTypes.Leave) {
|
||||||
status = AdventureQuestController.QuestStatus.Complete;
|
status = AdventureQuestController.QuestStatus.Complete;
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdventureQuestController.QuestStatus updateWin(EnemySprite defeated, boolean mapCleared){
|
public AdventureQuestController.QuestStatus updateWin(EnemySprite defeated, boolean mapCleared) {
|
||||||
//todo - Does this need to also be called for alternate mob removal types?
|
//todo - Does this need to also be called for alternate mob removal types?
|
||||||
if (status == AdventureQuestController.QuestStatus.Complete){
|
if (status == AdventureQuestController.QuestStatus.Complete) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
if (status == AdventureQuestController.QuestStatus.Failed){
|
if (status == AdventureQuestController.QuestStatus.Failed) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
if (this.objective == AdventureQuestController.ObjectiveTypes.Clear)
|
if (this.objective == AdventureQuestController.ObjectiveTypes.Clear) {
|
||||||
{
|
if (mapCleared && inTargetLocation) {
|
||||||
if (mapCleared && inTargetLocation)
|
|
||||||
{
|
|
||||||
status = AdventureQuestController.QuestStatus.Complete;
|
status = AdventureQuestController.QuestStatus.Complete;
|
||||||
}
|
}
|
||||||
}
|
} else if (this.objective == AdventureQuestController.ObjectiveTypes.Defeat) {
|
||||||
else if (this.objective == AdventureQuestController.ObjectiveTypes.Defeat) {
|
|
||||||
{
|
{
|
||||||
if (mixedEnemies){
|
if (mixedEnemies) {
|
||||||
List<String> defeatedTags = Arrays.stream(defeated.getData().questTags).collect(Collectors.toList());
|
List<String> defeatedTags = Arrays.stream(defeated.getData().questTags).collect(Collectors.toList());
|
||||||
for (String targetTag : enemyTags) {
|
for (String targetTag : enemyTags) {
|
||||||
if (!defeatedTags.contains(targetTag)) {
|
if (!defeatedTags.contains(targetTag)) {
|
||||||
@@ -218,50 +209,45 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
if (defeated.getData() != targetEnemyData)
|
||||||
if (defeated.getData()!=targetEnemyData)
|
|
||||||
//Does not count
|
//Does not count
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
//All tags matched, kill confirmed
|
//All tags matched, kill confirmed
|
||||||
if (++progress1 >= count1){
|
if (++progress1 >= count1) {
|
||||||
status = AdventureQuestController.QuestStatus.Complete;
|
status = AdventureQuestController.QuestStatus.Complete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if (this.objective == AdventureQuestController.ObjectiveTypes.Hunt) {
|
||||||
else if (this.objective == AdventureQuestController.ObjectiveTypes.Hunt)
|
if (defeated.equals(targetSprite)) {
|
||||||
{
|
|
||||||
if (defeated.equals(targetSprite)){
|
|
||||||
status = AdventureQuestController.QuestStatus.Complete;
|
status = AdventureQuestController.QuestStatus.Complete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkIfInTargetLocation(PointOfInterest entered){
|
public void checkIfInTargetLocation(PointOfInterest entered) {
|
||||||
if (targetPOI == null){
|
if (targetPOI == null) {
|
||||||
List<String> enteredTags = Arrays.stream(entered.getData().questTags).collect(Collectors.toList());
|
List<String> enteredTags = Arrays.stream(entered.getData().questTags).collect(Collectors.toList());
|
||||||
for (String tag : POITags){
|
for (String tag : POITags) {
|
||||||
if (!enteredTags.contains(tag)) {
|
if (!enteredTags.contains(tag)) {
|
||||||
inTargetLocation = false;
|
inTargetLocation = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if (!targetPOI.getPosition().equals(entered.getPosition())) {
|
||||||
else if (!targetPOI.getPosition().equals(entered.getPosition())){
|
|
||||||
inTargetLocation = false;
|
inTargetLocation = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
inTargetLocation = true;
|
inTargetLocation = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdventureQuestController.QuestStatus updateLose(EnemySprite defeatedBy){
|
public AdventureQuestController.QuestStatus updateLose(EnemySprite defeatedBy) {
|
||||||
|
|
||||||
if (status != AdventureQuestController.QuestStatus.Failed && this.objective == AdventureQuestController.ObjectiveTypes.Defeat) {
|
if (status != AdventureQuestController.QuestStatus.Failed && this.objective == AdventureQuestController.ObjectiveTypes.Defeat) {
|
||||||
{
|
{
|
||||||
if (mixedEnemies){
|
if (mixedEnemies) {
|
||||||
List<String> defeatedByTags = Arrays.stream(defeatedBy.getData().questTags).collect(Collectors.toList());
|
List<String> defeatedByTags = Arrays.stream(defeatedBy.getData().questTags).collect(Collectors.toList());
|
||||||
for (String targetTag : enemyTags) {
|
for (String targetTag : enemyTags) {
|
||||||
if (!defeatedByTags.contains(targetTag)) {
|
if (!defeatedByTags.contains(targetTag)) {
|
||||||
@@ -269,58 +255,53 @@ public class AdventureQuestStage implements Serializable {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
if (defeatedBy.getData() != targetEnemyData)
|
||||||
if (defeatedBy.getData()!=targetEnemyData)
|
|
||||||
//Does not count
|
//Does not count
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
//All tags matched
|
//All tags matched
|
||||||
//progress2: number of times defeated by a matching enemy
|
//progress2: number of times defeated by a matching enemy
|
||||||
//count2: if > 0, fail once defeated this many times
|
//count2: if > 0, fail once defeated this many times
|
||||||
if (status == AdventureQuestController.QuestStatus.Active && ++progress2 >= count2 && count2 > 0){
|
if (status == AdventureQuestController.QuestStatus.Active && ++progress2 >= count2 && count2 > 0) {
|
||||||
status = AdventureQuestController.QuestStatus.Failed;
|
status = AdventureQuestController.QuestStatus.Failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
} else if (status == AdventureQuestController.QuestStatus.Active && this.objective == AdventureQuestController.ObjectiveTypes.Hunt) {
|
||||||
else if (status == AdventureQuestController.QuestStatus.Active && this.objective == AdventureQuestController.ObjectiveTypes.Hunt)
|
if (defeatedBy.equals(targetSprite)) {
|
||||||
{
|
|
||||||
if (defeatedBy.equals(targetSprite)){
|
|
||||||
status = AdventureQuestController.QuestStatus.Failed;
|
status = AdventureQuestController.QuestStatus.Failed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdventureQuestController.QuestStatus updateDespawn(EnemySprite despawned){
|
public AdventureQuestController.QuestStatus updateDespawn(EnemySprite despawned) {
|
||||||
if (status == AdventureQuestController.QuestStatus.Active && this.objective == AdventureQuestController.ObjectiveTypes.Hunt)
|
if (status == AdventureQuestController.QuestStatus.Active && this.objective == AdventureQuestController.ObjectiveTypes.Hunt) {
|
||||||
{
|
if (despawned.equals(targetSprite)) {
|
||||||
if (despawned.equals(targetSprite)){
|
|
||||||
status = AdventureQuestController.QuestStatus.Failed;
|
status = AdventureQuestController.QuestStatus.Failed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateArenaComplete(boolean winner){
|
public void updateArenaComplete(boolean winner) {
|
||||||
if (this.objective == AdventureQuestController.ObjectiveTypes.Arena)
|
if (this.objective == AdventureQuestController.ObjectiveTypes.Arena) {
|
||||||
{
|
if (inTargetLocation) {
|
||||||
if (inTargetLocation){
|
if (winner) {
|
||||||
if (winner){
|
|
||||||
status = AdventureQuestController.QuestStatus.Complete;
|
status = AdventureQuestController.QuestStatus.Complete;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
status = AdventureQuestController.QuestStatus.Failed;
|
status = AdventureQuestController.QuestStatus.Failed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdventureQuestStage(){
|
public AdventureQuestStage() {
|
||||||
|
|
||||||
}
|
}
|
||||||
public AdventureQuestStage(AdventureQuestStage other){
|
|
||||||
|
public AdventureQuestStage(AdventureQuestStage other) {
|
||||||
this.status = other.status;
|
this.status = other.status;
|
||||||
this.prologueDisplayed = other.prologueDisplayed;
|
this.prologueDisplayed = other.prologueDisplayed;
|
||||||
this.prologue = new DialogData(other.prologue);
|
this.prologue = new DialogData(other.prologue);
|
||||||
|
|||||||
Reference in New Issue
Block a user