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
|
|||
|
}
|
|||
|
}
|
|||
|
|