package com.znv.linkup.db; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.znv.linkup.core.config.ModeCfg; /** * 关卡积分数据操作类 * * @author yzb * */ public class DbScore { private static DbHelper database = null; public static void init(Context context, List<ModeCfg> modeCfgs) { database = new DbHelper(context, modeCfgs); } /** * 更新关卡数据 * * @param levelScore * 关卡数据 */ public static void updateScore(LevelScore levelScore) { SQLiteDatabase db = database.getWritableDatabase(); String sql = "update scores set maxscore=?,mintime=?, star=? where level=?"; db.execSQL(sql, new Object[] { levelScore.getMaxScore(), levelScore.getMinTime(), levelScore.getStar(), levelScore.getLevel() }); db.close(); } /** * 激活关卡 * * @param levelScore * 关卡数据 */ public static void updateActive(LevelScore levelScore) { SQLiteDatabase db = database.getWritableDatabase(); String sql = "update scores set isactive=? where level=?"; db.execSQL(sql, new Object[] { levelScore.getIsActive(), levelScore.getLevel() }); db.close(); } /** * 是否上传网络 * * @param levelScore * 关卡数据 */ public static void updateUpload(LevelScore levelScore) { SQLiteDatabase db = database.getWritableDatabase(); String sql = "update scores set isupload=? where level=?"; db.execSQL(sql, new Object[] { levelScore.getIsUpload(), levelScore.getLevel() }); db.close(); } /** * 根据关卡id删除关卡数据(未用) * * @param level * 关卡id */ public static void delete(String level) { SQLiteDatabase db = database.getWritableDatabase(); String sql = "delete from scores where level=?"; db.execSQL(sql, new Object[] { level }); db.close(); } /** * 根据关卡id获取最高分 * * @param level * 关卡id * @return 关卡最高分 */ public static int selectMaxScore(String level) { SQLiteDatabase db = database.getReadableDatabase(); String sql = "select maxscore from scores where level=?"; try { Cursor cursor = db.rawQuery(sql, new String[] { level }); if (cursor.moveToFirst()) { return cursor.getInt(cursor.getColumnIndex("maxscore")); } return 0; } finally { db.close(); } } /** * 获取所有关卡数据信息,用于初始化时加载 * * @return 所有关卡数据信息 */ public static List<LevelScore> selectAll() { SQLiteDatabase db = database.getReadableDatabase(); String sql = "select level, rank, maxscore, mintime, isactive, star, isupload from scores order by level"; try { Cursor cursor = db.rawQuery(sql, new String[] {}); List<LevelScore> levelScores = new ArrayList<LevelScore>(); while (cursor.moveToNext()) { LevelScore ls = new LevelScore(cursor.getString(0), cursor.getString(1), cursor.getInt(2), cursor.getInt(3), cursor.getInt(4), cursor.getInt(5)); ls.setIsUpload(cursor.getInt(6)); levelScores.add(ls); } return levelScores; } finally { db.close(); } } /** * 获取游戏等级(rank)中激活的关卡数 * * @param rank * 游戏等级 * @return 激活的关卡数 */ public static int selectLevelByRank(String rank) { SQLiteDatabase db = database.getReadableDatabase(); String sql = "select count(*) from scores where isactive=1 and rank=?"; try { Cursor cursor = db.rawQuery(sql, new String[] { rank }); if (cursor.moveToFirst()) { return cursor.getInt(0); } return 0; } finally { db.close(); } } /** * 获取游戏等级(rank)中关卡的所有星级 * * @param rank * 游戏等级 * @return 所有星级和 */ public static int selectStarByRank(String rank) { SQLiteDatabase db = database.getReadableDatabase(); String sql = "select sum(star) from scores where isactive=1 and rank=?"; try { Cursor cursor = db.rawQuery(sql, new String[] { rank }); if (cursor.moveToFirst()) { return cursor.getInt(0); } return 0; } finally { db.close(); } } }