Room.java Clean-Up

This commit is contained in:
Stankman 2023-07-25 11:17:15 -05:00
parent ff2cfc2498
commit 4fee1bccf3
4 changed files with 68 additions and 32 deletions

View File

@ -2,6 +2,10 @@ package com.eu.habbo.habbohotel.commands.list;
import com.eu.habbo.habbohotel.commands.Command; import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomUnitStatus;
import java.util.Map;
import java.util.Set;
public class TestCommand extends Command { public class TestCommand extends Command {
public TestCommand() { public TestCommand() {
@ -10,7 +14,17 @@ public class TestCommand extends Command {
@Override @Override
public boolean handle(GameClient gameClient, String[] params) { public boolean handle(GameClient gameClient, String[] params) {
StringBuilder message = new StringBuilder("RoomUnit Statuses");
Set<Map.Entry<RoomUnitStatus, String>> statuses = gameClient.getHabbo().getRoomUnit().getStatuses().entrySet();
message.append("(").append(statuses.size()).append("):\r\n");
for(Map.Entry<RoomUnitStatus, String> status : statuses) {
message.append(status.getKey().toString()).append("\r");
}
gameClient.getHabbo().alert(new String[]{message.toString()});
return true; return true;
} }
} }

View File

@ -784,7 +784,9 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
habbo.getHabboStats().getChatCounter().decrementAndGet(); habbo.getHabboStats().getChatCounter().decrementAndGet();
} }
if (this.cycleRoomUnit(habbo.getRoomUnit())) { habbo.getRoomUnit().cycle(this);
if(habbo.getRoomUnit().isStatusUpdateNeeded()) {
habbo.getRoomUnit().setStatusUpdateNeeded(false); habbo.getRoomUnit().setStatusUpdateNeeded(false);
updatedUnit.add(habbo.getRoomUnit()); updatedUnit.add(habbo.getRoomUnit());
} }

View File

@ -381,12 +381,6 @@ public class RoomItemManager {
THashSet<RoomTile> occupiedTiles = this.room.getLayout().getTilesAt(targetTile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation); THashSet<RoomTile> occupiedTiles = this.room.getLayout().getTilesAt(targetTile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation);
THashSet<RoomTile> newOccupiedTiles = this.room.getLayout().getTilesAt(targetTile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation); THashSet<RoomTile> newOccupiedTiles = this.room.getLayout().getTilesAt(targetTile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation);
FurnitureMovementError fits = this.furnitureFitsAt(targetTile, item, rotation, true);
if (!fits.equals(FurnitureMovementError.NONE) && !pluginHelper) {
return fits;
}
RoomItem topItem = this.getTopItemAt(occupiedTiles, null); RoomItem topItem = this.getTopItemAt(occupiedTiles, null);
if ((stackHelper.isEmpty() && !pluginHelper) || item.getBaseItem().getInteractionType().getType() == InteractionWater.class) { if ((stackHelper.isEmpty() && !pluginHelper) || item.getBaseItem().getInteractionType().getType() == InteractionWater.class) {
@ -652,21 +646,15 @@ public class RoomItemManager {
THashSet<RoomTile> occupiedTiles = this.room.getLayout().getTilesAt(targetTile, baseItem.getWidth(), baseItem.getLength(), rotation); THashSet<RoomTile> occupiedTiles = this.room.getLayout().getTilesAt(targetTile, baseItem.getWidth(), baseItem.getLength(), rotation);
for (RoomTile t : occupiedTiles) { for (RoomTile occupiedTile : occupiedTiles) {
if (t.getState() == RoomTileState.INVALID) { if (occupiedTile.getState() == RoomTileState.INVALID) {
return FurnitureMovementError.INVALID_MOVE; return FurnitureMovementError.INVALID_MOVE;
} }
if (!wiredPlaceUnder || (!item.isWalkable() && !baseItem.allowSit() && !baseItem.allowLay())) { if(!Emulator.getConfig().getBoolean("wired.place.under", false) || (Emulator.getConfig().getBoolean("wired.place.under", false) && !item.isWalkable() && !item.getBaseItem().allowSit() && !item.getBaseItem().allowLay())) {
if (checkForUnits) { if (checkForUnits && this.room.getRoomUnitManager().hasHabbosAt(occupiedTile)) return FurnitureMovementError.TILE_HAS_HABBOS;
if (this.room.getRoomUnitManager().hasHabbosAt(t)) { if (checkForUnits && this.room.getRoomUnitManager().hasBotsAt(occupiedTile)) return FurnitureMovementError.TILE_HAS_BOTS;
return FurnitureMovementError.TILE_HAS_HABBOS; if (checkForUnits && this.room.getRoomUnitManager().hasPetsAt(occupiedTile)) return FurnitureMovementError.TILE_HAS_PETS;
} else if (this.room.getRoomUnitManager().hasBotsAt(t)) {
return FurnitureMovementError.TILE_HAS_BOTS;
} else if (this.room.getRoomUnitManager().hasPetsAt(t)) {
return FurnitureMovementError.TILE_HAS_PETS;
}
}
} }
} }

View File

@ -64,6 +64,17 @@ public class RoomAvatar extends RoomUnit {
this.removeStatus(RoomUnitStatus.SIGN); this.removeStatus(RoomUnitStatus.SIGN);
} }
if(!this.isWalking() || this.getPath() == null || this.getPath().isEmpty()) {
if (this.hasStatus(RoomUnitStatus.MOVE) && !this.isAnimateWalk()) {
this.removeStatus(RoomUnitStatus.MOVE);
}
if(!this.isWalking()) {
RoomItem topItem = this.getRoom().getRoomItemManager().getTopItemAt(this.getCurrentPosition());
return this.handleSitStatus(topItem) || this.handleLayStatus(topItem);
}
}
Habbo habboT = room.getRoomUnitManager().getHabboByRoomUnit(this); Habbo habboT = room.getRoomUnitManager().getHabboByRoomUnit(this);
if (!this.isWalking() && !this.isKicked() && this.removeStatus(RoomUnitStatus.MOVE) == null && habboT != null) { if (!this.isWalking() && !this.isKicked() && this.removeStatus(RoomUnitStatus.MOVE) == null && habboT != null) {
@ -263,7 +274,7 @@ public class RoomAvatar extends RoomUnit {
} }
if(habbo != null) { if(habbo != null) {
RoomItem topItem = room.getRoomItemManager().getTopItemAt(next.getX(), next.getY()); RoomItem topItem = room.getRoomItemManager().getTopItemAt(next);
boolean isAtDoor = next.getX() == room.getLayout().getDoorX() && next.getY() == room.getLayout().getDoorY(); boolean isAtDoor = next.getX() == room.getLayout().getDoorX() && next.getY() == room.getLayout().getDoorY();
boolean publicRoomKicks = !room.getRoomInfo().isPublicRoom() || Emulator.getConfig().getBoolean("hotel.room.public.doortile.kick"); boolean publicRoomKicks = !room.getRoomInfo().isPublicRoom() || Emulator.getConfig().getBoolean("hotel.room.public.doortile.kick");
@ -333,28 +344,49 @@ public class RoomAvatar extends RoomUnit {
} }
} }
private void handleSitStatus(RoomItem topItem) { private boolean handleSitStatus(RoomItem topItem) {
if(topItem == null || !topItem.getBaseItem().allowSit()) {
return false;
}
if(!this.isCmdSitEnabled()) { if(!this.isCmdSitEnabled()) {
if((topItem == null || !topItem.getBaseItem().allowSit()) && this.hasStatus(RoomUnitStatus.SIT)) { if(this.getCurrentPosition().getState().equals(RoomTileState.SIT) && !this.hasStatus(RoomUnitStatus.SIT)) {
this.removeStatus(RoomUnitStatus.SIT);
this.setStatusUpdateNeeded(true);
} else if(this.getCurrentPosition().getState() == RoomTileState.SIT && (!this.hasStatus(RoomUnitStatus.SIT))) {
this.setStatus(RoomUnitStatus.SIT, String.valueOf(Item.getCurrentHeight(topItem))); this.setStatus(RoomUnitStatus.SIT, String.valueOf(Item.getCurrentHeight(topItem)));
this.setStatusUpdateNeeded(true); this.setCurrentZ(topItem.getZ());
this.setRotation(RoomRotation.values()[topItem.getRotation()]);
return true;
} else if(!topItem.getBaseItem().allowSit() && this.hasStatus(RoomUnitStatus.SIT)) {
this.removeStatus(RoomUnitStatus.SIT);
return true;
} }
} }
return false;
} }
private void handleLayStatus(RoomItem topItem) { private boolean handleLayStatus(RoomItem topItem) {
if(topItem == null || !topItem.getBaseItem().allowLay()) {
return false;
}
if(!this.isCmdLayEnabled()) { if(!this.isCmdLayEnabled()) {
if((topItem == null || !topItem.getBaseItem().allowLay()) && this.hasStatus(RoomUnitStatus.LAY)) { if(this.getCurrentPosition().getState().equals(RoomTileState.LAY) && !this.hasStatus(RoomUnitStatus.LAY)) {
this.removeStatus(RoomUnitStatus.LAY);
this.setStatusUpdateNeeded(true);
} else if(!this.hasStatus(RoomUnitStatus.LAY)) {
this.setStatus(RoomUnitStatus.LAY, String.valueOf(Item.getCurrentHeight(topItem))); this.setStatus(RoomUnitStatus.LAY, String.valueOf(Item.getCurrentHeight(topItem)));
this.setStatusUpdateNeeded(true); this.setRotation(RoomRotation.values()[topItem.getRotation() % 4]);
if (topItem.getRotation() == 0 || topItem.getRotation() == 4) {
this.setLocation(this.getRoom().getLayout().getTile(this.getCurrentPosition().getX(), topItem.getY()));
} else {
this.setLocation(this.getRoom().getLayout().getTile(topItem.getX(), this.getCurrentPosition().getY()));
}
return true;
} else if (!topItem.getBaseItem().allowLay() && this.hasStatus(RoomUnitStatus.LAY)) {
this.removeStatus(RoomUnitStatus.LAY);
return true;
} }
} }
return false;
} }
@Override @Override