Arcturus-Community/src/main/java/com/eu/habbo/threading/runnables/PetFollowHabbo.java

63 lines
2.3 KiB
Java
Raw Normal View History

2018-07-06 15:30:00 +02:00
package com.eu.habbo.threading.runnables;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.pets.Pet;
import com.eu.habbo.habbohotel.pets.PetTasks;
import com.eu.habbo.habbohotel.rooms.RoomTile;
import com.eu.habbo.habbohotel.users.Habbo;
public class PetFollowHabbo implements Runnable
{
private final int directionOffset;
private final Habbo habbo;
private final Pet pet;
public PetFollowHabbo(Pet pet, Habbo habbo, int offset)
{
this.pet = pet;
this.habbo = habbo;
this.directionOffset = offset;
}
@Override
public void run()
{
if (this.pet != null)
{
if (this.pet.getTask() != PetTasks.FOLLOW)
return;
if (this.habbo != null)
{
if (this.habbo.getRoomUnit() != null)
{
if (this.pet.getRoomUnit() != null)
{
RoomTile target = this.habbo.getHabboInfo().getCurrentRoom().getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentLocation(), Math.abs((this.habbo.getRoomUnit().getBodyRotation().getValue() + directionOffset + 4) % 8));
if (target != null)
{
if (target.x < 0 || target.y < 0)
target = this.habbo.getHabboInfo().getCurrentRoom().getLayout().getTileInFront(this.habbo.getRoomUnit().getCurrentLocation(), this.habbo.getRoomUnit().getBodyRotation().getValue());
if (target.x >= 0 && target.y >= 0)
{
if (this.pet.getRoom().getLayout().tileWalkable(target.x, target.y))
{
this.pet.getRoomUnit().setGoalLocation(target);
this.pet.getRoomUnit().setCanWalk(true);
if (this.pet instanceof Pet)
{
this.pet.setTask(PetTasks.FOLLOW);
}
}
}
Emulator.getThreading().run(this, 500);
}
}
}
}
}
}
}