Fixed bugs

This commit is contained in:
Michael Wain 2024-04-09 01:29:11 +03:00
parent b8ba7922af
commit da9fdadc12
4 changed files with 50 additions and 15 deletions

View File

@ -3,6 +3,7 @@ package com.alterdekim.javabot;
import lombok.Data; import lombok.Data;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Data @Data

View File

@ -0,0 +1,31 @@
package com.alterdekim.javabot.bot;
import com.alterdekim.javabot.Constants;
import com.alterdekim.javabot.util.HashUtils;
public enum BioButtons {
HOBBY(Constants.HOBBY_BTN),
WORK(Constants.WORK_BTN),
HEALTH(Constants.HEALTH_BTN),
AGE(Constants.AGE_BTN),
GENDER(Constants.GENDER_BTN),
LUGGAGE(Constants.LUGG_BTN),
UNKNOWN("");
private final String name;
BioButtons(String name) {
this.name = name;
}
public String getHash() {
return HashUtils.getCRC32(this.name.getBytes());
}
public static BioButtons fromHash( String hash ) {
for( BioButtons b : values() ) {
if( b.getHash().equals(hash) ) return b;
}
return UNKNOWN;
}
}

View File

@ -202,8 +202,10 @@ public class BunkerBot extends TelegramLongPollingBot {
players.get(i).setLuggage((Luggage) BotUtils.getRandomFromList(luggs, random)); players.get(i).setLuggage((Luggage) BotUtils.getRandomFromList(luggs, random));
players.get(i).setHobby((Hobby) BotUtils.getRandomFromList(hobbies, random)); players.get(i).setHobby((Hobby) BotUtils.getRandomFromList(hobbies, random));
players.get(i).setHealth((Health) BotUtils.getRandomFromList(healths, random)); players.get(i).setHealth((Health) BotUtils.getRandomFromList(healths, random));
if( random.nextInt(100) >= 60 || (i == (players.size()-1) && isNoOneHasScripts()) ) { if( (random.nextInt(100) >= 60 || (i == (players.size()-1) && isNoOneHasScripts())) && !scripts.isEmpty() ) {
players.get(i).setScripts(Arrays.asList((ActionScript) BotUtils.getRandomFromList(scripts, random))); ActionScript asc = (ActionScript) BotUtils.getRandomFromList(scripts, random);
scripts.removeIf(p -> p.getId().longValue() == asc.getId().longValue());
players.get(i).setScripts(Arrays.asList(asc));
} else { } else {
players.get(i).setScripts(new ArrayList<>()); players.get(i).setScripts(new ArrayList<>());
} }
@ -247,7 +249,7 @@ public class BunkerBot extends TelegramLongPollingBot {
private void processNightScriptButton(Player p, CallbackQuery callbackQuery, String data) { private void processNightScriptButton(Player p, CallbackQuery callbackQuery, String data) {
ActionScript script = p.getScripts().stream() ActionScript script = p.getScripts().stream()
.filter(s -> textDataValService.getTextDataValById(s.getTextNameId()).getText().equals(data)) .filter(s -> HashUtils.getCRC32(textDataValService.getTextDataValById(s.getTextNameId()).getText().getBytes()).equals(data))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if( script == null ) return; if( script == null ) return;
@ -281,44 +283,44 @@ public class BunkerBot extends TelegramLongPollingBot {
!getPlayerById(callbackQuery.getFrom().getId()).getIsAnswered() ) { !getPlayerById(callbackQuery.getFrom().getId()).getIsAnswered() ) {
Player p = getPlayerById(callbackQuery.getFrom().getId()); Player p = getPlayerById(callbackQuery.getFrom().getId());
InfoSections ins = p.getInfoSections(); InfoSections ins = p.getInfoSections();
switch (new String(HashUtils.decodeHexString(callbackQuery.getData()))) { switch(BioButtons.fromHash(callbackQuery.getData())) {
case Constants.GENDER_BTN: case GENDER:
dayNightFields.appendMessage(String.format(Constants.GENDER_MESAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getGender().getGenderTextId()), dayNightFields.appendMessage(String.format(Constants.GENDER_MESAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getGender().getGenderTextId()),
p.getGender().getCanDie() ? Constants.TRUE : Constants.FALSE, p.getGender().getCanDie() ? Constants.TRUE : Constants.FALSE,
p.getGender().getIsMale() ? Constants.TRUE : Constants.FALSE, p.getGender().getIsMale() ? Constants.TRUE : Constants.FALSE,
p.getGender().getIsFemale() ? Constants.TRUE : Constants.FALSE) + "\n"); p.getGender().getIsFemale() ? Constants.TRUE : Constants.FALSE) + "\n");
ins.setIsGenderShowed(true); ins.setIsGenderShowed(true);
break; break;
case Constants.HEALTH_BTN: case HEALTH:
dayNightFields.appendMessage(String.format(Constants.HEALTH_MESSAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getHealth().getTextNameId()), dayNightFields.appendMessage(String.format(Constants.HEALTH_MESSAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getHealth().getTextNameId()),
getStringById(p.getHealth().getTextDescId()), getStringById(p.getHealth().getTextDescId()),
(int) (p.getHealth().getHealth_index()*100f), (int) (p.getHealth().getHealth_index()*100f),
p.getHealth().getIsChildfree() ? Constants.TRUE : Constants.FALSE) + "\n"); p.getHealth().getIsChildfree() ? Constants.TRUE : Constants.FALSE) + "\n");
ins.setIsHealthShowed(true); ins.setIsHealthShowed(true);
break; break;
case Constants.AGE_BTN: case AGE:
dayNightFields.appendMessage(String.format(Constants.AGE_MESSAGE, callbackQuery.getFrom().getFirstName(), p.getAge()) + "\n"); dayNightFields.appendMessage(String.format(Constants.AGE_MESSAGE, callbackQuery.getFrom().getFirstName(), p.getAge()) + "\n");
ins.setIsAgeShowed(true); ins.setIsAgeShowed(true);
break; break;
case Constants.HOBBY_BTN: case HOBBY:
dayNightFields.appendMessage(String.format(Constants.HOBBY_MESSAGE, callbackQuery.getFrom().getFirstName(), dayNightFields.appendMessage(String.format(Constants.HOBBY_MESSAGE, callbackQuery.getFrom().getFirstName(),
getStringById(p.getHobby().getTextDescId())) + "\n"); getStringById(p.getHobby().getTextDescId())) + "\n");
ins.setIsHobbyShowed(true); ins.setIsHobbyShowed(true);
break; break;
case Constants.LUGG_BTN: case LUGGAGE:
dayNightFields.appendMessage(String.format(Constants.LUGG_MESSAGE, callbackQuery.getFrom().getFirstName(), dayNightFields.appendMessage(String.format(Constants.LUGG_MESSAGE, callbackQuery.getFrom().getFirstName(),
getStringById(p.getLuggage().getTextNameId()), getStringById(p.getLuggage().getTextNameId()),
getStringById(p.getLuggage().getTextDescId())) + "\n"); getStringById(p.getLuggage().getTextDescId())) + "\n");
ins.setIsLuggageShowed(true); ins.setIsLuggageShowed(true);
break; break;
case Constants.WORK_BTN: case WORK:
dayNightFields.appendMessage(String.format(Constants.WORK_MESSAGE, callbackQuery.getFrom().getFirstName(), dayNightFields.appendMessage(String.format(Constants.WORK_MESSAGE, callbackQuery.getFrom().getFirstName(),
getStringById(p.getWork().getTextNameId()), getStringById(p.getWork().getTextNameId()),
getStringById(p.getWork().getTextDescId())) + "\n"); getStringById(p.getWork().getTextDescId())) + "\n");
ins.setIsWorkShowed(true); ins.setIsWorkShowed(true);
break; break;
default: default:
processNightScriptButton(p, callbackQuery, new String(HashUtils.decodeHexString(callbackQuery.getData()))); processNightScriptButton(p, callbackQuery, callbackQuery.getData());
return; return;
} }
setIsAnswered(callbackQuery.getFrom().getId()); setIsAnswered(callbackQuery.getFrom().getId());

View File

@ -46,10 +46,11 @@ public class LuaDeserializer {
private static Object checkObject(Field f, LuaValue val) { private static Object checkObject(Field f, LuaValue val) {
return switch(f.getType().getCanonicalName()) { return switch(f.getType().getCanonicalName()) {
case "java.lang.Boolean" -> val.checkboolean(); case "java.lang.Boolean" -> Boolean.valueOf(val.checkboolean());
case "java.lang.Long" -> val.checklong(); case "java.lang.Long" -> Long.valueOf(val.checklong());
case "java.lang.Float", "java.lang.Double" -> val.checkdouble(); case "java.lang.Float" -> Float.valueOf((float) val.checkdouble());
case "java.lang.Integer" -> val.checkint(); case "java.lang.Double" -> Double.valueOf(val.checkdouble());
case "java.lang.Integer" -> Integer.valueOf(val.checkint());
default -> null; default -> null;
}; };
} }