LuaDeserializer
This commit is contained in:
parent
3bebf92599
commit
efd2acf642
@ -6,10 +6,7 @@ import com.alterdekim.javabot.Constants;
|
||||
import com.alterdekim.javabot.TelegramConfig;
|
||||
import com.alterdekim.javabot.entities.*;
|
||||
import com.alterdekim.javabot.service.*;
|
||||
import com.alterdekim.javabot.util.BotUtils;
|
||||
import com.alterdekim.javabot.util.GameState;
|
||||
import com.alterdekim.javabot.util.HashUtils;
|
||||
import com.alterdekim.javabot.util.LuaSerializer;
|
||||
import com.alterdekim.javabot.util.*;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.luaj.vm2.Globals;
|
||||
@ -261,6 +258,7 @@ public class BunkerBot extends TelegramLongPollingBot {
|
||||
globals.set("player", LuaSerializer.serializeObject(p));
|
||||
LuaValue chunk = globals.load(script.getScriptBody());
|
||||
chunk.call();
|
||||
players = LuaDeserializer.deserializePlayers(globals.get("players"));
|
||||
}
|
||||
|
||||
private void processNightButton(CallbackQuery callbackQuery) {
|
||||
|
110
src/main/java/com/alterdekim/javabot/util/LuaDeserializer.java
Normal file
110
src/main/java/com/alterdekim/javabot/util/LuaDeserializer.java
Normal file
@ -0,0 +1,110 @@
|
||||
package com.alterdekim.javabot.util;
|
||||
|
||||
import com.alterdekim.javabot.bot.InfoSections;
|
||||
import com.alterdekim.javabot.bot.Player;
|
||||
import com.alterdekim.javabot.entities.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.luaj.vm2.LuaTable;
|
||||
import org.luaj.vm2.LuaValue;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
@Slf4j
|
||||
public class LuaDeserializer {
|
||||
public static List<Player> deserializePlayers(LuaValue val) {
|
||||
LuaTable table = val.checktable();
|
||||
return Arrays.stream(table.keys())
|
||||
.map(key -> deserializePlayer(table.get(key).checktable()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private static Player deserializePlayer(LuaTable table) {
|
||||
int age = table.get("age").checkint();
|
||||
Player p = new Player(table.get("telegramId").checklong(), table.get("name").checkjstring());
|
||||
p.setAge(age);
|
||||
p.setIsAnswered(table.get("isAnswered").checkboolean());
|
||||
p.setFirstName(table.get("firstName").checkjstring());
|
||||
p.setIsVoted(table.get("isVoted").checkboolean());
|
||||
p.setScriptMessageId(table.get("scriptMessageId").checkint());
|
||||
|
||||
p.setGender(deserializeGender(table.get("gender").checktable()));
|
||||
p.setHealth(deserializeHealth(table.get("health").checktable()));
|
||||
p.setHobby(deserializeHobby(table.get("hobby").checktable()));
|
||||
p.setWork(deserializeWork(table.get("work").checktable()));
|
||||
p.setLuggage(deserializeLuggage(table.get("luggage").checktable()));
|
||||
|
||||
p.setInfoSections(deserializeInfoSections(table.get("infoSections").checktable()));
|
||||
return p;
|
||||
}
|
||||
|
||||
private static InfoSections deserializeInfoSections(LuaTable table) {
|
||||
InfoSections infoSections = new InfoSections();
|
||||
infoSections.setIsGenderShowed(table.get("isGenderShowed").checkboolean());
|
||||
infoSections.setIsAgeShowed(table.get("isAgeShowed").checkboolean());
|
||||
infoSections.setIsWorkShowed(table.get("isWorkShowed").checkboolean());
|
||||
infoSections.setIsLuggageShowed(table.get("isLuggageShowed").checkboolean());
|
||||
infoSections.setIsHobbyShowed(table.get("isHobbyShowed").checkboolean());
|
||||
infoSections.setIsHealthShowed(table.get("isHealthShowed").checkboolean());
|
||||
return infoSections;
|
||||
}
|
||||
|
||||
private static Hobby deserializeHobby(LuaTable table) {
|
||||
Hobby hobby = new Hobby();
|
||||
hobby.setId(table.get("id").checklong());
|
||||
hobby.setTextDescId(table.get("textDescId").checklong());
|
||||
hobby.setAsocial(table.get("asocial").tofloat());
|
||||
hobby.setPower(table.get("power").tofloat());
|
||||
hobby.setViolence(table.get("violence").tofloat());
|
||||
hobby.setFoodstuffs(table.get("foodstuffs").tofloat());
|
||||
return hobby;
|
||||
}
|
||||
|
||||
private static Work deserializeWork(LuaTable table) {
|
||||
Work work = new Work();
|
||||
work.setId(table.get("id").checklong());
|
||||
work.setTextDescId(table.get("textDescId").checklong());
|
||||
work.setTextNameId(table.get("textNameId").checklong());
|
||||
work.setAsocial(table.get("asocial").tofloat());
|
||||
work.setPower(table.get("power").tofloat());
|
||||
work.setViolence(table.get("violence").tofloat());
|
||||
work.setFoodstuffs(table.get("foodstuffs").tofloat());
|
||||
return work;
|
||||
}
|
||||
|
||||
private static Luggage deserializeLuggage(LuaTable table) {
|
||||
Luggage luggage = new Luggage();
|
||||
luggage.setId(table.get("id").checklong());
|
||||
luggage.setTextDescId(table.get("textDescId").checklong());
|
||||
luggage.setTextNameId(table.get("textNameId").checklong());
|
||||
luggage.setAsocial(table.get("asocial").tofloat());
|
||||
luggage.setPower(table.get("power").tofloat());
|
||||
luggage.setViolence(table.get("violence").tofloat());
|
||||
luggage.setFoodstuffs(table.get("foodstuffs").tofloat());
|
||||
luggage.setGarbage(table.get("garbage").checkboolean());
|
||||
return luggage;
|
||||
}
|
||||
|
||||
private static Health deserializeHealth(LuaTable table) {
|
||||
Health health = new Health();
|
||||
health.setId(table.get("id").checklong());
|
||||
health.setHealth_index(table.get("health_index").tofloat());
|
||||
health.setIsChildfree(table.get("isChildfree").checkboolean());
|
||||
health.setTextDescId(table.get("textDescId").checklong());
|
||||
health.setTextNameId(table.get("textNameId").checklong());
|
||||
return health;
|
||||
}
|
||||
|
||||
private static Bio deserializeGender(LuaTable table) {
|
||||
Bio bio = new Bio();
|
||||
bio.setId(table.get("id").checklong());
|
||||
bio.setGenderTextId(table.get("genderTextId").checklong());
|
||||
bio.setCanDie(table.get("canDie").checkboolean());
|
||||
bio.setIsMale(table.get("isMale").checkboolean());
|
||||
bio.setIsFemale(table.get("isFemale").checkboolean());
|
||||
return bio;
|
||||
}
|
||||
}
|
@ -44,6 +44,18 @@ public class LuaSerializer {
|
||||
case "java.lang.Integer":
|
||||
map.put(name, ((Integer) f.get(o)).intValue());
|
||||
break;
|
||||
case "float":
|
||||
map.put(name, f.getFloat(o));
|
||||
break;
|
||||
case "java.lang.Float":
|
||||
map.put(name, ((Float) f.get(o)).floatValue());
|
||||
break;
|
||||
case "double":
|
||||
map.put(name, f.getDouble(o));
|
||||
break;
|
||||
case "java.lang.Double":
|
||||
map.put(name, ((Double) f.get(o)).doubleValue());
|
||||
break;
|
||||
case "boolean":
|
||||
map.put(name, f.getBoolean(o));
|
||||
break;
|
||||
@ -53,6 +65,8 @@ public class LuaSerializer {
|
||||
case "java.lang.String":
|
||||
map.put(name, (String) f.get(o));
|
||||
break;
|
||||
case "java.util.List":
|
||||
break;
|
||||
default:
|
||||
map.put(name, serializeObject(f.get(o)));
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user