From da9fdadc12c167d74b3cdd6f7073946ff9749614 Mon Sep 17 00:00:00 2001 From: alterdekim Date: Tue, 9 Apr 2024 01:29:11 +0300 Subject: [PATCH] Fixed bugs --- .../alterdekim/javabot/TelegramConfig.java | 1 + .../alterdekim/javabot/bot/BioButtons.java | 31 +++++++++++++++++++ .../javabot/components/BunkerBot.java | 24 +++++++------- .../javabot/util/LuaDeserializer.java | 9 +++--- 4 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/alterdekim/javabot/bot/BioButtons.java diff --git a/src/main/java/com/alterdekim/javabot/TelegramConfig.java b/src/main/java/com/alterdekim/javabot/TelegramConfig.java index 455cf3f..e626f4f 100644 --- a/src/main/java/com/alterdekim/javabot/TelegramConfig.java +++ b/src/main/java/com/alterdekim/javabot/TelegramConfig.java @@ -3,6 +3,7 @@ package com.alterdekim.javabot; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; @Data diff --git a/src/main/java/com/alterdekim/javabot/bot/BioButtons.java b/src/main/java/com/alterdekim/javabot/bot/BioButtons.java new file mode 100644 index 0000000..b39cb83 --- /dev/null +++ b/src/main/java/com/alterdekim/javabot/bot/BioButtons.java @@ -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; + } +} diff --git a/src/main/java/com/alterdekim/javabot/components/BunkerBot.java b/src/main/java/com/alterdekim/javabot/components/BunkerBot.java index f09ad19..688892d 100644 --- a/src/main/java/com/alterdekim/javabot/components/BunkerBot.java +++ b/src/main/java/com/alterdekim/javabot/components/BunkerBot.java @@ -202,8 +202,10 @@ public class BunkerBot extends TelegramLongPollingBot { players.get(i).setLuggage((Luggage) BotUtils.getRandomFromList(luggs, random)); players.get(i).setHobby((Hobby) BotUtils.getRandomFromList(hobbies, random)); players.get(i).setHealth((Health) BotUtils.getRandomFromList(healths, random)); - if( random.nextInt(100) >= 60 || (i == (players.size()-1) && isNoOneHasScripts()) ) { - players.get(i).setScripts(Arrays.asList((ActionScript) BotUtils.getRandomFromList(scripts, random))); + if( (random.nextInt(100) >= 60 || (i == (players.size()-1) && isNoOneHasScripts())) && !scripts.isEmpty() ) { + ActionScript asc = (ActionScript) BotUtils.getRandomFromList(scripts, random); + scripts.removeIf(p -> p.getId().longValue() == asc.getId().longValue()); + players.get(i).setScripts(Arrays.asList(asc)); } else { players.get(i).setScripts(new ArrayList<>()); } @@ -247,7 +249,7 @@ public class BunkerBot extends TelegramLongPollingBot { private void processNightScriptButton(Player p, CallbackQuery callbackQuery, String data) { 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() .orElse(null); if( script == null ) return; @@ -281,44 +283,44 @@ public class BunkerBot extends TelegramLongPollingBot { !getPlayerById(callbackQuery.getFrom().getId()).getIsAnswered() ) { Player p = getPlayerById(callbackQuery.getFrom().getId()); InfoSections ins = p.getInfoSections(); - switch (new String(HashUtils.decodeHexString(callbackQuery.getData()))) { - case Constants.GENDER_BTN: + switch(BioButtons.fromHash(callbackQuery.getData())) { + case GENDER: dayNightFields.appendMessage(String.format(Constants.GENDER_MESAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getGender().getGenderTextId()), p.getGender().getCanDie() ? Constants.TRUE : Constants.FALSE, p.getGender().getIsMale() ? Constants.TRUE : Constants.FALSE, p.getGender().getIsFemale() ? Constants.TRUE : Constants.FALSE) + "\n"); ins.setIsGenderShowed(true); break; - case Constants.HEALTH_BTN: + case HEALTH: dayNightFields.appendMessage(String.format(Constants.HEALTH_MESSAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getHealth().getTextNameId()), getStringById(p.getHealth().getTextDescId()), (int) (p.getHealth().getHealth_index()*100f), p.getHealth().getIsChildfree() ? Constants.TRUE : Constants.FALSE) + "\n"); ins.setIsHealthShowed(true); break; - case Constants.AGE_BTN: + case AGE: dayNightFields.appendMessage(String.format(Constants.AGE_MESSAGE, callbackQuery.getFrom().getFirstName(), p.getAge()) + "\n"); ins.setIsAgeShowed(true); break; - case Constants.HOBBY_BTN: + case HOBBY: dayNightFields.appendMessage(String.format(Constants.HOBBY_MESSAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getHobby().getTextDescId())) + "\n"); ins.setIsHobbyShowed(true); break; - case Constants.LUGG_BTN: + case LUGGAGE: dayNightFields.appendMessage(String.format(Constants.LUGG_MESSAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getLuggage().getTextNameId()), getStringById(p.getLuggage().getTextDescId())) + "\n"); ins.setIsLuggageShowed(true); break; - case Constants.WORK_BTN: + case WORK: dayNightFields.appendMessage(String.format(Constants.WORK_MESSAGE, callbackQuery.getFrom().getFirstName(), getStringById(p.getWork().getTextNameId()), getStringById(p.getWork().getTextDescId())) + "\n"); ins.setIsWorkShowed(true); break; default: - processNightScriptButton(p, callbackQuery, new String(HashUtils.decodeHexString(callbackQuery.getData()))); + processNightScriptButton(p, callbackQuery, callbackQuery.getData()); return; } setIsAnswered(callbackQuery.getFrom().getId()); diff --git a/src/main/java/com/alterdekim/javabot/util/LuaDeserializer.java b/src/main/java/com/alterdekim/javabot/util/LuaDeserializer.java index 91fdeee..f415135 100644 --- a/src/main/java/com/alterdekim/javabot/util/LuaDeserializer.java +++ b/src/main/java/com/alterdekim/javabot/util/LuaDeserializer.java @@ -46,10 +46,11 @@ public class LuaDeserializer { private static Object checkObject(Field f, LuaValue val) { return switch(f.getType().getCanonicalName()) { - case "java.lang.Boolean" -> val.checkboolean(); - case "java.lang.Long" -> val.checklong(); - case "java.lang.Float", "java.lang.Double" -> val.checkdouble(); - case "java.lang.Integer" -> val.checkint(); + case "java.lang.Boolean" -> Boolean.valueOf(val.checkboolean()); + case "java.lang.Long" -> Long.valueOf(val.checklong()); + case "java.lang.Float" -> Float.valueOf((float) val.checkdouble()); + case "java.lang.Double" -> Double.valueOf(val.checkdouble()); + case "java.lang.Integer" -> Integer.valueOf(val.checkint()); default -> null; }; }