MasterOfChangeAchievement.java

package com.vikingz.unitycoon.achievements;

import com.vikingz.unitycoon.global.GameGlobals;

/**
 * This new class creates a master of change achievement object.
 * It was implemented to complete FR_CHANGE_UNLOCK.
 */
public class MasterOfChangeAchievement extends Achievement {

    public static final String NAME = "Master Of Change";
    public static final String DESCRIPTION = "Remain under 30% satisfaction for the first 3 minutes"
                                           + " and then win the game.";
    static final boolean HIDDEN = true;

    boolean masterOfChangePossible;

    public MasterOfChangeAchievement() {
        super();
        masterOfChangePossible = true;
    }

    @Override
    public String getName() {
        return NAME;
    }

    @Override
    public String getDescription() {
        return DESCRIPTION;
    }

    @Override
    public void reset() {
        super.reset();
        masterOfChangePossible = true;
    }

    @Override
    public boolean getHidden() {
        return HIDDEN;
    }

    @Override
    public boolean isCompleted() {
        if (GameGlobals.TIME_REMAINING <= 0 && masterOfChangePossible && GameGlobals.gameWon) {
            return true;
        }
        
        if (GameGlobals.TIME_REMAINING >= 120 && GameGlobals.SATISFACTION.getSatisfaction() >= 50) {
            masterOfChangePossible = false;
        }

        return false;
    }
}