Package com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable

Source Code of com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable.AnimationFactory

/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable;

import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.Emergency.EmergencyType;
import com.wordpress.salaboy.model.persistence.PersistenceServiceProvider;
import java.util.EnumMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.newdawn.slick.Animation;
import org.newdawn.slick.Color;
import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.SpriteSheet;

/**
*
* @author esteban
*/
public class AnimationFactory {

    private static Map<EmergencyType, SpriteSheet> emergencySprites = new EnumMap<EmergencyType, SpriteSheet>(EmergencyType.class);
    private static SpriteSheet ambulanceSprite;
    private static SpriteSheet fireTruckSprite;
    private static SpriteSheet fireTruckGrayedSprite;
    private static SpriteSheet policeCarSprite;
    private static SpriteSheet highlightedHospitalSprite;
    private static SpriteSheet highlightedFireFighterDepartmentSprite;
    private static SpriteSheet glowSprites;
    private static SpriteSheet menuBarSprite;
    private static SpriteSheet fireEmergencyStatusSprite;
    private static SpriteSheet heartAttackEmergencyStatusSprite;
    private static Animation ambulanceAnimation;
    private static Animation fireTruckAnimation;
    private static Animation fireTruckGrayedAnimation;
    private static Animation policeCarAnimation;
    private static Animation highlightedHospitalAnimation;
    private static Animation highlightedFireFighterDepartmentAnimation;
    private static Animation genericEmergencyAnimation;

    public static Animation getAmbulanceAnimation() {
        if (ambulanceAnimation == null) {
            ambulanceAnimation = new Animation();
            ambulanceAnimation.setLooping(false);
            ambulanceAnimation.setAutoUpdate(false);

            for (int row = 0; row < getAmbulanceSpriteSheet().getHorizontalCount(); row++) {
                for (int frame = 0; frame < getAmbulanceSpriteSheet().getVerticalCount(); frame++) {
                    ambulanceAnimation.addFrame(getAmbulanceSpriteSheet().getSprite(frame, row), 250);
                }
            }
        }
        return ambulanceAnimation;
    }

    public static Animation getHighlightedHospitalAnimation() {
        if (highlightedHospitalAnimation == null) {
            highlightedHospitalAnimation = new Animation();
            highlightedHospitalAnimation.setLooping(true);
            highlightedHospitalAnimation.setAutoUpdate(true);

            for (int row = 0; row < getHighlightedHospitalSpriteSheet().getHorizontalCount(); row++) {
                for (int frame = 0; frame < getHighlightedHospitalSpriteSheet().getVerticalCount(); frame++) {
                    highlightedHospitalAnimation.addFrame(getHighlightedHospitalSpriteSheet().getSprite(row, frame), 250);
                }
            }
        }
        return highlightedHospitalAnimation;
    }

    public static Animation getHighlightedFirefighterDepartmentAnimation() {
        if (highlightedFireFighterDepartmentAnimation == null) {
            highlightedFireFighterDepartmentAnimation = new Animation();
            highlightedFireFighterDepartmentAnimation.setLooping(true);
            highlightedFireFighterDepartmentAnimation.setAutoUpdate(true);

            for (int row = 0; row < getHighlightedFirefighterDepartmentSpriteSheet().getHorizontalCount(); row++) {
                for (int frame = 0; frame < getHighlightedFirefighterDepartmentSpriteSheet().getVerticalCount(); frame++) {
                    highlightedFireFighterDepartmentAnimation.addFrame(getHighlightedFirefighterDepartmentSpriteSheet().getSprite(row, frame), 250);
                }
            }
        }
        return highlightedFireFighterDepartmentAnimation;
    }

    public static Animation getGenericEmergencyAnimation() {
        if (genericEmergencyAnimation == null) {
            genericEmergencyAnimation = getEmergencyAnimation(EmergencyType.UNDEFINED, null);
        }
        return genericEmergencyAnimation;
    }

