149 lines
3.6 KiB
C#
149 lines
3.6 KiB
C#
// Felix-Bang:FBGameModel
|
||
// へ /|
|
||
// /\7 ∠_/
|
||
// / │ / /
|
||
// │ Z _,< / /`ヽ
|
||
// │ ヽ / 〉
|
||
// Y ` / /
|
||
// イ● 、 ● ⊂⊃〈 /
|
||
// () へ | \〈
|
||
// >ー 、_ ィ │ //
|
||
// / へ / ノ<| \\
|
||
// ヽ_ノ (_/ │//
|
||
// 7 |/
|
||
// >―r ̄ ̄`ー―_
|
||
// Describe:游戏数据的读取/储存
|
||
// Createtime:2018/10/11
|
||
|
||
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using FBFramework;
|
||
using System.IO;
|
||
using System;
|
||
|
||
namespace FBApplication
|
||
{
|
||
public class FBGameModel : FBModel
|
||
{
|
||
#region 字段
|
||
//所有关卡
|
||
List<FBLevel> f_levels = new List<FBLevel>();
|
||
//当前关卡索引
|
||
int f_playLevelIndex = -1;
|
||
//最大通关关卡索引
|
||
int f_gameProgressIndex = -1;
|
||
//游戏当前分数
|
||
int f_gold = 0;
|
||
//是否游戏中
|
||
bool f_isPlaying = false;
|
||
#endregion
|
||
|
||
#region 属性
|
||
public override string Name
|
||
{
|
||
get { return FBConsts.M_GameModel; }
|
||
}
|
||
|
||
public List<FBLevel> AllLevels
|
||
{
|
||
get { return f_levels; }
|
||
}
|
||
|
||
public int LevelCount
|
||
{
|
||
get { return f_levels.Count; }
|
||
}
|
||
|
||
public bool IsPassed
|
||
{
|
||
get { return f_gameProgressIndex > LevelCount-1; }
|
||
}
|
||
|
||
public FBLevel PlayLevel
|
||
{
|
||
get
|
||
{
|
||
if (f_playLevelIndex < 0 || f_playLevelIndex > f_levels.Count-1)
|
||
throw new IndexOutOfRangeException("关卡不存在");
|
||
else
|
||
return f_levels[f_playLevelIndex];
|
||
}
|
||
}
|
||
|
||
public int Gold
|
||
{
|
||
get { return f_gold; }
|
||
set { f_gold = value; }
|
||
}
|
||
|
||
public bool IsPlaying
|
||
{
|
||
get { return f_isPlaying; }
|
||
set { f_isPlaying = value; }
|
||
}
|
||
|
||
public int GameProgressIndex
|
||
{
|
||
get { return f_gameProgressIndex; }
|
||
}
|
||
|
||
public int PlayLevelIndex
|
||
{
|
||
get { return f_playLevelIndex; }
|
||
set { f_playLevelIndex = value; }
|
||
}
|
||
#endregion
|
||
|
||
|
||
#region 方法
|
||
//初始化
|
||
public void OnInitialized()
|
||
{
|
||
//构建Level集合
|
||
List<FileInfo> files = FBTools.GetLevelFiles();
|
||
|
||
for (int i = 0; i < files.Count; i++)
|
||
{
|
||
FBLevel level = new FBLevel();
|
||
FBTools.FillLevel(files[i].FullName, ref level);
|
||
f_levels.Add(level);
|
||
}
|
||
|
||
//读取游戏进度
|
||
f_gameProgressIndex = FBSaver.GetProgress();
|
||
|
||
}
|
||
|
||
public void StartLevel(int levelIndex)
|
||
{
|
||
f_playLevelIndex = levelIndex;
|
||
}
|
||
|
||
public void StoptLevel(bool isWin)
|
||
{
|
||
if (isWin && PlayLevelIndex > GameProgressIndex)
|
||
{
|
||
//更新进度
|
||
f_gameProgressIndex = PlayLevelIndex;
|
||
//保存进度
|
||
FBSaver.SetProgress(PlayLevelIndex);
|
||
}
|
||
|
||
f_isPlaying = false;
|
||
}
|
||
|
||
//清档
|
||
public void ClearProgress()
|
||
{
|
||
f_isPlaying = false;
|
||
f_playLevelIndex = -1;
|
||
f_gameProgressIndex = -1;
|
||
FBSaver.SetProgress(-1);
|
||
}
|
||
#endregion
|
||
}
|
||
}
|
||
|