From 9a63a12e9f36934b13ea54a8f41d012459d06344 Mon Sep 17 00:00:00 2001
From: yhh <359807859@qq.com>
Date: Mon, 29 Jul 2019 15:25:37 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A1=86=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CLEditor/Project Templates/CLEngine.Core.xml | 4 +-
CLEditor/windows/DataBaseWindow.xaml | 24 ++--
CLEditor/windows/SettingsWindow.xaml.cs | 128 +++++++++++-------
Engine/CLEngine.Core/CLEngine.Core.csproj | 2 +
.../framework/FrameworkManager.cs | 27 ++++
.../CLEngine.Core/framework/IGlobalEvent.cs | 34 +++++
.../CLEngine.Core/framework/ItemEventArgs.cs | 24 ++++
Engine/CLEngine.Core/framework/ItemManager.cs | 46 +++----
Engine/CLEngine.Core/framework/ItemObject.cs | 59 +-------
.../CLEngine.Core/framework/SkillManager.cs | 2 +
.../CLEngine.Core/framework/StateManager.cs | 16 +--
Engine/CLEngine.Core/gameObjects/LuaObject.cs | 79 +++++++++--
12 files changed, 279 insertions(+), 166 deletions(-)
create mode 100644 Engine/CLEngine.Core/framework/IGlobalEvent.cs
create mode 100644 Engine/CLEngine.Core/framework/ItemEventArgs.cs
diff --git a/CLEditor/Project Templates/CLEngine.Core.xml b/CLEditor/Project Templates/CLEngine.Core.xml
index bdb31d2..19d2749 100644
--- a/CLEditor/Project Templates/CLEngine.Core.xml
+++ b/CLEditor/Project Templates/CLEngine.Core.xml
@@ -325,14 +325,14 @@
播放.mp3或.wav音频文件
- The relative path to the audio file
+ The relative path to the audio file
Determine if the sound should loop
播放.mp3或.wav音频文件
- The relative path to the audio file
+ The relative path to the audio file
diff --git a/CLEditor/windows/DataBaseWindow.xaml b/CLEditor/windows/DataBaseWindow.xaml
index 24e8aba..68d4e08 100644
--- a/CLEditor/windows/DataBaseWindow.xaml
+++ b/CLEditor/windows/DataBaseWindow.xaml
@@ -49,8 +49,8 @@
-
-
+
+
@@ -67,8 +67,8 @@
-
-
+
+
@@ -80,20 +80,20 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
diff --git a/CLEditor/windows/SettingsWindow.xaml.cs b/CLEditor/windows/SettingsWindow.xaml.cs
index aa52a0d..a6dff18 100644
--- a/CLEditor/windows/SettingsWindow.xaml.cs
+++ b/CLEditor/windows/SettingsWindow.xaml.cs
@@ -1,5 +1,6 @@
using System;
using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
using System.Windows;
using System.Windows.Controls;
using CLEngine.Editor.core;
@@ -11,9 +12,11 @@ namespace CLEngine.Editor.windows
///
/// SettingsWindow.xaml 的交互逻辑
///
- public partial class SettingsWindow : Window
+ [SuppressMessage("ReSharper", "StringLiteralTypo")]
+ [SuppressMessage("ReSharper", "CommentTypo")]
+ public partial class SettingsWindow
{
- private IniFile iniSettings = new IniFile(SceneManager.GameProject.ProjectPath + "\\settings.ini");
+ private readonly IniFile iniSettings = new IniFile(SceneManager.GameProject.ProjectPath + "\\settings.ini");
public SettingsWindow()
{
@@ -30,49 +33,49 @@ namespace CLEngine.Editor.windows
{
case "clengine_general":
settings = new CGeneralSettingsDynamic();
- (settings as CGeneralSettingsDynamic).AutomaticProjectLoad = Properties.Settings.Default.LoadLastProject;
+ ((CGeneralSettingsDynamic) settings).AutomaticProjectLoad = Properties.Settings.Default.LoadLastProject;
try
{
- (settings as CGeneralSettingsDynamic).ScriptEditors = (CGeneralSettingsDynamic.ScriptingEditors)Enum.Parse(typeof(CGeneralSettingsDynamic.ScriptingEditors), Properties.Settings.Default.DefaultScriptEditor, true);
+ ((CGeneralSettingsDynamic) settings).ScriptEditors = (CGeneralSettingsDynamic.ScriptingEditors)Enum.Parse(typeof(CGeneralSettingsDynamic.ScriptingEditors), Properties.Settings.Default.DefaultScriptEditor, true);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
- (settings as CGeneralSettingsDynamic).StartOnFullScreen = Properties.Settings.Default.StartOnFullScreen;
- (settings as CGeneralSettingsDynamic).ShowDebugView = Properties.Settings.Default.ShowDebugView;
- (settings as CGeneralSettingsDynamic).ReduceConsumption = Properties.Settings.Default.ReduceConsumption;
+ ((CGeneralSettingsDynamic) settings).StartOnFullScreen = Properties.Settings.Default.StartOnFullScreen;
+ ((CGeneralSettingsDynamic) settings).ShowDebugView = Properties.Settings.Default.ShowDebugView;
+ ((CGeneralSettingsDynamic) settings).ReduceConsumption = Properties.Settings.Default.ReduceConsumption;
break;
case "clengine_tileset":
settings = new CTilesetSettingsDynamic();
- (settings as CTilesetSettingsDynamic).HighlightActiveTileset = Properties.Settings.Default.HighlightActiveTileset;
+ ((CTilesetSettingsDynamic) settings).HighlightActiveTileset = Properties.Settings.Default.HighlightActiveTileset;
break;
case "game_general":
settings = new GameGeneralSettingsDynamic();
- (settings as GameGeneralSettingsDynamic).ProjectName = SceneManager.GameProject.ProjectName;
- (settings as GameGeneralSettingsDynamic).CatchError =
+ ((GameGeneralSettingsDynamic) settings).ProjectName = SceneManager.GameProject.ProjectName;
+ ((GameGeneralSettingsDynamic) settings).CatchError =
SceneManager.GameProject.EditorSettings.CatchError;
- (settings as GameGeneralSettingsDynamic).NetworkCode = UserPreferences.Instance.NetworkCode;
+ ((GameGeneralSettingsDynamic) settings).NetworkCode = UserPreferences.Instance.NetworkCode;
break;
case "game_grid":
settings = new GameGridSettingsDynamic();
- (settings as GameGridSettingsDynamic).GridSpacing = SceneManager.GameProject.EditorSettings.GridSpacing;
- (settings as GameGridSettingsDynamic).GridThickness = SceneManager.GameProject.EditorSettings.GridThickness;
- (settings as GameGridSettingsDynamic).GridColor = SceneManager.GameProject.EditorSettings.GridColor;
- (settings as GameGridSettingsDynamic).DisplayLines = SceneManager.GameProject.EditorSettings.GridNumberOfLines;
+ ((GameGridSettingsDynamic) settings).GridSpacing = SceneManager.GameProject.EditorSettings.GridSpacing;
+ ((GameGridSettingsDynamic) settings).GridThickness = SceneManager.GameProject.EditorSettings.GridThickness;
+ ((GameGridSettingsDynamic) settings).GridColor = SceneManager.GameProject.EditorSettings.GridColor;
+ ((GameGridSettingsDynamic) settings).DisplayLines = SceneManager.GameProject.EditorSettings.GridNumberOfLines;
break;
case "game_debug":
settings = new GameDebugDynamic();
- (settings as GameDebugDynamic).ShowConsole = iniSettings.IniReadValue("Console", "Visible").ToLower().Trim().Equals("true") ? true : false;
- (settings as GameDebugDynamic).Attach = Properties.Settings.Default.AttachVisualStudio;
+ ((GameDebugDynamic) settings).ShowConsole = iniSettings.IniReadValue("Console", "Visible").ToLower().Trim().Equals("true");
+ ((GameDebugDynamic) settings).Attach = Properties.Settings.Default.AttachVisualStudio;
try
{
- (settings as GameDebugDynamic).DebugMode = (GameDebugDynamic.DebugModes)Enum.Parse(typeof(GameDebugDynamic.DebugModes), (SceneManager.GameProject.Debug ? "Debug" : "Release"), true);
+ ((GameDebugDynamic) settings).DebugMode = (GameDebugDynamic.DebugModes)Enum.Parse(typeof(GameDebugDynamic.DebugModes), (SceneManager.GameProject.Debug ? "Debug" : "Release"), true);
}
catch (Exception ex)
{
@@ -83,10 +86,10 @@ namespace CLEngine.Editor.windows
case "game_screen":
settings = new GameScreenDynamic();
- (settings as GameScreenDynamic).MouseVisible = iniSettings.IniReadValue("Mouse", "Visible").ToLower().Trim().Equals("true") ? true : false;
- (settings as GameScreenDynamic).StartOnFullScreen = iniSettings.IniReadValue("Window", "StartFullScreen").ToLower().Trim().Equals("true") ? true : false;
- (settings as GameScreenDynamic).ScreenWidth = SceneManager.GameProject.Settings.ScreenWidth;
- (settings as GameScreenDynamic).ScreenHeight = SceneManager.GameProject.Settings.ScreenHeight;
+ ((GameScreenDynamic) settings).MouseVisible = iniSettings.IniReadValue("Mouse", "Visible").ToLower().Trim().Equals("true");
+ ((GameScreenDynamic) settings).StartOnFullScreen = iniSettings.IniReadValue("Window", "StartFullScreen").ToLower().Trim().Equals("true");
+ ((GameScreenDynamic) settings).ScreenWidth = SceneManager.GameProject.Settings.ScreenWidth;
+ ((GameScreenDynamic) settings).ScreenHeight = SceneManager.GameProject.Settings.ScreenHeight;
//(settings as GameScreenDynamic).VSync = SceneManager.GameProject.ProjectSettings.VSyncEnabled;
break;
}
@@ -101,11 +104,11 @@ namespace CLEngine.Editor.windows
switch (propertyGrid.Tag.ToString())
{
case "clengine_general":
- Properties.Settings.Default.LoadLastProject = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).AutomaticProjectLoad;
- Properties.Settings.Default.StartOnFullScreen = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).StartOnFullScreen;
- Properties.Settings.Default.ShowDebugView = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).ShowDebugView;
- Properties.Settings.Default.ReduceConsumption = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).ReduceConsumption;
- string appName = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).ScriptEditors.ToString();
+ Properties.Settings.Default.LoadLastProject = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject).AutomaticProjectLoad;
+ Properties.Settings.Default.StartOnFullScreen = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject).StartOnFullScreen;
+ Properties.Settings.Default.ShowDebugView = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject).ShowDebugView;
+ Properties.Settings.Default.ReduceConsumption = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject).ReduceConsumption;
+ string appName = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject).ScriptEditors.ToString();
EditorUtils.StoreInstalledApplications();
@@ -132,51 +135,51 @@ namespace CLEngine.Editor.windows
if (appName.ToLower().Equals("lime"))
{
- Properties.Settings.Default.DefaultScriptEditor = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).ScriptEditors.ToString();
+ Properties.Settings.Default.DefaultScriptEditor = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject)?.ScriptEditors.ToString();
}
- if ((propertyGrid.SelectedObject as CGeneralSettingsDynamic).ScriptEditors.ToString().ToLower() != "lime")
- if (EditorUtils.CheckVisualStudioExistance((propertyGrid.SelectedObject as CGeneralSettingsDynamic).ScriptEditors.ToString()))
- Properties.Settings.Default.DefaultScriptEditor = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).ScriptEditors.ToString();
+ if (((CGeneralSettingsDynamic) propertyGrid.SelectedObject)?.ScriptEditors.ToString().ToLower() != "lime")
+ if (EditorUtils.CheckVisualStudioExistance(((CGeneralSettingsDynamic) propertyGrid.SelectedObject)?.ScriptEditors.ToString()))
+ Properties.Settings.Default.DefaultScriptEditor = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject)?.ScriptEditors.ToString();
else
MessageBox.Show("您没有选定的Visual Studio IDE");
else
- Properties.Settings.Default.DefaultScriptEditor = (propertyGrid.SelectedObject as CGeneralSettingsDynamic).ScriptEditors.ToString();
+ Properties.Settings.Default.DefaultScriptEditor = ((CGeneralSettingsDynamic) propertyGrid.SelectedObject).ScriptEditors.ToString();
Properties.Settings.Default.Save();
break;
case "clengine_tileset":
- Properties.Settings.Default.HighlightActiveTileset = (propertyGrid.SelectedObject as CTilesetSettingsDynamic).HighlightActiveTileset;
+ Properties.Settings.Default.HighlightActiveTileset = ((CTilesetSettingsDynamic) propertyGrid.SelectedObject).HighlightActiveTileset;
break;
case "game_general":
- SceneManager.GameProject.ProjectName = (propertyGrid.SelectedObject as GameGeneralSettingsDynamic).ProjectName;
- SceneManager.GameProject.EditorSettings.CatchError = (propertyGrid.SelectedObject as GameGeneralSettingsDynamic).CatchError;
+ SceneManager.GameProject.ProjectName = (propertyGrid.SelectedObject as GameGeneralSettingsDynamic)?.ProjectName;
+ SceneManager.GameProject.EditorSettings.CatchError = ((GameGeneralSettingsDynamic) propertyGrid.SelectedObject).CatchError;
UserPreferences.Instance.NetworkCode =
- (propertyGrid.SelectedObject as GameGeneralSettingsDynamic).NetworkCode;
+ (propertyGrid.SelectedObject as GameGeneralSettingsDynamic)?.NetworkCode;
break;
case "game_grid":
- SceneManager.GameProject.EditorSettings.GridSpacing = (propertyGrid.SelectedObject as GameGridSettingsDynamic).GridSpacing;
- SceneManager.GameProject.EditorSettings.GridThickness = (propertyGrid.SelectedObject as GameGridSettingsDynamic).GridThickness;
- SceneManager.GameProject.EditorSettings.GridColor = (propertyGrid.SelectedObject as GameGridSettingsDynamic).GridColor;
- SceneManager.GameProject.EditorSettings.GridNumberOfLines = (propertyGrid.SelectedObject as GameGridSettingsDynamic).DisplayLines;
+ SceneManager.GameProject.EditorSettings.GridSpacing = ((GameGridSettingsDynamic) propertyGrid.SelectedObject).GridSpacing;
+ SceneManager.GameProject.EditorSettings.GridThickness = ((GameGridSettingsDynamic) propertyGrid.SelectedObject).GridThickness;
+ SceneManager.GameProject.EditorSettings.GridColor = ((GameGridSettingsDynamic) propertyGrid.SelectedObject).GridColor;
+ SceneManager.GameProject.EditorSettings.GridNumberOfLines = ((GameGridSettingsDynamic) propertyGrid.SelectedObject).DisplayLines;
break;
case "game_debug":
- iniSettings.IniWriteValue("Console", "Visible", (propertyGrid.SelectedObject as GameDebugDynamic).ShowConsole.ToString());
- Properties.Settings.Default.AttachVisualStudio = (propertyGrid.SelectedObject as GameDebugDynamic).Attach;
+ iniSettings.IniWriteValue("Console", "Visible", (propertyGrid.SelectedObject as GameDebugDynamic)?.ShowConsole.ToString());
+ Properties.Settings.Default.AttachVisualStudio = ((GameDebugDynamic) propertyGrid.SelectedObject).Attach;
Properties.Settings.Default.Save();
- SceneManager.GameProject.Debug = (propertyGrid.SelectedObject as GameDebugDynamic).DebugMode == GameDebugDynamic.DebugModes.Debug ? true : false;
+ SceneManager.GameProject.Debug = ((GameDebugDynamic) propertyGrid.SelectedObject).DebugMode == GameDebugDynamic.DebugModes.Debug;
break;
case "game_screen":
- iniSettings.IniWriteValue("Mouse", "Visible", (propertyGrid.SelectedObject as GameScreenDynamic).MouseVisible.ToString());
- iniSettings.IniWriteValue("Window", "StartFullScreen", (propertyGrid.SelectedObject as GameScreenDynamic).StartOnFullScreen.ToString());
- SceneManager.GameProject.Settings.ScreenWidth = (propertyGrid.SelectedObject as GameScreenDynamic).ScreenWidth;
- SceneManager.GameProject.Settings.ScreenHeight = (propertyGrid.SelectedObject as GameScreenDynamic).ScreenHeight;
+ iniSettings.IniWriteValue("Mouse", "Visible", (propertyGrid.SelectedObject as GameScreenDynamic)?.MouseVisible.ToString());
+ iniSettings.IniWriteValue("Window", "StartFullScreen", (propertyGrid.SelectedObject as GameScreenDynamic)?.StartOnFullScreen.ToString());
+ SceneManager.GameProject.Settings.ScreenWidth = ((GameScreenDynamic) propertyGrid.SelectedObject).ScreenWidth;
+ SceneManager.GameProject.Settings.ScreenHeight = ((GameScreenDynamic) propertyGrid.SelectedObject).ScreenHeight;
//SceneManager.GameProject.ProjectSettings.VSyncEnabled = (propertyGrid.SelectedObject as GameScreenDynamic).VSync;
break;
}
@@ -184,11 +187,11 @@ namespace CLEngine.Editor.windows
private void ProjectsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
- if (ProjectsListBox.SelectedItem == null || (ProjectsListBox.SelectedItem as ListBoxItem).Tag == null) return;
+ if ((ProjectsListBox.SelectedItem as ListBoxItem)?.Tag == null) return;
SaveCurrent();
- propertyGrid.Tag = (ProjectsListBox.SelectedItem as ListBoxItem).Tag.ToString();
+ propertyGrid.Tag = ((ListBoxItem) ProjectsListBox.SelectedItem).Tag.ToString();
propertyGrid.SelectedObject = LoadProperties(propertyGrid.Tag.ToString());
}
@@ -200,9 +203,22 @@ namespace CLEngine.Editor.windows
interface ISettingsChannelA { }
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "ConvertToAutoProperty")]
+ [SuppressMessage("ReSharper", "ArrangeAccessorOwnerBody")]
class CGeneralSettingsDynamic : ISettingsChannelA
{
- public enum ScriptingEditors { None, Lime, VisualStudio2019, VisualStudio2017, VisualStudio2015, VisualStudio2013, VisualStudio2012, VisualStudio2010 } //CSExpress2010
+ public enum ScriptingEditors
+ {
+ None,
+ Lime,
+ VisualStudio2019,
+ VisualStudio2017,
+ VisualStudio2015,
+ VisualStudio2013,
+ VisualStudio2012,
+ VisualStudio2010
+ } //CSExpress2010
private bool automaticProjectLoad;
private bool startOnFullScreen;
@@ -251,6 +267,9 @@ namespace CLEngine.Editor.windows
}
}
+ [SuppressMessage("ReSharper", "StringLiteralTypo")]
+ [SuppressMessage("ReSharper", "ConvertToAutoProperty")]
+ [SuppressMessage("ReSharper", "ArrangeAccessorOwnerBody")]
class CTilesetSettingsDynamic : ISettingsChannelA
{
private bool highlightActiveTileset;
@@ -264,6 +283,8 @@ namespace CLEngine.Editor.windows
}
}
+ [SuppressMessage("ReSharper", "ConvertToAutoProperty")]
+ [SuppressMessage("ReSharper", "ArrangeAccessorOwnerBody")]
class GameGeneralSettingsDynamic : ISettingsChannelA
{
private string projectName;
@@ -297,6 +318,8 @@ namespace CLEngine.Editor.windows
}
}
+ [SuppressMessage("ReSharper", "ConvertToAutoProperty")]
+ [SuppressMessage("ReSharper", "ArrangeAccessorOwnerBody")]
class GameGridSettingsDynamic : ISettingsChannelA
{
private int gridSpacing;
@@ -338,6 +361,8 @@ namespace CLEngine.Editor.windows
}
}
+ [SuppressMessage("ReSharper", "ArrangeAccessorOwnerBody")]
+ [SuppressMessage("ReSharper", "ConvertToAutoProperty")]
class GameDebugDynamic : ISettingsChannelA
{
public enum DebugModes { Debug, Release }
@@ -372,6 +397,9 @@ namespace CLEngine.Editor.windows
}
}
+ [SuppressMessage("ReSharper", "CommentTypo")]
+ [SuppressMessage("ReSharper", "ConvertToAutoProperty")]
+ [SuppressMessage("ReSharper", "ArrangeAccessorOwnerBody")]
class GameScreenDynamic : ISettingsChannelA
{
private bool startOnFullScreen;
diff --git a/Engine/CLEngine.Core/CLEngine.Core.csproj b/Engine/CLEngine.Core/CLEngine.Core.csproj
index 330d10b..967fdd3 100644
--- a/Engine/CLEngine.Core/CLEngine.Core.csproj
+++ b/Engine/CLEngine.Core/CLEngine.Core.csproj
@@ -301,6 +301,8 @@
+
+
diff --git a/Engine/CLEngine.Core/framework/FrameworkManager.cs b/Engine/CLEngine.Core/framework/FrameworkManager.cs
index 8f14120..61c5481 100644
--- a/Engine/CLEngine.Core/framework/FrameworkManager.cs
+++ b/Engine/CLEngine.Core/framework/FrameworkManager.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
+using System.Reflection;
using System.Windows.Forms;
namespace CLEngine.Core.framework
@@ -142,5 +143,31 @@ namespace CLEngine.Core.framework
throw new Exception(e.Message, e);
}
}
+
+ ///
+ /// 获取全局事件
+ ///
+ ///
+ public static IGlobalEvent GetGlobalEvent()
+ {
+ var assembly = Assembly.GetAssembly(typeof(IGlobalEvent));
+ var types = assembly.GetTypes();
+ return (from item in types
+ where !item.IsInterface
+ from i in item.GetInterfaces()
+ where i == typeof(IGlobalEvent)
+ select (IGlobalEvent) Activator.CreateInstance(i)).FirstOrDefault();
+ }
+
+ ///
+ /// 执行Lua代码
+ ///
+ /// 文件名
+ /// 函数名
+ /// 参数
+ public static void DoLua(string fileName, string funcName, params object[] param)
+ {
+
+ }
}
}
\ No newline at end of file
diff --git a/Engine/CLEngine.Core/framework/IGlobalEvent.cs b/Engine/CLEngine.Core/framework/IGlobalEvent.cs
new file mode 100644
index 0000000..d50f212
--- /dev/null
+++ b/Engine/CLEngine.Core/framework/IGlobalEvent.cs
@@ -0,0 +1,34 @@
+namespace CLEngine.Core.framework
+{
+ ///
+ /// 游戏全局事件
+ ///
+ public interface IGlobalEvent
+ {
+ #region 物品事件
+
+ ///
+ /// 使用物品事件
+ ///
+ void UseItem(int id);
+
+ ///
+ /// 获取物品事件
+ ///
+ void GetItem(int id);
+
+ ///
+ /// 丢弃物品事件
+ ///
+ ///
+ void ThrowItem(int id);
+
+ ///
+ /// 物品属性改变事件
+ ///
+ ///
+ void ChangePropItem(int id);
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Engine/CLEngine.Core/framework/ItemEventArgs.cs b/Engine/CLEngine.Core/framework/ItemEventArgs.cs
new file mode 100644
index 0000000..9abdc29
--- /dev/null
+++ b/Engine/CLEngine.Core/framework/ItemEventArgs.cs
@@ -0,0 +1,24 @@
+using System;
+
+namespace CLEngine.Core.framework
+{
+ ///
+ ///
+ ///
+ public class ItemEventArgs : EventArgs
+ {
+ ///
+ ///
+ ///
+ public int userId;
+
+ ///
+ ///
+ ///
+ ///
+ public ItemEventArgs(int user)
+ {
+ userId = user;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Engine/CLEngine.Core/framework/ItemManager.cs b/Engine/CLEngine.Core/framework/ItemManager.cs
index 169e638..616c182 100644
--- a/Engine/CLEngine.Core/framework/ItemManager.cs
+++ b/Engine/CLEngine.Core/framework/ItemManager.cs
@@ -1,8 +1,7 @@
using System;
using System.Collections.Generic;
-using System.IO;
+using System.Diagnostics.CodeAnalysis;
using System.Runtime.Serialization;
-using Path = System.IO.Path;
namespace CLEngine.Core.framework
{
@@ -13,6 +12,7 @@ namespace CLEngine.Core.framework
[Serializable]
#endif
[DataContract]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
public class ItemManager : IDataFramework
{
///
@@ -140,10 +140,9 @@ namespace CLEngine.Core.framework
public static ItemObject BagFindItemByName(string name)
{
var max = _playerItem.Count;
- ItemObject item;
for (int i = 0; i < max; i++)
{
- item = _playerItem[i];
+ var item = _playerItem[i];
if (item.Name == name)
{
return item;
@@ -160,10 +159,9 @@ namespace CLEngine.Core.framework
{
var max = _playerItem.Count;
var itemlist = new List();
- ItemObject item;
for (int i = 0; i < max; i++)
{
- item = _playerItem[i];
+ var item = _playerItem[i];
if (item.Name == name)
{
itemlist.Add(item);
@@ -179,10 +177,9 @@ namespace CLEngine.Core.framework
public static ItemObject BagFindItemById(int id)
{
var max = _playerItem.Count;
- ItemObject item;
for (int i = 0; i < max; i++)
{
- item = _playerItem[i];
+ var item = _playerItem[i];
if (item.Id == id)
{
return item;
@@ -199,10 +196,9 @@ namespace CLEngine.Core.framework
{
var max = _playerItem.Count;
var itemlist = new List();
- ItemObject item;
for (int i = 0; i < max; i++)
{
- item = _playerItem[i];
+ var item = _playerItem[i];
if (item.Id == id)
{
itemlist.Add(item);
@@ -218,16 +214,13 @@ namespace CLEngine.Core.framework
public static void GetItemById(int id, int number)//需要注意检索是否装备唯一
{
var onget = WorldFindItemById(id);
- ItemObject item = null;
var max = _playerItem.Count;
var is_finish = false;
- var have = false;
for (var i = 0; i < max; i++)
{
- item = _playerItem[i];
+ var item = _playerItem[i];
if (item.Id == id)
{
- have = true;
if (item.Number + number <= item.MaxNumber)
{
item.Number += number;
@@ -236,7 +229,7 @@ namespace CLEngine.Core.framework
}
}
}
- if (!is_finish || (!have && item.OnlyGetOne))
+ if (!is_finish)
{
onget.Number = number;
_playerItem.Add(onget);
@@ -251,25 +244,18 @@ namespace CLEngine.Core.framework
public static void GetItemByName(string name, int number)
{
var onget = _worldItem[name];
- ItemObject item = null;
var max = _playerItem.Count;
var is_finish = false;
- var have = false;
- for (int i = 0; i < max; i++)
+ for (var i = 0; i < max; i++)
{
- item = _playerItem[i];
- if (item.Name == name)
- {
- have = true;
- if (item.Number + number <= item.MaxNumber)
- {
- item.Number += number;
- is_finish = true;
- break;
- }
- }
+ var item = _playerItem[i];
+ if (item.Name != name) continue;
+ if (item.Number + number > item.MaxNumber) continue;
+ item.Number += number;
+ is_finish = true;
+ break;
}
- if (!is_finish || (!have && item.OnlyGetOne))
+ if (!is_finish)
{
onget.Number = number;
_playerItem.Add(onget);
diff --git a/Engine/CLEngine.Core/framework/ItemObject.cs b/Engine/CLEngine.Core/framework/ItemObject.cs
index c3905f7..a88cfde 100644
--- a/Engine/CLEngine.Core/framework/ItemObject.cs
+++ b/Engine/CLEngine.Core/framework/ItemObject.cs
@@ -12,50 +12,15 @@ namespace CLEngine.Core.framework
///
///
///
- public class ItemEventArgs : EventArgs
- {
- ///
- ///
- ///
- public int userId;
-
- ///
- ///
- ///
- ///
- public ItemEventArgs(int user)
- {
- userId = user;
- }
- }
-
- ///
- ///
- ///
#if WIN
[Serializable]
#endif
[DataContract]
[SuppressMessage("ReSharper", "ArrangeAccessorOwnerBody")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
public class ItemObject
{
- ///
- /// 使用事件
- ///
- public EventHandler Use;
- ///
- /// 获取事件
- ///
- public EventHandler Get;
- ///
- /// 丢弃事件
- ///
- public EventHandler Throw;
- ///
- /// 物品数量改变事件
- ///
- public EventHandler NumberChange;
-
[DataMember] private string _iconPath;
[DataMember] private string _name;
[DataMember] private string _showName;
@@ -420,40 +385,28 @@ namespace CLEngine.Core.framework
///
public void UseItem()
{
- if (Use != null)
- {
- Use.Invoke(this, new ItemEventArgs(userId));
- }
+ FrameworkManager.GetGlobalEvent()?.UseItem(userId);
}
///
/// 获取物品
///
public void GetItem()
{
- if (Get != null)
- {
- Get.Invoke(this, new ItemEventArgs(userId));
- }
+ FrameworkManager.GetGlobalEvent()?.GetItem(userId);
}
///
/// 丢掉物品
///
public void ThrowItem()
{
- if (Throw != null)
- {
- Throw.Invoke(this, new ItemEventArgs(userId));
- }
+ FrameworkManager.GetGlobalEvent()?.ThrowItem(userId);
}
///
/// 物品数量改变
///
public void ItemNumberChange()
{
- if (NumberChange != null)
- {
- NumberChange.Invoke(this, new ItemEventArgs(userId));
- }
+ FrameworkManager.GetGlobalEvent()?.ChangePropItem(userId);
}
///
/// 返回表示当前对象的字符串
diff --git a/Engine/CLEngine.Core/framework/SkillManager.cs b/Engine/CLEngine.Core/framework/SkillManager.cs
index b9d0092..a577e5c 100644
--- a/Engine/CLEngine.Core/framework/SkillManager.cs
+++ b/Engine/CLEngine.Core/framework/SkillManager.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Runtime.Serialization;
namespace CLEngine.Core.framework
@@ -11,6 +12,7 @@ namespace CLEngine.Core.framework
[Serializable]
#endif
[DataContract]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
public class SkillManager : IDataFramework
{
///
diff --git a/Engine/CLEngine.Core/framework/StateManager.cs b/Engine/CLEngine.Core/framework/StateManager.cs
index 34572bf..7ea38de 100644
--- a/Engine/CLEngine.Core/framework/StateManager.cs
+++ b/Engine/CLEngine.Core/framework/StateManager.cs
@@ -1,8 +1,7 @@
using System;
using System.Collections.Generic;
-using System.IO;
+using System.Diagnostics.CodeAnalysis;
using System.Runtime.Serialization;
-using Path = System.IO.Path;
namespace CLEngine.Core.framework
{
@@ -13,6 +12,7 @@ namespace CLEngine.Core.framework
[Serializable]
#endif
[DataContract]
+ [SuppressMessage("ReSharper", "UnusedMember.Global")]
public class StateManager : IDataFramework
{
///
@@ -140,10 +140,9 @@ namespace CLEngine.Core.framework
public static StateObject PlayerFindStateByName(string name)
{
var max = _playerState.Count;
- StateObject State;
for (int i = 0; i < max; i++)
{
- State = _playerState[i];
+ var State = _playerState[i];
if (State.Name == name)
{
return State;
@@ -160,10 +159,9 @@ namespace CLEngine.Core.framework
{
var max = _playerState.Count;
var Statelist = new List();
- StateObject State;
for (int i = 0; i < max; i++)
{
- State = _playerState[i];
+ var State = _playerState[i];
if (State.Name == name)
{
Statelist.Add(State);
@@ -179,10 +177,9 @@ namespace CLEngine.Core.framework
public static StateObject PlayerFindStateById(int id)
{
var max = _playerState.Count;
- StateObject State;
for (int i = 0; i < max; i++)
{
- State = _playerState[i];
+ var State = _playerState[i];
if (State.Id == id)
{
return State;
@@ -199,10 +196,9 @@ namespace CLEngine.Core.framework
{
var max = _playerState.Count;
var Statelist = new List();
- StateObject State;
for (int i = 0; i < max; i++)
{
- State = _playerState[i];
+ var State = _playerState[i];
if (State.Id == id)
{
Statelist.Add(State);
diff --git a/Engine/CLEngine.Core/gameObjects/LuaObject.cs b/Engine/CLEngine.Core/gameObjects/LuaObject.cs
index 07bc118..0988b4b 100644
--- a/Engine/CLEngine.Core/gameObjects/LuaObject.cs
+++ b/Engine/CLEngine.Core/gameObjects/LuaObject.cs
@@ -1,57 +1,79 @@
using System;
using System.ComponentModel;
-using System.IO;
using System.Runtime.Serialization;
-using System.Text;
using CLEngine.Core.design;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using NLua;
+// ReSharper disable once CheckNamespace
namespace CLEngine.Core
{
+ ///
+ ///
+ ///
#if WIN
- [Serializable]
+ [Serializable]
#endif
[DataContract]
public class LuaObject : ObjectComponent
{
+ ///
+ ///
+ ///
[DataMember]
- public string filePath;
+ public string _filePath;
+ ///
+ ///
+ ///
[NonSerialized]
public object[] LuaResult;
+ ///
+ ///
+ ///
#if WIN
- [Editor(typeof(ContentBrowserEditor), typeof(System.Drawing.Design.UITypeEditor))]
+ [Editor(typeof(ContentBrowserEditor), typeof(System.Drawing.Design.UITypeEditor))]
[Category("脚本属性")]
[DisplayName("文件路径"), Description("脚本文件的相对路径")]
#endif
public string LuaFilePath
{
- get { return filePath; }
+ get { return _filePath; }
set
{
- filePath = value;
+ _filePath = value;
}
}
+
+ ///
+ ///
+ ///
#if WIN
- [NonSerialized]
+ [NonSerialized]
#endif
[Browsable(false)]
public ObjectComponent Object;
+
+ ///
+ ///
+ ///
public LuaObject()
{
Object = this;
}
+ ///
+ ///
+ ///
public override void Initialize()
{
Object = this;
- string _filePath = SceneManager.GameProject.ProjectPath + "//" + filePath;
+ string _filePath = SceneManager.GameProject.ProjectPath + "//" + this._filePath;
LuaResult = ScriptEngine.LuaEngine.LoadFile(_filePath).Call(this);
@@ -60,6 +82,10 @@ namespace CLEngine.Core
DoFile("Initialize", Object);
}
+ ///
+ ///
+ ///
+ ///
public override void Update(GameTime gameTime)
{
base.Update(gameTime);
@@ -67,6 +93,11 @@ namespace CLEngine.Core
DoFile("Update", gameTime);
}
+ ///
+ ///
+ ///
+ ///
+ ///
public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
{
base.Draw(gameTime, spriteBatch);
@@ -74,6 +105,10 @@ namespace CLEngine.Core
DoFile("Draw", gameTime, spriteBatch);
}
+ ///
+ ///
+ ///
+ ///
public override void OnCollisionEnter(GameObject other)
{
base.OnCollisionEnter(other);
@@ -81,6 +116,10 @@ namespace CLEngine.Core
DoFile("OnCollisionEnter", other);
}
+ ///
+ ///
+ ///
+ ///
public override void OnMouseDown(MouseEventButton buttonPressed)
{
base.OnMouseDown(buttonPressed);
@@ -88,6 +127,9 @@ namespace CLEngine.Core
DoFile("OnMouseDown", buttonPressed);
}
+ ///
+ ///
+ ///
public override void OnMouseMove()
{
base.OnMouseMove();
@@ -95,6 +137,9 @@ namespace CLEngine.Core
DoFile("OnMouseMove");
}
+ ///
+ ///
+ ///
public override void OnCollisionFree()
{
base.OnCollisionFree();
@@ -102,6 +147,10 @@ namespace CLEngine.Core
DoFile("OnCollisionFree");
}
+ ///
+ ///
+ ///
+ ///
public override void OnMouseClick(MouseEventButton buttonPressed)
{
base.OnMouseClick(buttonPressed);
@@ -109,6 +158,9 @@ namespace CLEngine.Core
DoFile("OnMouseClick", buttonPressed);
}
+ ///
+ ///
+ ///
public override void OnMouseEnter()
{
base.OnMouseEnter();
@@ -116,6 +168,9 @@ namespace CLEngine.Core
DoFile("OnMouseEnter");
}
+ ///
+ ///
+ ///
public override void OnMouseOut()
{
base.OnMouseOut();
@@ -123,6 +178,9 @@ namespace CLEngine.Core
DoFile("OnMouseOut");
}
+ ///
+ ///
+ ///
public override void OnMouseUp()
{
base.OnMouseUp();
@@ -130,6 +188,9 @@ namespace CLEngine.Core
DoFile("OnMouseUp");
}
+ ///
+ ///
+ ///
public override void Removed()
{
base.Removed();
--
Gitee