/* * IDK Game Server by Steve Winfield * https://github.com/WinfieldSteve */ package org.stevewinfield.suja.idk.game.bots; import org.apache.log4j.Logger; import org.magicwerk.brownies.collections.GapList; import org.stevewinfield.suja.idk.Bootloader; import org.stevewinfield.suja.idk.game.players.PlayerInformation; import org.stevewinfield.suja.idk.game.rooms.coordination.Vector3; import java.sql.ResultSet; import java.sql.SQLException; import java.util.concurrent.ConcurrentHashMap; public class BotInstance { public int getId() { return id; } public int getStartRoomId() { return startRoomId; } public String getBotName() { return botName; } public String getAvatar() { return avatar; } public int getGender() { return gender; } public String getMission() { return mission; } public int getStartRotation() { return startRotation; } public Vector3 getStartPosition() { return startPosition; } public IBotInteractor getInteractor() { return Bootloader.getGame().getBotManager().getInteractors().get(this.interactorId); } public int getInteractorId() { return interactorId; } public boolean isMovingEnabled() { return movingEnabled; } public GapList<BotPhrase> getPhrases() { return phrases; } public ConcurrentHashMap<String, BotKeywordReaction> getKeywordReactions() { return keywordReactions; } public BotInstance() { this.botName = ""; this.avatar = ""; this.mission = ""; this.startPosition = new Vector3(0, 0, 0); this.phrases = new GapList<>(); this.keywordReactions = new ConcurrentHashMap<>(); } public void set(final ResultSet row, final ConcurrentHashMap<Integer, IBotInteractor> interactors) throws SQLException { this.id = row.getInt("id"); this.startRoomId = row.getInt("start_room_id"); this.botName = row.getString("nickname"); this.avatar = row.getString("figurecode"); this.gender = row.getString("gender").toUpperCase().equals("F") ? PlayerInformation.FEMALE_GENDER : PlayerInformation.MALE_GENDER; this.mission = row.getString("motto"); this.startRotation = row.getInt("start_rotation"); this.startPosition = new Vector3(row.getInt("start_position_x"), row.getInt("start_position_y"), row.getDouble("start_position_altitude")); this.interactorId = row.getInt("interactor"); this.movingEnabled = row.getInt("moving_enabled") == 1; } public void addPhrase(final BotPhrase phrase) { this.phrases.add(phrase); } public void addKeyword(final String keyword, final BotKeywordReaction reaction) { this.keywordReactions.put(keyword, reaction); } private int id; private int startRoomId; private String botName; private String avatar; private int gender; private String mission; private int startRotation; private Vector3 startPosition; private int interactorId; private boolean movingEnabled; private final GapList<BotPhrase> phrases; private final ConcurrentHashMap<String, BotKeywordReaction> keywordReactions; }