Merge branch 'Tomm0017-magic_on_mob' into kotlin-experiments

Merge #426
This commit is contained in:
Major
2019-07-13 19:10:39 +01:00
3 changed files with 62 additions and 0 deletions
+6
View File
@@ -71,6 +71,12 @@
<handler>org.apollo.game.message.handler.ItemVerificationHandler</handler>
</chain>
</message>
<message>
<type>org.apollo.game.message.impl.MagicOnMobMessage</type>
<chain>
<handler>org.apollo.game.message.handler.MagicOnMobVerificationHandler</handler>
</chain>
</message>
<message>
<type>org.apollo.game.message.impl.NpcActionMessage</type>
<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;
import com.google.common.base.MoreObjects;
import org.apollo.game.model.entity.EntityType;
import org.apollo.net.message.Message;
@@ -65,4 +66,8 @@ public abstract class MagicOnMobMessage extends Message {
return spellId;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("type", getType()).add("index", getIndex()).add("spellId", getSpellId()).toString();
}
}