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 org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@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).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());

View File

@ -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;
};
}