diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java
index 04fa1bbe91f8b88ca6879094dbf343f5dbbef068..5d18755c590feb3ebbf9df3071cc96a32da8fa66 100644 (file)
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Timer;
import ru.deadsoftware.cavedroid.game.GameItemsHolder;
+import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto;
+import ru.deadsoftware.cavedroid.game.model.item.InventoryItem;
import ru.deadsoftware.cavedroid.game.world.GameWorld;
+import ru.deadsoftware.cavedroid.misc.Saveable;
import javax.annotation.CheckForNull;
-import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
/**
* Mob class.
*/
-public abstract class Mob extends Rectangle implements Serializable {
+public abstract class Mob extends Rectangle implements Saveable {
private static final float DAMAGE_TINT_TIMEOUT_S = 0.5f;
private static final Color DAMAGE_TINT_COLOR = new Color(0xff8080ff);
protected int mAnimDelta = ANIMATION_SPEED;
protected float mAnim;
- private Direction mDirection;
+ protected Direction mDirection;
protected boolean mDead;
- private boolean mCanJump;
- private boolean mFlyMode;
+ protected boolean mCanJump;
+ protected boolean mFlyMode;
- private final int mMaxHealth;
- private int mHealth;
+ protected int mMaxHealth;
+ protected int mHealth;
- private transient boolean mTakingDamage = false;
- @CheckForNull private transient ResetTakeDamageTask mResetTakeDamageTask = null;
+ private boolean mTakingDamage = false;
+ @CheckForNull private ResetTakeDamageTask mResetTakeDamageTask = null;
/**
* @param x in pixels
/**
* Set's mob's dead variable to true and nothing else. It doesn't delete the
*/
- public final void kill() {
+ public void kill() {
mDead = true;
}
return mHealth;
}
+ public final int getMaxHealth() {
+ return mMaxHealth;
+ }
+
public final void attachToController(MobsController controller) {
controller.addMob(this);
}
return isTakingDamage() ? DAMAGE_TINT_COLOR : Color.WHITE;
}
+ public List<InventoryItem> getDrop(GameItemsHolder gameItemsHolder) {
+ return Collections.emptyList();
+ }
+
public abstract void draw(SpriteBatch spriteBatch, float x, float y, float delta);
public abstract void ai(GameWorld gameWorld, GameItemsHolder gameItemsHolder, MobsController mobsController, float delta);
public abstract float getSpeed();
public abstract void jump();
+
+ @Override
+ public abstract SaveDataDto.MobSaveDataDto getSaveData();
+
+ public static Mob fromSaveData(SaveDataDto.MobSaveDataDto saveData) {
+ return MobSaveDataMapperKt.fromSaveData(saveData);
+ }
}