Add option to choose encounter gender

This commit is contained in:
kuroppoi
2023-06-26 17:53:25 +02:00
parent aa7da4ec40
commit 112a1fe515
5 changed files with 25 additions and 5 deletions

View File

@@ -2,8 +2,17 @@ package entralinked.model.player;
import com.fasterxml.jackson.annotation.JsonProperty;
import entralinked.model.pkmn.PkmnGender;
public record DreamEncounter(
@JsonProperty(required = true) int species,
@JsonProperty(required = true) int move,
@JsonProperty(required = true) int form,
@JsonProperty(required = true) DreamAnimation animation) {}
@JsonProperty(required = true) int species,
@JsonProperty(required = true) int move,
@JsonProperty(required = true) int form,
@JsonProperty(required = false) PkmnGender gender, // Can't require cuz it's new
@JsonProperty(required = true) DreamAnimation animation) {
@Override
public PkmnGender gender() {
return gender == null ? PkmnGender.GENDERLESS : gender; // Default to genderless (random gender) if not present
}
}

View File

@@ -195,6 +195,8 @@ public class DashboardHandler implements HttpHandler {
return "Species is out of range.";
} else if(encounter.move() < 1 || encounter.move() > 559) {
return "Move ID is out of range.";
} else if(encounter.gender() == null) {
return "Gender is undefined.";
} else if(encounter.animation() == null) {
return "Animation is undefined.";
}

View File

@@ -214,7 +214,7 @@ public class PglHandler implements HttpHandler {
outputStream.writeShort(encounter.species());
outputStream.writeShort(encounter.move());
outputStream.write(encounter.form());
outputStream.write(0); // unknown
outputStream.write(encounter.gender().ordinal()); // Genderless = 2 = random
outputStream.write(encounter.animation().ordinal());
outputStream.write(0); // unknown
}

View File

@@ -138,6 +138,12 @@
<input id="encounter-form-move" name="move" type="number" value="1" min="1" max="559"/>
<label for="encounter-form-form">Forme Index</label>
<input id="encounter-form-form" name="form" type="number" value="0" min="0" max="31"/>
<label for="encounter-form-gender">Gender</label>
<select id="encounter-form-gender" name="gender" value="GENDERLESS">
<option value="MALE">Male</option>
<option value="FEMALE">Female</option>
<option value="GENDERLESS">Random</option>
</select>
<label for="encounter-form-animation">Animation</label>
<select id="encounter-form-animation" name="animation">
<option value="LOOK_AROUND">Look Around</option>

View File

@@ -14,6 +14,7 @@ const ELEMENT_DREAMER_LEVEL = document.getElementById("dreamer-level");
const ELEMENT_ENCOUNTER_SPECIES = document.getElementById("encounter-form-species");
const ELEMENT_ENCOUNTER_MOVE = document.getElementById("encounter-form-move");
const ELEMENT_ENCOUNTER_FORM = document.getElementById("encounter-form-form");
const ELEMENT_ENCOUNTER_GENDER = document.getElementById("encounter-form-gender");
const ELEMENT_ENCOUNTER_ANIMATION = document.getElementById("encounter-form-animation");
// Item form elements
@@ -60,6 +61,7 @@ function configureEncounter(index) {
ELEMENT_ENCOUNTER_SPECIES.value = encounter ? encounter.species : 1;
ELEMENT_ENCOUNTER_MOVE.value = encounter ? encounter.move : 1;
ELEMENT_ENCOUNTER_FORM.value = encounter ? encounter.form : 0;
ELEMENT_ENCOUNTER_GENDER.value = encounter ? encounter.gender : "GENDERLESS";
ELEMENT_ENCOUNTER_ANIMATION.value = encounter ? encounter.animation : "WALK_AROUND";
}
@@ -73,6 +75,7 @@ function saveEncounter() {
species: ELEMENT_ENCOUNTER_SPECIES.value,
move: ELEMENT_ENCOUNTER_MOVE.value,
form: ELEMENT_ENCOUNTER_FORM.value,
gender: ELEMENT_ENCOUNTER_GENDER.value,
animation: ELEMENT_ENCOUNTER_ANIMATION.value
}