diff --git a/Engine/CLEngine.Core/CLEngine.Core.csproj b/Engine/CLEngine.Core/CLEngine.Core.csproj
index 02a0c60e71d1486cb2ba76a0c072372bd406c43e..95e34c7299c659cdb82b296af9671c81f344b648 100644
--- a/Engine/CLEngine.Core/CLEngine.Core.csproj
+++ b/Engine/CLEngine.Core/CLEngine.Core.csproj
@@ -296,12 +296,12 @@
-
+
diff --git a/Engine/CLEngine.Core/framework/EventObject.cs b/Engine/CLEngine.Core/framework/EventObject.cs
index 67c07967b5e06132db04453b2232b570e8cf60d0..988ac0aba123b5b055190723d2e544adeb911108 100644
--- a/Engine/CLEngine.Core/framework/EventObject.cs
+++ b/Engine/CLEngine.Core/framework/EventObject.cs
@@ -14,9 +14,114 @@ namespace CLEngine.Core.framework
public class EventObject : GameObject
{
[DataMember] private string _name;
- [DataMember] private List _bindHero;
[DataMember] private List _bindItem;
[DataMember] private GameObject _gameObj;
+ [DataMember] private int _hp;
+ [DataMember] private int _maxHp;
+ [DataMember] private int _mp;
+ [DataMember] private int _maxMp;
+ [DataMember] private int _lv;
+ [DataMember] private int _maxLv;
+ [DataMember] private int _exp;
+ [DataMember] private int _maxExp;
+ [DataMember] private string _gender;
+ [DataMember] private string _occupation;
+ [DataMember] private Dictionary _skill;
+ [DataMember] private Dictionary _state;
+ [DataMember] private SkillObject _onSkill;
+
+ ///
+ /// 添加技能
+ ///
+ ///
+ public void AddSkill(string name)
+ {
+ var skill = SkillManager.GetWorldSkill(name);
+ if (skill == null)
+ {
+ throw new Exception("技能'" + name + "'不存在!");
+ }
+ _skill.Add(name, skill);
+ }
+ ///
+ /// 删除技能
+ ///
+ ///
+ public void RemoveSkill(string name)
+ {
+ _skill.Remove(name);
+ }
+ ///
+ /// 通过列表添加技能
+ ///
+ ///
+ public void AddSkillByList(List list)
+ {
+ foreach (var skill in list)
+ {
+ AddSkill(skill);
+ }
+ }
+ ///
+ /// 通过列表删除技能
+ ///
+ ///
+ public void RemoveSkillByList(List list)
+ {
+ foreach (var skill in list)
+ {
+ RemoveSkill(skill);
+ }
+ }
+
+ ///
+ /// 状态表
+ ///
+ public Dictionary State { get { return _state; } private set { _state = value; } }
+ ///
+ /// 技能表
+ ///
+ public Dictionary Skill { get { return _skill; } private set { _skill = value; } }
+ ///
+ /// 升级所需最大经验值
+ ///
+ public int MaxExp { get { return _maxExp; } set { _maxExp = value; } }
+ ///
+ /// 当前经验值
+ ///
+ public int Exp { get { return _exp; } set { _exp = value; } }
+ ///
+ /// 性别
+ ///
+ public string Gender { get { return _gender; } set { _gender = value; } }
+ ///
+ /// 职业
+ ///
+ public string Occupation { get { return _occupation; } set { _occupation = value; } }
+ ///
+ /// 角色最大等级
+ ///
+ public int MaxLv { get { return _maxLv; } set { _maxLv = value; } }
+ ///
+ /// 角色等级
+ ///
+ public int Lv { get { return _lv; } set { _lv = value; } }
+ ///
+ /// 最大法力值
+ ///
+ public int MaxMp { get { return _maxMp; } set { _maxMp = value; } }
+ ///
+ /// 蓝量
+ ///
+ public int Mp { get { return _mp; } set { _mp = value; } }
+ ///
+ /// 最大生命值
+ ///
+ public int MaxHp { get { return _maxHp; } set { _maxHp = value; } }
+ ///
+ /// 血量
+ ///
+ public int Hp { get { return _hp; } set { _hp = value; } }
///
/// 游戏对象
///
@@ -26,21 +131,8 @@ namespace CLEngine.Core.framework
///
public string Name { get { return _name; } set { _name = value; } }
///
- /// 绑定的角色
- ///
- public List BindHero { get { return _bindHero; } set { _bindHero = value; } }
- ///
/// 绑定的物品
///
public List BindItem { get { return _bindItem; } set { _bindItem = value; } }
-
- ///
- ///
- ///
- public void TrigEvent()
- {
-
- }
-
}
}
diff --git a/Engine/CLEngine.Core/framework/HeroObject.cs b/Engine/CLEngine.Core/framework/HeroObject.cs
deleted file mode 100644
index 302fe94c862a7362eacc7777980356a93be2f0f2..0000000000000000000000000000000000000000
--- a/Engine/CLEngine.Core/framework/HeroObject.cs
+++ /dev/null
@@ -1,136 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace CLEngine.Core.framework
-{
-#if WIN
- [Serializable]
-#endif
- [DataContract]
- public class HeroObject
- {
- [DataMember] private string _name;
- [DataMember] private int _hp;
- [DataMember] private int _maxHp;
- [DataMember] private int _mp;
- [DataMember] private int _maxMp;
- [DataMember] private int _lv;
- [DataMember] private int _maxLv;
- [DataMember] private int _exp;
- [DataMember] private int _maxExp;
- [DataMember] private string _gender;
- [DataMember] private string _occupation;
- [DataMember] private Dictionary _skill;
- [DataMember] private Dictionary _state;
- [DataMember] private SkillObject _onSkill;
-
- ///
- /// 添加技能
- ///
- ///
- public void AddSkill(string name)
- {
- var skill = SkillManager.GetWorldSkill(name);
- if (skill == null)
- {
- throw new Exception("技能'" + name + "'不存在!");
- }
- _skill.Add(name, skill);
- }
- ///
- /// 删除技能
- ///
- ///
- public void RemoveSkill(string name)
- {
- _skill.Remove(name);
- }
- ///
- /// 通过列表添加技能
- ///
- ///
- public void AddSkillByList(List list)
- {
- foreach (var skill in list)
- {
- AddSkill(skill);
- }
- }
- ///
- /// 通过列表删除技能
- ///
- ///
- public void RemoveSkillByList(List list)
- {
- foreach (var skill in list)
- {
- RemoveSkill(skill);
- }
- }
-
- ///
- /// 状态表
- ///
- public Dictionary State { get { return _state; } private set { _state = value; } }
- ///
- /// 技能表
- ///
- public Dictionary Skill { get { return _skill; } private set { _skill = value; } }
- ///
- /// 升级所需最大经验值
- ///
- public int MaxExp { get { return _maxExp; } set { _maxExp = value; } }
- ///
- /// 当前经验值
- ///
- public int Exp { get { return _exp; } set { _exp = value; } }
- ///
- /// 性别
- ///
- public string Gender { get { return _gender; } set { _gender = value; } }
- ///
- /// 职业
- ///
- public string Occupation { get { return _occupation; } set { _occupation = value; } }
- ///
- /// 角色最大等级
- ///
- public int MaxLv { get { return _maxLv; } set { _maxLv = value; } }
- ///
- /// 角色等级
- ///
- public int Lv { get { return _lv; } set { _lv = value; } }
- ///
- /// 最大法力值
- ///
- public int MaxMp { get { return _maxMp; } set { _maxMp = value; } }
- ///
- /// 蓝量
- ///
- public int Mp { get { return _mp; } set { _mp = value; } }
- ///
- /// 最大生命值
- ///
- public int MaxHp { get { return _maxHp; } set { _maxHp = value; } }
- ///
- /// 血量
- ///
- public int Hp { get { return _hp; } set { _hp = value; } }
- ///
- /// 人物名
- ///
- public string Name { get { return _name; } set { _name = value; } }
- ///
- /// 初始化角色
- ///
- public HeroObject()
- {
- _skill = new Dictionary();
- _state = new Dictionary();
- }
- }
-}
\ No newline at end of file
diff --git a/Engine/CLEngine.Core/framework/ItemManager.cs b/Engine/CLEngine.Core/framework/ItemManager.cs
index be4403a201dfaf79fb567ab8eb6108967a8b54ac..169e638045211ad2b9a857076726241e4014cc7b 100644
--- a/Engine/CLEngine.Core/framework/ItemManager.cs
+++ b/Engine/CLEngine.Core/framework/ItemManager.cs
@@ -104,7 +104,7 @@ namespace CLEngine.Core.framework
_playerItem = (List)FrameworkManager.LoadFrameworkData("playerItem") ?? new List();
var worldId = FrameworkManager.LoadFrameworkData("worldId");
if (worldId != null)
- WorldId = (int) worldId;
+ WorldId = (int)worldId;
}
///
diff --git a/Engine/CLEngine.Core/framework/ItemObject.cs b/Engine/CLEngine.Core/framework/ItemObject.cs
index b3612951437dde60e9033f802fe84df92f577a95..52d15b1f5b74ccd218a233dd361e187f4c712387 100644
--- a/Engine/CLEngine.Core/framework/ItemObject.cs
+++ b/Engine/CLEngine.Core/framework/ItemObject.cs
@@ -134,7 +134,6 @@ namespace CLEngine.Core.framework
{
_dropIcon = null;
Console.WriteLine("文件" + _dropIconPath + "不存在");
- return;
}
}
}
diff --git a/Engine/CLEngine.Core/framework/StateManager.cs b/Engine/CLEngine.Core/framework/StateManager.cs
new file mode 100644
index 0000000000000000000000000000000000000000..34572bf3965c2438431ba4c9aa83c66b2e8d2318
--- /dev/null
+++ b/Engine/CLEngine.Core/framework/StateManager.cs
@@ -0,0 +1,214 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.Serialization;
+using Path = System.IO.Path;
+
+namespace CLEngine.Core.framework
+{
+ ///
+ /// 状态管理器
+ ///
+#if WIN
+ [Serializable]
+#endif
+ [DataContract]
+ public class StateManager : IDataFramework
+ {
+ ///
+ /// 全局状态
+ ///
+ [DataMember] private static Dictionary _worldState;
+ ///
+ /// 玩家状态
+ ///
+ [DataMember] private static List _playerState;
+ ///
+ /// 全局状态Id
+ ///
+ [DataMember] public static int WorldId { get; private set; }
+
+ ///
+ /// 全局状态
+ ///
+ public static Dictionary WorldState => _worldState;
+
+ static StateManager()
+ {
+ _worldState = new Dictionary();
+ _playerState = new List();
+ WorldId = 1;
+ }
+
+ ///
+ /// 创建状态
+ ///
+ public static StateObject CreateState(string name)
+ {
+ var State = new StateObject(name) { Id = WorldId };
+ _worldState.Add(name, State);
+
+ WorldId++;
+
+ return State;
+ }
+
+ ///
+ /// 删除状态
+ ///
+ ///
+ ///
+ public static StateObject RemoveState(string name)
+ {
+ var State = new StateObject(name);
+ _worldState.Remove(name);
+
+ return State;
+ }
+
+ ///
+ /// 删除状态
+ ///
+ ///
+ ///
+ public static bool RemoveState(StateObject State)
+ {
+ foreach (var StateObject in _worldState)
+ {
+ if (StateObject.Value == State)
+ {
+ _worldState.Remove(StateObject.Key);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ ///
+ /// 保存全局状态
+ ///
+ public void SaveData()
+ {
+ FrameworkManager.SaveFrameworkData("worldState", _worldState);
+ FrameworkManager.SaveFrameworkData("playerState", _playerState);
+ FrameworkManager.SaveFrameworkData("worldId", WorldId);
+ }
+
+ ///
+ /// 加载全局状态
+ ///
+ public void LoadData()
+ {
+ _worldState = (Dictionary)FrameworkManager.LoadFrameworkData("worldState") ?? new Dictionary();
+ _playerState = (List)FrameworkManager.LoadFrameworkData("playerState") ?? new List();
+ var worldId = FrameworkManager.LoadFrameworkData("worldId");
+ if (worldId != null)
+ WorldId = (int)worldId;
+ }
+
+ ///
+ /// 世界状态中通过名称找状态
+ ///
+ ///
+ ///
+ public static StateObject WorldFindStateByName(string name)
+ {
+ return _worldState[name];
+ }
+ ///
+ /// 世界状态中通过编号找状态
+ ///
+ ///
+ ///
+ public static StateObject WorldFindStateById(int id)
+ {
+ foreach (var State in _worldState)
+ {
+ if (State.Value.Id == id)
+ {
+ return State.Value;
+ }
+ }
+ return null;
+ }
+ ///
+ /// 状态表中通过名字找状态,返回第一个找到的
+ ///
+ ///
+ ///
+ public static StateObject PlayerFindStateByName(string name)
+ {
+ var max = _playerState.Count;
+ StateObject State;
+ for (int i = 0; i < max; i++)
+ {
+ State = _playerState[i];
+ if (State.Name == name)
+ {
+ return State;
+ }
+ }
+ return null;
+ }
+ ///
+ /// 状态表中通过名字找状态,返回所有符合的状态
+ ///
+ ///
+ ///
+ public static List PlayerFindAllStateByName(string name)
+ {
+ var max = _playerState.Count;
+ var Statelist = new List();
+ StateObject State;
+ for (int i = 0; i < max; i++)
+ {
+ State = _playerState[i];
+ if (State.Name == name)
+ {
+ Statelist.Add(State);
+ }
+ }
+ return Statelist;
+ }
+ ///
+ /// 状态表中通过编号找状态,返回第一个找到的
+ ///
+ ///
+ ///
+ public static StateObject PlayerFindStateById(int id)
+ {
+ var max = _playerState.Count;
+ StateObject State;
+ for (int i = 0; i < max; i++)
+ {
+ State = _playerState[i];
+ if (State.Id == id)
+ {
+ return State;
+ }
+ }
+ return null;
+ }
+ ///
+ /// 状态表中通过编号找状态,返回所有找到的
+ ///
+ ///
+ ///
+ public static List PlayerFindAllStateById(int id)
+ {
+ var max = _playerState.Count;
+ var Statelist = new List();
+ StateObject State;
+ for (int i = 0; i < max; i++)
+ {
+ State = _playerState[i];
+ if (State.Id == id)
+ {
+ Statelist.Add(State);
+ }
+ }
+ return Statelist;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Engine/CLEngine.Core/framework/StateObject.cs b/Engine/CLEngine.Core/framework/StateObject.cs
index c1d5b6bb20c0fb5fdd07ef30d4022e6f14987b93..73586c2052cc34f9af07a43e32187439ae642fe0 100644
--- a/Engine/CLEngine.Core/framework/StateObject.cs
+++ b/Engine/CLEngine.Core/framework/StateObject.cs
@@ -32,30 +32,38 @@ namespace CLEngine.Core.framework
[DataMember] private int _affectHp;
[DataMember] private int _affectMp;
[DataMember] private int _affectSpeed;
-
+ [DataMember] private int _id;
+ ///
+ /// ID
+ ///
+ public int Id { get { return _id; } internal set { _id = value; } }
///
/// 持续时间
///
- public int ContinueTime{ get{ return _continueTime; }set{ _continueTime = value; } }
+ public int ContinueTime { get { return _continueTime; } set { _continueTime = value; } }
///
/// 是否只生效一次
///
- public bool IsAffectOnce{ get{ return _isAffectOnce; }set{ _isAffectOnce = value; } }
+ public bool IsAffectOnce { get { return _isAffectOnce; } set { _isAffectOnce = value; } }
///
/// 名称
///
- public string Name{ get{ return _name; }set{ _name = value; } }
+ public string Name { get { return _name; } set { _name = value; } }
///
/// 对生命值影响
///
- public int AffectHp{ get{ return _affectHp; }set{ _affectHp = value; } }
+ public int AffectHp { get { return _affectHp; } set { _affectHp = value; } }
///
/// 对法力值影响
///
- public int AffectMp{ get{ return _affectMp; }set{ _affectMp = value; } }
+ public int AffectMp { get { return _affectMp; } set { _affectMp = value; } }
///
/// 对速度影响
///
- public int AffectSpeed{ get{ return _affectSpeed; }set{ _affectSpeed = value; } }
+ public int AffectSpeed { get { return _affectSpeed; } set { _affectSpeed = value; } }
+ public StateObject(string name)
+ {
+ Name = name;
+ }
}
}