mirror of
https://github.com/kuroppoi/entralinked.git
synced 2026-03-21 17:24:40 -05:00
This commit is contained in:
parent
840d5e956a
commit
2385398b4b
|
|
@ -10,6 +10,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
|
@ -162,9 +163,17 @@ public class DataManager {
|
|||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public static List<Integer> getMoveOptions(GameVersion gameVersion, PkmnSpecies species, PkmnGender gender) {
|
||||
public static List<PkmnForm> getFormOptions(GameVersion gameVersion, PkmnSpecies species, PkmnGender gender) {
|
||||
return getEncounters(gameVersion).stream()
|
||||
.filter(x -> x.species() == species.id() && (!x.isGenderLocked() || species.gender() == gender))
|
||||
.filter(x -> x.species() == species.id() && (!x.isGenderLocked() || x.gender() == gender))
|
||||
.flatMap(x -> species.hasForms() ? Stream.of(species.forms()).filter(form -> x.hasForm(form.id())) : Stream.empty())
|
||||
.distinct()
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public static List<Integer> getMoveOptions(GameVersion gameVersion, PkmnSpecies species, PkmnGender gender, int form) {
|
||||
return getEncounters(gameVersion).stream()
|
||||
.filter(x -> x.species() == species.id() && (!x.isGenderLocked() || x.gender() == gender) && x.hasForm(form))
|
||||
.map(Encounter::moves)
|
||||
.flatMap(List::stream)
|
||||
.distinct()
|
||||
|
|
|
|||
|
|
@ -10,10 +10,21 @@ import entralinked.model.pkmn.PkmnGender;
|
|||
public record Encounter(
|
||||
@JsonProperty(required = true) int species,
|
||||
@JsonProperty(required = true) List<Integer> moves,
|
||||
PkmnGender gender, int versionMask) {
|
||||
PkmnGender gender, int formMask, int versionMask) {
|
||||
|
||||
@JsonIgnore
|
||||
public boolean isGenderLocked() {
|
||||
return gender != null;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public boolean isFormLocked() {
|
||||
return formMask != 0;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public boolean hasForm(int form) {
|
||||
int bits = 1 << form;
|
||||
return !isFormLocked() || (bits & formMask) == bits;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,14 +62,28 @@ public class EncounterEditorPanel extends TableEditorPanel {
|
|||
table.enableOption(row, MOVE_COLUMN);
|
||||
table.enableOption(row, FORM_COLUMN);
|
||||
table.enableOption(row, ANIMATION_COLUMN);
|
||||
PkmnSpecies species = (PkmnSpecies)newValue;
|
||||
updateGenderOptions(row, species);
|
||||
updateFormOptions(row, species);
|
||||
updateMoveOptions(row, species);
|
||||
updateGenderOptions(row);
|
||||
updateFormOptions(row);
|
||||
updateMoveOptions(row);
|
||||
optionLock = false;
|
||||
} else if(column == GENDER_COLUMN) {
|
||||
if(!isLegalMode()) {
|
||||
return; // Gender only affects move options if legal mode is enabled
|
||||
return; // Gender only affects form options if legal mode is enabled
|
||||
}
|
||||
|
||||
if(newValue == null) {
|
||||
table.disableOption(row, FORM_COLUMN);
|
||||
return;
|
||||
}
|
||||
|
||||
updateFormOptions(row);
|
||||
|
||||
if(oldValue == null) {
|
||||
table.enableOption(row, FORM_COLUMN);
|
||||
}
|
||||
} else if(column == FORM_COLUMN) {
|
||||
if(!isLegalMode()) {
|
||||
return; // Form only affects move options if legal mode is enabled
|
||||
}
|
||||
|
||||
if(newValue == null) {
|
||||
|
|
@ -77,7 +91,7 @@ public class EncounterEditorPanel extends TableEditorPanel {
|
|||
return;
|
||||
}
|
||||
|
||||
updateMoveOptions(row, getSpecies(row));
|
||||
updateMoveOptions(row);
|
||||
|
||||
if(oldValue == null) {
|
||||
table.enableOption(row, MOVE_COLUMN);
|
||||
|
|
@ -93,9 +107,9 @@ public class EncounterEditorPanel extends TableEditorPanel {
|
|||
|
||||
if(species != null) {
|
||||
optionLock = true;
|
||||
updateGenderOptions(i, species);
|
||||
updateFormOptions(i, species);
|
||||
updateMoveOptions(i, species);
|
||||
updateGenderOptions(i);
|
||||
updateFormOptions(i);
|
||||
updateMoveOptions(i);
|
||||
optionLock = false;
|
||||
}
|
||||
}
|
||||
|
|
@ -137,18 +151,21 @@ public class EncounterEditorPanel extends TableEditorPanel {
|
|||
(a, b) -> a.name().compareTo(b.name()), true);
|
||||
}
|
||||
|
||||
private void updateMoveOptions(int row, PkmnSpecies species) {
|
||||
setOptions(row, MOVE_COLUMN,
|
||||
isLegalMode() ? DataManager.getMoveOptions(gameVersion, species, getGender(row)) : DataManager.getMoveIds(),
|
||||
(a, b) -> DataManager.getMoveName(a).compareTo(DataManager.getMoveName(b)), true);
|
||||
}
|
||||
|
||||
private void updateGenderOptions(int row, PkmnSpecies species) {
|
||||
private void updateGenderOptions(int row) {
|
||||
PkmnSpecies species = getSpecies(row);
|
||||
setOptions(row, GENDER_COLUMN, isLegalMode() ? DataManager.getGenderOptions(gameVersion, species) : species.getGenders());
|
||||
}
|
||||
|
||||
private void updateFormOptions(int row, PkmnSpecies species) {
|
||||
setOptions(row, FORM_COLUMN, species.hasForms() ? Arrays.asList(species.forms()) : Collections.emptyList());
|
||||
private void updateFormOptions(int row) {
|
||||
PkmnSpecies species = getSpecies(row);
|
||||
setOptions(row, FORM_COLUMN, species.hasForms() ? (isLegalMode() ? DataManager.getFormOptions(gameVersion, species, getGender(row))
|
||||
: Arrays.asList(species.forms())) : Collections.emptyList());
|
||||
}
|
||||
|
||||
private void updateMoveOptions(int row) {
|
||||
setOptions(row, MOVE_COLUMN,
|
||||
isLegalMode() ? DataManager.getMoveOptions(gameVersion, getSpecies(row), getGender(row), getForm(row)) : DataManager.getMoveIds(),
|
||||
(a, b) -> DataManager.getMoveName(a).compareTo(DataManager.getMoveName(b)), true);
|
||||
}
|
||||
|
||||
public void loadProfile(Player player) {
|
||||
|
|
|
|||
|
|
@ -1159,6 +1159,7 @@
|
|||
324,
|
||||
351
|
||||
],
|
||||
"formMask": 1,
|
||||
"versionMask": 3327
|
||||
},
|
||||
{
|
||||
|
|
@ -1393,6 +1394,7 @@
|
|||
173,
|
||||
450
|
||||
],
|
||||
"formMask": 2,
|
||||
"versionMask": 4095
|
||||
},
|
||||
{
|
||||
|
|
@ -2074,6 +2076,56 @@
|
|||
575
|
||||
]
|
||||
},
|
||||
"Pokémon Café Forest": {
|
||||
"encounters": [
|
||||
{
|
||||
"species": 61,
|
||||
"moves": [
|
||||
114,
|
||||
352
|
||||
],
|
||||
"versionMask": 4095
|
||||
},
|
||||
{
|
||||
"species": 133,
|
||||
"moves": [
|
||||
129,
|
||||
204
|
||||
],
|
||||
"versionMask": 4095
|
||||
},
|
||||
{
|
||||
"species": 235,
|
||||
"moves": [
|
||||
214,
|
||||
445
|
||||
],
|
||||
"versionMask": 4095
|
||||
},
|
||||
{
|
||||
"species": 412,
|
||||
"moves": [
|
||||
173,
|
||||
450
|
||||
],
|
||||
"formMask": 1,
|
||||
"versionMask": 4095
|
||||
}
|
||||
],
|
||||
"items": [
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
33,
|
||||
50,
|
||||
82,
|
||||
83,
|
||||
84,
|
||||
134,
|
||||
157,
|
||||
221
|
||||
]
|
||||
},
|
||||
"Global Link Promotions": {
|
||||
"encounters": [
|
||||
{
|
||||
|
|
@ -2327,6 +2379,7 @@
|
|||
{
|
||||
"species": 493,
|
||||
"moves": [],
|
||||
"formMask": 1,
|
||||
"versionMask": 3167
|
||||
},
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user