/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.replica.replicaisland;

public class PreferenceConstants {
	public static final String PREFERENCE_LEVEL_ROW = "levelRow";
    public static final String PREFERENCE_LEVEL_INDEX = "levelIndex";
    public static final String PREFERENCE_LEVEL_COMPLETED = "levelsCompleted";
    public static final String PREFERENCE_SOUND_ENABLED = "enableSound";
    public static final String PREFERENCE_SAFE_MODE = "safeMode";
    public static final String PREFERENCE_SESSION_ID = "session";
    public static final String PREFERENCE_LAST_VERSION = "lastVersion";
    public static final String PREFERENCE_STATS_ENABLED = "enableStats";
    public static final String PREFERENCE_CLICK_ATTACK = "enableClickAttack";
    public static final String PREFERENCE_TILT_CONTROLS = "enableTiltControls";
    public static final String PREFERENCE_TILT_SENSITIVITY = "tiltSensitivity";
    public static final String PREFERENCE_MOVEMENT_SENSITIVITY = "movementSensitivity";
    public static final String PREFERENCE_SCREEN_CONTROLS = "enableScreenControls";
    public static final String PREFERENCE_ENABLE_DEBUG = "enableDebug";
    public static final String PREFERENCE_TOTAL_GAME_TIME = "totalGameTime";
    public static final String PREFERENCE_LAST_ENDING = "lastEnding";
	public static final String PREFERENCE_ROBOTS_DESTROYED = "robotsDestroyed";
	public static final String PREFERENCE_PEARLS_COLLECTED = "pearlsCollected";
	public static final String PREFERENCE_PEARLS_TOTAL = "pearlsTotal";
	public static final String PREFERENCE_LINEAR_MODE = "linearMode";
	public static final String PREFERENCE_EXTRAS_UNLOCKED = "extrasUnlocked";
	public static final String PREFERENCE_DIFFICULTY = "difficulty";

    public static final String PREFERENCE_LEFT_KEY = "keyLeft";
    public static final String PREFERENCE_RIGHT_KEY = "keyRight";
    public static final String PREFERENCE_ATTACK_KEY = "keyAttack";
    public static final String PREFERENCE_JUMP_KEY = "keyJump";
    
    public static final String PREFERENCE_NAME = "ReplicaIslandPrefs";
	
	
	
	
}
