Skip to content

Commit

Permalink
feat(specs): add ability to specify gender in random gender spec
Browse files Browse the repository at this point in the history
  • Loading branch information
danorris709 committed Apr 24, 2024
1 parent fbfc9cc commit ef553c6
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.envyful.pixel.hunt.remastered.forge.spec;

import com.envyful.api.math.UtilRandom;
import com.envyful.pixel.hunt.remastered.forge.EnvyHunt;
import com.google.common.collect.Sets;
import com.pixelmonmod.api.pokemon.requirement.AbstractPokemonRequirement;
import com.pixelmonmod.api.requirement.Requirement;
Expand Down Expand Up @@ -31,11 +32,30 @@ public RandomGenderRequirement(Gender gender) {

@Override
public List<Requirement<Pokemon, PixelmonEntity, ?>> createSimple(String key, String spec) {
if (!spec.startsWith(key)) {
if (!spec.startsWith(key + ":")) {
return Collections.emptyList();
}

return Collections.singletonList(this.createInstance(UtilRandom.getRandomElement(Gender.values())));
String[] args = spec.split(":");

if (args.length != 2) {
return Collections.singletonList(this.createInstance(UtilRandom.getRandomElement(Gender.values())));
}

String[] genders = args[1].split(",");
String genderName = UtilRandom.getRandomElement(genders);

if (genderName == null) {
return Collections.emptyList();
}

var randomGender = Gender.getGender(genderName);

if (randomGender == null) {
EnvyHunt.getLogger().error("Unable to find gender: " + genderName);
}

return randomGender == null ? Collections.emptyList() : Collections.singletonList(this.createInstance(randomGender));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,30 @@ public RandomGenderRequirement(Gender gender) {

@Override
public ParseAttempt<List<Requirement<Pokemon, PixelmonEntity, ?>>> create(String key, String spec) {
if (!spec.startsWith(key)) {
if (!spec.startsWith(key + ":")) {
return ParseAttempt.error("No key found");
}

return this.createInstance(UtilRandom.getRandomElement(Gender.values()))
.map(Collections::singletonList);
String[] args = spec.split(":");

if (args.length != 2) {
this.createInstance(UtilRandom.getRandomElement(Gender.values())).map(Collections::singletonList);
}

String[] genders = args[1].split(",");
String genderName = UtilRandom.getRandomElement(genders);

if (genderName == null) {
return ParseAttempt.error("Error gender " + genderName + " is not valid");
}

var randomGender = Gender.getGender(genderName);

if (randomGender == null) {
return ParseAttempt.error("Error gender " + genderName + " is not valid");
}

return this.createInstance(randomGender).map(Collections::singletonList);
}

@Override
Expand Down

0 comments on commit ef553c6

Please sign in to comment.