    public static Animation getEmergencyAnimation(EmergencyType emergencyType, Integer numberOfPeople) {
        Animation emergencyAnimation = new Animation();
        emergencyAnimation.setLooping(true);
        emergencyAnimation.setAutoUpdate(true);

        for (int row = 0; row < getEmergencySpriteSheet(emergencyType).getHorizontalCount(); row++) {
            for (int frame = 0; frame < getEmergencySpriteSheet(emergencyType).getVerticalCount(); frame++) {
                try {
                    Image sprite = getEmergencySpriteSheet(emergencyType).getSprite(row, frame);
                    if (numberOfPeople != null) {
                        sprite.getGraphics().drawString("" + numberOfPeople, sprite.getWidth() / 2, sprite.getHeight() / 2);
                    }
                    emergencyAnimation.addFrame(sprite, 250);
                } catch (SlickException ex) {
                    Logger.getLogger(AnimationFactory.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

        return emergencyAnimation;
    }

    public static Animation getMenuBarAnimation() {
        Animation menuBarAnimation = new Animation();
     
        menuBarAnimation.addFrame(getMenuBarSpriteSheet().getSprite(0, 0), 1000);

        return menuBarAnimation;
    }

    public static Animation getEmergencyStatusAnimation( EmergencyType type, int total, int remaining) {
        Animation emergencyStatusAnimation = new Animation();
        emergencyStatusAnimation.setLooping(true);
        emergencyStatusAnimation.setAutoUpdate(true);
        if (type == EmergencyType.FIRE) {
            String percentage = calculatePercentage(total, remaining);
            emergencyStatusAnimation.addFrame(getFireEmergencyStatusSpriteSheet(percentage).getSprite(0, 0), 1000);
        }
        if (type == EmergencyType.HEART_ATTACK) {
            String percentage = calculatePercentage(total, remaining);
            emergencyStatusAnimation.addFrame(getHeartAttackEmergencyStatusSpriteSheet(percentage).getSprite(0, 0), 1000);
        }
        return emergencyStatusAnimation;
    }

    public static SpriteSheet getAmbulanceSpriteSheet() {
        if (ambulanceSprite == null) {
            try {
                ambulanceSprite = new SpriteSheet("data/sprites/ambulance.png", 32, 32, Color.magenta);
            } catch (SlickException ex) {
                Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return ambulanceSprite;
    }

    public static SpriteSheet getFireTruckSpriteSheet() {
        if (fireTruckSprite == null) {
            try {
                fireTruckSprite = new SpriteSheet("data/sprites/fireTruck.png", 32, 32, Color.magenta);
            } catch (SlickException ex) {
                Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return fireTruckSprite;
    }

    public static SpriteSheet getGrayedFireTruckSpriteSheet() {
        if (fireTruckGrayedSprite == null) {
            try {
                fireTruckGrayedSprite = new SpriteSheet("data/sprites/sprites-bomberos-weak.png", 32, 32, Color.magenta);
            } catch (SlickException ex) {
                Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return fireTruckGrayedSprite;
    }

    public static SpriteSheet getPoliceCarSpriteSheet() {
        if (policeCarSprite == null) {
            try {
                policeCarSprite = new SpriteSheet("data/sprites/policeCar.png", 32, 32, Color.magenta);
            } catch (SlickException ex) {
                Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return policeCarSprite;
    }

    private static SpriteSheet getHighlightedHospitalSpriteSheet() {
        if (highlightedHospitalSprite == null) {
            try {
                highlightedHospitalSprite = new SpriteSheet("data/sprites/hospital-brillando.png", 64, 80, Color.magenta);
            } catch (SlickException ex) {
                Logger.getLogger(AnimationFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return highlightedHospitalSprite;
    }

    private static SpriteSheet getHighlightedFirefighterDepartmentSpriteSheet() {
        if (highlightedFireFighterDepartmentSprite == null) {
            try {
                highlightedFireFighterDepartmentSprite = new SpriteSheet("data/sprites/bombero-brillando.png", 64, 80, Color.magenta);
            } catch (SlickException ex) {
                Logger.getLogger(AnimationFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return highlightedFireFighterDepartmentSprite;
    }

    private static SpriteSheet getFireEmergencyStatusSpriteSheet(String percentage) {

        try {
            fireEmergencyStatusSprite = new SpriteSheet("data/sprites/fire-" + percentage + ".png", 143, 28, Color.magenta);
        } catch (SlickException ex) {
            Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
        }
        return fireEmergencyStatusSprite;
    }
    private static SpriteSheet getHeartAttackEmergencyStatusSpriteSheet(String percentage) {

        try {
            if(!percentage.equals("00")){
                heartAttackEmergencyStatusSprite = new SpriteSheet("data/sprites/people-x.png", 78, 28, Color.magenta);
            } else{
                heartAttackEmergencyStatusSprite = new SpriteSheet("data/sprites/people-ok.png", 78, 28, Color.magenta);
            }
           
        } catch (SlickException ex) {
            Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
        }
        return heartAttackEmergencyStatusSprite;
    }

    private static SpriteSheet getMenuBarSpriteSheet() {

        try {
            menuBarSprite = new SpriteSheet("data/sprites/menu-bar.png", 640, 48, Color.magenta);
        } catch (SlickException ex) {
            Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
        }

        return menuBarSprite;
    }

    private static SpriteSheet getEmergencySpriteSheet(EmergencyType type) {
        if (!emergencySprites.containsKey(type)) {
            try {
                emergencySprites.put(type, new SpriteSheet("data/sprites/alert-" + type.name() + ".png", 32, 32, Color.magenta));
            } catch (SlickException ex) {
                Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return emergencySprites.get(type);
    }

    private static SpriteSheet getGlowSpriteSheet() {
        if (glowSprites == null) {
            try {
                glowSprites = new SpriteSheet("data/sprites/glow.png", 32, 32, Color.magenta);
            } catch (SlickException ex) {
                Logger.getLogger(GraphicableFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return glowSprites;
    }

    public static Animation getFireTruckAnimation() {
        if (fireTruckAnimation == null) {
            fireTruckAnimation = new Animation();
            fireTruckAnimation.setLooping(false);
            fireTruckAnimation.setAutoUpdate(false);

            for (int row = 0; row < getFireTruckSpriteSheet().getHorizontalCount(); row++) {
                for (int frame = 0; frame < getFireTruckSpriteSheet().getVerticalCount(); frame++) {
                    fireTruckAnimation.addFrame(getFireTruckSpriteSheet().getSprite(frame, row), 250);
                }
            }
        }
        return fireTruckAnimation;
    }
   
    public static Animation getFireTruckGrayedAnimation() {
        if (fireTruckGrayedAnimation == null) {
            fireTruckGrayedAnimation = new Animation();
            fireTruckGrayedAnimation.setLooping(false);
            fireTruckGrayedAnimation.setAutoUpdate(false);

            for (int row = 0; row < getGrayedFireTruckSpriteSheet().getHorizontalCount(); row++) {
                for (int frame = 0; frame < getGrayedFireTruckSpriteSheet().getVerticalCount(); frame++) {
                    fireTruckGrayedAnimation.addFrame(getGrayedFireTruckSpriteSheet().getSprite(frame, row), 250);
                }
            }
        }
        return fireTruckGrayedAnimation;
    }

    static Animation getPoliceCarAnimation() {
        if (policeCarAnimation == null) {
            policeCarAnimation = new Animation();
            policeCarAnimation.setLooping(false);
            policeCarAnimation.setAutoUpdate(false);

            for (int row = 0; row < getPoliceCarSpriteSheet().getHorizontalCount(); row++) {
                for (int frame = 0; frame < getPoliceCarSpriteSheet().getVerticalCount(); frame++) {
                    policeCarAnimation.addFrame(getPoliceCarSpriteSheet().getSprite(frame, row), 250);
                }
            }
        }
        return policeCarAnimation;
    }

    public static Animation addGlow(Graphicable graphicable) {
        Animation glowAnimation = new Animation();
        glowAnimation.setLooping(false);
        glowAnimation.setAutoUpdate(true);

        for (int row = 0; row < getGlowSpriteSheet().getHorizontalCount(); row++) {
            for (int frame = 0; frame < getGlowSpriteSheet().getVerticalCount(); frame++) {
                try {
                    Image sprite = getGlowSpriteSheet().getSprite(row, frame);
                    sprite.getGraphics().drawImage(graphicable.getAnimation().getCurrentFrame(), 0, 0);
                    glowAnimation.addFrame(sprite, 250);
                } catch (SlickException ex) {
                    Logger.getLogger(AnimationFactory.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

        return glowAnimation;
    }

    private static synchronized String calculatePercentage(int total, int remaining) {
        System.out.println("Total =" + total);
        System.out.println("Remaining =" + remaining);
        float percentage = (100 / total) * remaining;
        System.out.println("Percentage = " + percentage);
        if (percentage == 100) {
            return "100";
        }
        if (percentage < 100 && percentage >= 90) {
            return "90";
        }

        if (percentage < 90 && percentage >= 80) {
            return "80";
        }
        if (percentage < 80 && percentage >= 70) {
            return "70";
        }

        if (percentage < 70 && percentage >= 60) {
            return "60";
        }

        if (percentage < 60 && percentage >= 50) {
            return "50";
        }

        if (percentage < 50 && percentage >= 40) {
            return "40";
        }

        if (percentage < 40 && percentage >= 30) {
            return "30";
        }

        if (percentage < 30 && percentage >= 20) {
            return "20";
        }

        if (percentage < 20 && percentage > 1) {
            return "10";
        }

        return "00";
    }
}
TOP

Related Classes of com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable.AnimationFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.