mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-03 00:38:21 +00:00
Add MagicOnMob MessageHandler
This commit is contained in:
committed by
Major
parent
16599dd231
commit
bb352225f3
@@ -71,6 +71,12 @@
|
|||||||
<handler>org.apollo.game.message.handler.ItemVerificationHandler</handler>
|
<handler>org.apollo.game.message.handler.ItemVerificationHandler</handler>
|
||||||
</chain>
|
</chain>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<type>org.apollo.game.message.impl.MagicOnMobMessage</type>
|
||||||
|
<chain>
|
||||||
|
<handler>org.apollo.game.message.handler.MagicOnMobVerificationHandler</handler>
|
||||||
|
</chain>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<type>org.apollo.game.message.impl.NpcActionMessage</type>
|
<type>org.apollo.game.message.impl.NpcActionMessage</type>
|
||||||
<chain>
|
<chain>
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package org.apollo.game.message.handler;
|
||||||
|
|
||||||
|
import org.apollo.game.message.impl.MagicOnMobMessage;
|
||||||
|
import org.apollo.game.model.World;
|
||||||
|
import org.apollo.game.model.entity.EntityType;
|
||||||
|
import org.apollo.game.model.entity.Mob;
|
||||||
|
import org.apollo.game.model.entity.MobRepository;
|
||||||
|
import org.apollo.game.model.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A verification {@link MessageHandler} for the {@link MagicOnMobMessage}.
|
||||||
|
*
|
||||||
|
* @author Tom
|
||||||
|
*/
|
||||||
|
public final class MagicOnMobVerificationHandler extends MessageHandler<MagicOnMobMessage>{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the MessageListener.
|
||||||
|
*
|
||||||
|
* @param world The {@link World} the {@link MagicOnMobMessage} occurred in.
|
||||||
|
*/
|
||||||
|
public MagicOnMobVerificationHandler(World world) {
|
||||||
|
super(world);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(Player player, MagicOnMobMessage message) {
|
||||||
|
int index = message.getIndex();
|
||||||
|
MobRepository<? extends Mob> repository;
|
||||||
|
|
||||||
|
if (message.getType() == EntityType.NPC) {
|
||||||
|
repository = world.getNpcRepository();
|
||||||
|
} else if (message.getType() == EntityType.PLAYER) {
|
||||||
|
repository = world.getPlayerRepository();
|
||||||
|
} else {
|
||||||
|
throw new IllegalStateException("Invalid mob type for message: " + message.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index < 0 || index >= repository.capacity()) {
|
||||||
|
message.terminate();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Mob mob = repository.get(index);
|
||||||
|
|
||||||
|
if (mob == null || !player.getPosition().isWithinDistance(mob.getPosition(), player.getViewingDistance() + 1)) {
|
||||||
|
// +1 in case it was decremented after the player clicked the action.
|
||||||
|
message.terminate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.apollo.game.message.impl;
|
package org.apollo.game.message.impl;
|
||||||
|
|
||||||
|
import com.google.common.base.MoreObjects;
|
||||||
import org.apollo.game.model.entity.EntityType;
|
import org.apollo.game.model.entity.EntityType;
|
||||||
import org.apollo.net.message.Message;
|
import org.apollo.net.message.Message;
|
||||||
|
|
||||||
@@ -65,4 +66,8 @@ public abstract class MagicOnMobMessage extends Message {
|
|||||||
return spellId;
|
return spellId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return MoreObjects.toStringHelper(this).add("type", getType()).add("index", getIndex()).add("spellId", getSpellId()).toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user