package com.weem.epicinventor.actor.oobaboo;
import com.weem.epicinventor.*;
import com.weem.epicinventor.actor.*;
import com.weem.epicinventor.ai.*;
import com.weem.epicinventor.armor.*;
import com.weem.epicinventor.inventory.*;
import com.weem.epicinventor.network.*;
import com.weem.epicinventor.particle.*;
import com.weem.epicinventor.utility.*;
import com.weem.epicinventor.weapon.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Arc2D;
import java.util.*;
public class OobabooHealer extends Oobaboo implements Serializable {
private static final long serialVersionUID = 10000L;
transient private BandageEmitter bandageEmitter;
public OobabooHealer(PlayerManager pm, Player p, Registry rg, String im, int x) {
super(pm, p, rg, im, x);
disappearTime = registry.currentTime + (60 * 1000 * 5);
ai = new AI(registry, this);
ai.clearGoals();
ai.setPlayer(player.getId());
ai.addGoal(AI.GoalType.OOBABOO_HEALER, null, 1);
ai.activate();
}
private void createBandageEmitter() {
if (bandageEmitter == null) {
ArrayList<String> images = new ArrayList<String>();
images.add("Particles/Bandage1");
images.add("Particles/Bandage2");
images.add("Particles/Bandage3");
images.add("Particles/Bandage4");
images.add("Particles/Bandage5");
images.add("Particles/Bandage6");
images.add("Particles/Bandage7");
images.add("Particles/Bandage8");
images.add("Particles/Bandage9");
images.add("Particles/Bandage10");
bandageEmitter = new BandageEmitter(registry.getGameController(), registry, this, mapX + baseOffset, mapY, images, true, false, true, 0, 0.25f, 10.0f, 20, true);
bandageEmitter.setParticlesPerGeneration(10);
bandageEmitter.setActive(true);
} else {
bandageEmitter.setActive(true);
}
}
private void destoryBandageEmitter() {
if (bandageEmitter != null) {
bandageEmitter.destroy();
bandageEmitter = null;
}
}
@Override
public void meleeAttack() {
isSwinging = true;
actionMode = ActionMode.ATTACKING;
attackRefreshTimerStart = System.currentTimeMillis();
attackRefreshTimerEnd = System.currentTimeMillis() + 1000;
createBandageEmitter();
float hpToAdd = (float) player.getTotalHitPoints() / 20f;
player.addHitPoints((int) hpToAdd);
}
@Override
protected void updateImage() {
if (actionMode == ActionMode.ATTACKING) {
if (currentAnimationFrame == 0 || !image.equals("Oobaboo/Healer/Swinging")) {
loopImage("Oobaboo/Healer/Swinging", 0.10f);
}
} else if (vertMoveMode == VertMoveMode.FALLING && fallSize > startJumpSize) {
loopImage("Oobaboo/Healer/Falling");
} else if (vertMoveMode == VertMoveMode.JUMPING) {
setImage("Oobaboo/Healer/Jumping");
} else {
if (!isTryingToMove) {
setImage("Oobaboo/Healer/Standing");
} else {
loopImage("Oobaboo/Healer/Walking", 0.10f);
}
}
}
@Override
public void update() {
super.update();
if (bandageEmitter != null) {
if (facing == Facing.RIGHT) {
bandageEmitter.setPosition(mapX + 48, mapY + 22);
} else {
bandageEmitter.setPosition(mapX + 23, mapY + 22);
}
bandageEmitter.update();
}
}
@Override
public void render(Graphics g) {
super.render(g);
if (bandageEmitter != null) {
bandageEmitter.render(g);
}
}
private void readObject(ObjectInputStream aInputStream) throws Exception {
aInputStream.defaultReadObject();
}
private void writeObject(ObjectOutputStream aOutputStream) throws Exception {
aOutputStream.defaultWriteObject();
}
}