AbstractMir2Actor2D.java :  » Game » easy-game-client » test » egc » res » mir2 » actor » Java Open Source

Java Open Source » Game » easy game client 
easy game client » test » egc » res » mir2 » actor » AbstractMir2Actor2D.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test.egc.res.mir2.actor;

import test.egc.res.mir2.map.DrawImage2D;
import test.egc.res.mir2.map.Point2D;
import java.awt.Graphics2D;
import java.awt.Image;
import egc.res.mir2.Mir2PictureManager;

/**
 *
 * @author easy
 */
public abstract class AbstractMir2Actor2D implements Point2D {

    Mir2PictureManager mgr;
    Featureable featureable = Featureable.DEFAULT;

    @Override
    public void draw(Graphics2D g2d, int canvasX, int canvasY, int canvasWidth, int canvasHeight) {
        DrawImage2D d2d = getBodyDrawImage2D();
        if (d2d != null) {
            d2d.draw(g2d, getCurrentBodyImage(), canvasX, canvasY, canvasWidth, canvasHeight);
        }
    }

    protected Image getCurrentBodyImage() {
        int fileIndex = getCurrentFileIndex();
        int offset = getCurrentBodyOffset();
        String fileName = getFileName();
        int currFrame = getCurrentFrame();
        if (currFrame >= 0 && fileIndex >= 0 && offset >= 0 && fileName != null) {
            int frame = offset + currFrame;
            return mgr.getImage(fileName, fileIndex, frame);
        }
        return null;
    }

    protected int getCurrentBodyOffset() {
        return getBodyOffset(getCurrentFeature());
    }

    /***/
    protected abstract int getBodyOffset(int feature);

    protected int getCurrentFileIndex() {
        return getFileIndex(getCurrentFileIndex());
    }

    /***/
    protected abstract int getFileIndex(int feature);

    /***/
    protected abstract String getFileName();

    protected DrawImage2D getBodyDrawImage2D() {
        return DrawImage2D.DEFAULT_DRAW_IMAGE;
    }

    public AbstractMir2Actor2D(Mir2PictureManager mgr) {
        this.mgr = mgr;
    }

    protected ActorInfo getCurrentActionInfo() {
        return getActorInfo(getCurrentFeature());
    }

    protected ActorInfo getActorInfo(int feature) {
        return getActorInfo(getCurrentAction(), getRace(feature));
    }

    /***/
    protected abstract ActorInfo getActorInfo(int action, int race);

    protected abstract int getCurrentAction();

    protected int getRace(int feature) {
        return getFeatureable().decode().getRace(feature);
    }

//    protected abstract int getCurrentDir();

    protected abstract int getCurrentFrame();

    protected abstract int getCurrentFeature();

    protected Featureable getFeatureable() {
        return featureable;
    }

    /***/
//    protected abstract int getMaxFrame();

    public class ActorInfo {

        public final int start;
        public final int frame;
        public final int skip;
        public final int time;
        public final int useTick;

        public ActorInfo(int start, int frame, int skip, int time, int useTick) {
            this.start = start;
            this.frame = frame;
            this.skip = skip;
            this.time = time;
            this.useTick = useTick;
        }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.