mirror of
https://git.krews.org/morningstar/Arcturus-Community.git
synced 2024-10-24 11:43:06 +02:00
60 lines
2.2 KiB
Java
60 lines
2.2 KiB
Java
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() + this.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);
|
|
this.pet.setTask(PetTasks.FOLLOW);
|
|
}
|
|
}
|
|
Emulator.getThreading().run(this, 500);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|