package net.zomis.cardshifter.ecs.usage;
import com.cardshifter.api.both.PlayerConfigMessage;
import com.cardshifter.api.config.DeckConfig;
import com.cardshifter.api.messages.Message;
import com.cardshifter.api.outgoing.CardInfoMessage;
import com.cardshifter.api.outgoing.WelcomeMessage;
import com.cardshifter.api.serial.ByteTransformer;
import com.cardshifter.serialization.NormalReflection;
import com.cardshifter.core.Log4jAdapter;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
public class CardshifterIO {
public static void configureMapper(ObjectMapper mapper) {
mapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false);
mapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
mapper.registerSubtypes(DeckConfig.class);
SimpleModule module = new SimpleModule("", new Version(0, 5, 0, "", "com.cardshifter", "cardshifter"));
module.setMixInAnnotation(DeckConfig.class, MixinDeckConfig.class);
module.setMixInAnnotation(Message.class, MixinMessage.class);
module.setMixInAnnotation(CardInfoMessage.class, MixinCardInfoMessage.class);
module.setMixInAnnotation(PlayerConfigMessage.class, MixinPlayerConfigMessage.class);
module.setMixInAnnotation(WelcomeMessage.class, MixinWelcomeMessage.class);
mapper.registerModule(module);
}
public static ObjectMapper mapper() {
ObjectMapper mapper = new ObjectMapper();
configureMapper(mapper);
return mapper;
}
public static ByteTransformer createByteTransformer() {
return new ByteTransformer(new Log4jAdapter(), new NormalReflection());
}
}