Subversion Repositories AndroidProjects

Rev

Rev 1588 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.burutaru.game.entities.level;

import java.io.IOException;

import com.gebauz.bauzoid.file.File;
import com.gebauz.bauzoid.math.MathUtil;
import com.gebauz.bauzoid.math.Vector2;
import com.gebauz.bauzoid.parser.ParseUtil;
import com.gebauz.bauzoid.parser.ScanException;
import com.gebauz.bauzoid.parser.Tokenizer;
import com.gebauz.burutaru.game.entities.StarField;
import com.gebauz.burutaru.game.entities.level.conditions.BaseCondition;

public class CheckPoint extends LevelObject
{


        // Constants========================================================================================
       
        public static final float DEFAULT_SCROLL_SPEED = 10.0f;

        // Embedded Types===================================================================================
       
       

        // Fields===========================================================================================
       
        private Vector2 mPosition = new Vector2();
        private Vector2 mFreeScroll = new Vector2();
        private String mContinueConditionName = null;
        private StarField.Status mStarFieldStatus = StarField.Status.DISABLED;
        private float mStarFieldStatusSwitchTime = 0.0f;
       
        private BaseCondition mContinueCondition = null;
       
        private float mScrollSpeed = DEFAULT_SCROLL_SPEED;

        // Methods==========================================================================================

        public CheckPoint(Level level, String name)
        {
                super(level, name);
        }

        @Override
        public void initAsync()
        {
        }

        @Override
        public void init()
        {
                if (mContinueConditionName != null)
                        mContinueCondition = getLevel().getLevelData().findCondition(mContinueConditionName);
        }

        @Override
        public void exit()
        {
        }

        @Override
        public void update(float deltaTime)
        {
        }
       
        public void readBinary(File file) throws IOException
        {
                mPosition = file.readVector2();
                mFreeScroll = file.readVector2();
                mContinueConditionName = file.readString();
                mScrollSpeed = file.readFloat();
                int status = file.readInt();
                StarField.Status[] values = StarField.Status.values();
                mStarFieldStatus = values[MathUtil.clamp(status, 0, values.length-1)];
                mStarFieldStatusSwitchTime = file.readFloat();
        }
       
        @Override
        public boolean readParameter(Tokenizer t, String id) throws ScanException
        {
                if (id.equalsIgnoreCase("position"))
                {
                        mPosition = ParseUtil.readVector2(t);
                }
                else if (id.equalsIgnoreCase("freeScroll"))
                {
                        mFreeScroll = ParseUtil.readVector2(t);
                }
                else if (id.equalsIgnoreCase("continueCondition"))
                {
                        mContinueConditionName = t.readString();
                }
                else if (id.equalsIgnoreCase("scrollSpeed"))
                {
                        mScrollSpeed = t.readNumber();
                }
                else if (id.equalsIgnoreCase("starFieldStatus"))
                {
                        int status = (int)t.readNumber();
                        StarField.Status[] values = StarField.Status.values();
                        mStarFieldStatus = values[MathUtil.clamp(status, 0, values.length-1)];
                }
                else if (id.equalsIgnoreCase("starFieldStatusSwitchTime"))
                {
                        mStarFieldStatusSwitchTime = t.readNumber();
                }
                else
                {
                        return super.readParameter(t, id);
                }
               
                t.readToken(";");
                return true;
        }
       
        /** Check if the condition for continuing with the next checkpoint is met. */
        public boolean isReadyForNextCheckPoint()
        {
                if (mContinueCondition == null)
                        return true;
               
                return mContinueCondition.isMet();             
        }

        // Getters/Setters==================================================================================

        public final Vector2 getPosition() { return mPosition; }
        public final Vector2 getFreeScroll() { return mFreeScroll; }
        public final float getScrollSpeed() { return mScrollSpeed; }
        public final StarField.Status getStarFieldStatus() { return mStarFieldStatus; }
        public final float getStarFieldStatusSwitchTime() { return mStarFieldStatusSwitchTime; }

       
}