PageRenderTime 61ms CodeModel.GetById 32ms RepoModel.GetById 0ms app.codeStats 0ms

/emulator/src/com/mmoscene/h4j/database/Room.java

https://bitbucket.org/teamchromide/habbo-4-java
Java | 151 lines | 121 code | 30 blank | 0 comment | 19 complexity | 3f5bd1162d44018bfd9b5dbd6afb43fc MD5 | raw file
  1. package com.mmoscene.h4j.database;
  2. import com.google.common.primitives.Ints;
  3. import com.mmoscene.h4j.H4J;
  4. import com.mmoscene.h4j.habbohotel.pathfinding.Position;
  5. import com.mmoscene.h4j.habbohotel.rooms.models.Model;
  6. import com.mmoscene.h4j.habbohotel.rooms.models.SquareState;
  7. import gnu.trove.map.hash.THashMap;
  8. import java.sql.Connection;
  9. import java.sql.PreparedStatement;
  10. import java.sql.ResultSet;
  11. import java.util.regex.Pattern;
  12. public class Room {
  13. public com.mmoscene.h4j.habbohotel.rooms.Room generate(ResultSet set) {
  14. com.mmoscene.h4j.habbohotel.rooms.Room room = new com.mmoscene.h4j.habbohotel.rooms.Room();
  15. try {
  16. room.setId(set.getInt("id"));
  17. room.setOwner(set.getInt("owner"));
  18. room.setState(set.getInt("state"));
  19. room.setGuild(set.getInt("guild"));
  20. room.setName(set.getString("name"));
  21. room.setDescription(set.getString("description"));
  22. room.setPassword(set.getString("password"));
  23. room.setModel(H4J.getHabboHotel().getRoomManager().getModel(set.getString("model")));
  24. room.setWallpaper(set.getString("wallpaper"));
  25. room.setFloor(set.getString("floor"));
  26. room.setLandscape(set.getString("landscape"));
  27. } catch (Exception ex) {
  28. H4J.getLogger(Room.class.getName()).info(ex.getMessage());
  29. }
  30. return room;
  31. }
  32. public com.mmoscene.h4j.habbohotel.rooms.Room generate(int id) {
  33. com.mmoscene.h4j.habbohotel.rooms.Room room = new com.mmoscene.h4j.habbohotel.rooms.Room();
  34. try(Connection connection = H4J.getStorage().getConnection()) {
  35. try(PreparedStatement statement = connection.prepareStatement("SELECT * FROM server_rooms WHERE id = ?")) {
  36. statement.setInt(1, id);
  37. try(ResultSet set = statement.executeQuery()) {
  38. while(set.next()) {
  39. room.setId(set.getInt("id"));
  40. room.setOwner(set.getInt("owner"));
  41. room.setState(set.getInt("state"));
  42. room.setGuild(set.getInt("guild"));
  43. room.setName(set.getString("name"));
  44. room.setDescription(set.getString("description"));
  45. room.setPassword(set.getString("password"));
  46. room.setModel(H4J.getHabboHotel().getRoomManager().getModel(set.getString("model")));
  47. room.setWallpaper(set.getString("wallpaper"));
  48. room.setFloor(set.getString("floor"));
  49. room.setLandscape(set.getString("landscape"));
  50. }
  51. }
  52. }
  53. } catch (Exception ex) {
  54. H4J.getLogger(Room.class.getName()).info(ex.getMessage());
  55. }
  56. return room;
  57. }
  58. public THashMap<String, Model> getModels() {
  59. THashMap<String, Model> models = new THashMap<>();
  60. try(Connection connection = H4J.getStorage().getConnection()) {
  61. try(PreparedStatement statement = connection.prepareStatement("SELECT * FROM server_room_models")) {
  62. try(ResultSet set = statement.executeQuery()) {
  63. while(set.next()) {
  64. Model m = new Model();
  65. m.setName(set.getString("id"));
  66. m.setDoor(new Position(
  67. set.getInt("door_x"),
  68. set.getInt("door_y"),
  69. set.getInt("door_z"),
  70. set.getInt("door_dir")));
  71. m.setHeightmap(set.getString("heightmap"));
  72. String s_map = "";
  73. String[] lines = m.getHeightmap().split(Character.toString((char) 13));
  74. m.setLimitX(lines[0].length());
  75. m.setLimitY(lines.length);
  76. m.setSquareStates(new int[m.getLimitX()][m.getLimitY()]);
  77. m.setSquareHeight(new double[m.getLimitX()][m.getLimitY()]);
  78. m.setSquares(new SquareState[m.getLimitX()][m.getLimitY()]);
  79. String relative = "";
  80. for (int y = 0; y < m.getLimitY(); y++) {
  81. if (y > 0) {
  82. lines[y] = lines[y].substring(1);
  83. }
  84. for (int x = 0; x < m.getLimitX(); x++) {
  85. String sq = lines[y].substring(x, x + 1).trim().toLowerCase();
  86. if (sq.equals("x")) {
  87. m.getSquares()[x][y] = SquareState.CLOSED;
  88. m.getSquareStates()[x][y] = 0;
  89. } else if (Ints.tryParse(sq) != null) {
  90. m.getSquares()[x][y] = SquareState.OPEN;
  91. m.getSquareStates()[x][y] = 1;
  92. m.getSquareHeight()[x][y] = Double.parseDouble(sq);
  93. }
  94. if (x == m.getDoor().getX() && y == m.getDoor().getY()) {
  95. m.getSquares()[x][y] = SquareState.OPEN;
  96. relative += m.getDoor().getZ() + "";
  97. } else {
  98. if (!sq.isEmpty() && sq != null) {
  99. relative += sq;
  100. }
  101. }
  102. }
  103. relative += (char) 13;
  104. }
  105. m.setRelativeHeightmap(relative);
  106. for(String l : lines) {
  107. if (!l.isEmpty() && l != null) {
  108. s_map += l + (char) 13;
  109. }
  110. }
  111. m.setHeightmap(s_map);
  112. models.put(m.getName(), m);
  113. }
  114. }
  115. }
  116. } catch (Exception ex) {
  117. H4J.getLogger(Room.class.getName()).info(ex.getMessage());
  118. }
  119. return models;
  120. }
  121. }