完善事件和部分工厂

This commit is contained in:
Mili 2022-10-16 17:03:45 +08:00
parent 0ddd2a5d6b
commit 0c05e2fb5c
21 changed files with 258 additions and 80 deletions

View File

@ -6,8 +6,21 @@ using System.Threading.Tasks;
namespace Milimoe.FunGame.Core.Api.Factory namespace Milimoe.FunGame.Core.Api.Factory
{ {
public abstract class ItemFactory public class ItemFactory
{ {
public static Milimoe.FunGame.Core.Entity.General.Item? GetInstance(Milimoe.FunGame.Core.Entity.Enum.ItemType type, string Name)
{
Milimoe.FunGame.Core.Entity.General.Item? item = null;
switch (type)
{
case Entity.Enum.ItemType.Active:
item = new Milimoe.FunGame.Core.Entity.General.ActiveItem(Name);
break;
case Entity.Enum.ItemType.Passive:
item = new Milimoe.FunGame.Core.Entity.General.PassiveItem(Name);
break;
}
return item;
}
} }
} }

View File

@ -1,4 +1,5 @@
using System; using Milimoe.FunGame.Core.Entity.General;
using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -10,6 +11,24 @@ namespace Milimoe.FunGame.Core.Api.Factory
{ {
public class RoomFactory public class RoomFactory
{ {
public static Milimoe.FunGame.Core.Entity.General.Room GetInstanceByRandomID(Milimoe.FunGame.Core.Entity.Enum.RoomType type, Milimoe.FunGame.Core.Entity.General.User? user)
{
Milimoe.FunGame.Core.Entity.General.Room room = new(user)
{
RoomType = type,
RoomState = Entity.Enum.RoomState.Created
};
return room;
}
public static Milimoe.FunGame.Core.Entity.General.Room GetInstanceByRoomID(Milimoe.FunGame.Core.Entity.Enum.RoomType type, string roomid, Milimoe.FunGame.Core.Entity.General.User? user)
{
Milimoe.FunGame.Core.Entity.General.Room room = new(roomid, user)
{
RoomType = type,
RoomState = Entity.Enum.RoomState.Created
};
return room;
}
} }
} }

View File

@ -6,8 +6,21 @@ using System.Threading.Tasks;
namespace Milimoe.FunGame.Core.Api.Factory namespace Milimoe.FunGame.Core.Api.Factory
{ {
public abstract class SkillFactory public class SkillFactory
{ {
public static Milimoe.FunGame.Core.Entity.General.Skill? GetInstance(Milimoe.FunGame.Core.Entity.Enum.SkillType type, string Name)
{
Milimoe.FunGame.Core.Entity.General.Skill? skill = null;
switch (type)
{
case Entity.Enum.SkillType.Active:
skill = new Milimoe.FunGame.Core.Entity.General.ActiveSkill(Name);
break;
case Entity.Enum.SkillType.Passive:
skill = new Milimoe.FunGame.Core.Entity.General.PassiveSkill(Name);
break;
}
return skill;
}
} }
} }

View File

@ -8,6 +8,19 @@ namespace Milimoe.FunGame.Core.Api.Factory
{ {
public class UserFactory public class UserFactory
{ {
public static Milimoe.FunGame.Core.Entity.General.User GetInstance()
{
return new Milimoe.FunGame.Core.Entity.General.User();
}
public static Milimoe.FunGame.Core.Entity.General.User GetInstance(string username)
{
return new Milimoe.FunGame.Core.Entity.General.User(username);
}
public static Milimoe.FunGame.Core.Entity.General.User GetInstance(string username, string password)
{
return new Milimoe.FunGame.Core.Entity.General.User(username, password);
}
} }
} }

View File

@ -5,7 +5,6 @@ using System.Security.Cryptography;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Milimoe.FunGame.Core.Entity.Enum namespace Milimoe.FunGame.Core.Entity.Enum
{ {
/** /**
@ -106,6 +105,43 @@ namespace Milimoe.FunGame.Core.Entity.Enum
WrongFormat WrongFormat
} }
public enum EventType
{
ConnectEvent,
DisconnectEvent,
LoginEvent,
LogoutEvent,
RegEvent,
IntoRoomEvent,
SendTalkEvent,
CreateRoomEvent,
QuitRoomEvent,
ChangeRoomSettingEvent,
StartMatchEvent,
StartGameEvent,
ChangeProfileEvent,
ChangeAccountSettingEvent,
OpenStockEvent,
SignInEvent,
OpenStoreEvent,
BuyItemEvent,
ShowRankingEvent,
UseItemEvent,
EndGameEvent
}
public enum SkillType
{
Active,
Passive
}
public enum ItemType
{
Active,
Passive
}
#endregion #endregion
#region Result #region Result
@ -119,6 +155,12 @@ namespace Milimoe.FunGame.Core.Entity.Enum
Retry Retry
} }
public enum EventResult
{
Success,
Fail
}
#endregion #endregion
#region Method #region Method

View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Milimoe.FunGame.Core.Entity.Event
{
public class GeneralEventArgs : EventArgs
{
public string EventMsg { get; set; } = "";
public object[]? Parameters { get; set; } = null;
}
public class GeneralEvent<T>
{
public T Instance { get; set; }
public GeneralEvent()
{
Instance = System.Activator.CreateInstance<T>();
}
}
}

View File

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Milimoe.FunGame.Core.Entity.Event
{
public class GeneralEventHandler
{
}
}

View File

@ -10,9 +10,15 @@ namespace Milimoe.FunGame.Core.Entity.General
{ {
public ActiveSkill? Skill { get; set; } = null; public ActiveSkill? Skill { get; set; } = null;
public ActiveItem() internal ActiveItem()
{ {
Active = true; Active = true;
} }
internal ActiveItem(string Name)
{
Active = true;
this.Name = Name;
}
} }
} }

View File

@ -21,9 +21,15 @@ namespace Milimoe.FunGame.Core.Entity.General
public decimal Reference9 { get; set; } = 0; public decimal Reference9 { get; set; } = 0;
public decimal Reference10 { get; set; } = 0; public decimal Reference10 { get; set; } = 0;
public ActiveSkill() internal ActiveSkill()
{ {
Active = true; Active = true;
} }
internal ActiveSkill(string Name)
{
Active = true;
this.Name = Name;
}
} }
} }

View File

@ -33,10 +33,5 @@ namespace Milimoe.FunGame.Core.Entity.General
public decimal EvadeRate { get; set; } = 0.05M; public decimal EvadeRate { get; set; } = 0.05M;
public Hashtable? Skills { get; set; } = new Hashtable(); public Hashtable? Skills { get; set; } = new Hashtable();
public Hashtable? Items { get; set; } = new Hashtable(); public Hashtable? Items { get; set; } = new Hashtable();
public Character()
{
}
} }
} }

View File

@ -25,10 +25,5 @@ namespace Milimoe.FunGame.Core.Entity.General
public Hashtable? Wins { get; set; } = new Hashtable(); public Hashtable? Wins { get; set; } = new Hashtable();
public Hashtable? Loses { get; set; } = new Hashtable(); public Hashtable? Loses { get; set; } = new Hashtable();
public Hashtable? Winrates { get; set; } = new Hashtable(); public Hashtable? Winrates { get; set; } = new Hashtable();
public CharacterStatistics()
{
}
} }
} }

View File

@ -26,10 +26,5 @@ namespace Milimoe.FunGame.Core.Entity.General
public Hashtable? RatingStats { get; set; } = new Hashtable(); public Hashtable? RatingStats { get; set; } = new Hashtable();
public Hashtable? EloStats { get; set; } = new Hashtable(); public Hashtable? EloStats { get; set; } = new Hashtable();
public Hashtable? RankStats { get; set; } = new Hashtable(); public Hashtable? RankStats { get; set; } = new Hashtable();
public GameStatistics()
{
}
} }
} }

View File

@ -10,9 +10,15 @@ namespace Milimoe.FunGame.Core.Entity.General
{ {
public PassiveSkill? Skill { get; set; } = null; public PassiveSkill? Skill { get; set; } = null;
public PassiveItem() internal PassiveItem()
{ {
Active = false; Active = false;
} }
internal PassiveItem(string Name)
{
Active = false;
this.Name = Name;
}
} }
} }

View File

@ -19,9 +19,15 @@ namespace Milimoe.FunGame.Core.Entity.General
public decimal Reference9 { get; set; } = 0; public decimal Reference9 { get; set; } = 0;
public decimal Reference10 { get; set; } = 0; public decimal Reference10 { get; set; } = 0;
public PassiveSkill() internal PassiveSkill()
{ {
Active = false; Active = false;
} }
internal PassiveSkill(string Name)
{
Active = false;
this.Name = Name;
}
} }
} }

View File

@ -15,16 +15,16 @@ namespace Milimoe.FunGame.Core.Entity.General
public DateTime Time { get; set; } = DateTime.Now; public DateTime Time { get; set; } = DateTime.Now;
public Hashtable PlayerList { get; set; } = new Hashtable(); public Hashtable PlayerList { get; set; } = new Hashtable();
public User? RoomMaster { get; set; } public User? RoomMaster { get; set; }
public int RoomType { get; set; } public Milimoe.FunGame.Core.Entity.Enum.RoomType RoomType { get; set; }
public int RoomState { get; set; } public Milimoe.FunGame.Core.Entity.Enum.RoomState RoomState { get; set; }
public GameStatistics? Statistics { get; set; } = null; public GameStatistics? Statistics { get; set; } = null;
public Room(User? master = null) internal Room(User? master = null)
{ {
if (master != null) RoomMaster = master; if (master != null) RoomMaster = master;
} }
public Room(string roomid, User? master = null) internal Room(string roomid, User? master = null)
{ {
Roomid = roomid; Roomid = roomid;
if (master != null) RoomMaster = master; if (master != null) RoomMaster = master;

View File

@ -14,10 +14,5 @@ namespace Milimoe.FunGame.Core.Entity.General
public User? User { get; set; } = null; public User? User { get; set; } = null;
public Hashtable? Characters { get; set; } = new Hashtable(); public Hashtable? Characters { get; set; } = new Hashtable();
public Hashtable? Items { get; set; } = new Hashtable(); public Hashtable? Items { get; set; } = new Hashtable();
public Stock()
{
}
} }
} }

View File

@ -26,17 +26,17 @@ namespace Milimoe.FunGame.Core.Entity.General
public UserStatistics? Statistics { get; set; } = null; public UserStatistics? Statistics { get; set; } = null;
public Stock? Stock { get; set; } = null; public Stock? Stock { get; set; } = null;
public User() internal User()
{ {
} }
public User(string username) internal User(string username)
{ {
Userame = username; Userame = username;
} }
public User(string username, string password) internal User(string username, string password)
{ {
Userame = username; Userame = username;
Password = password; Password = password;

View File

@ -26,10 +26,5 @@ namespace Milimoe.FunGame.Core.Entity.General
public Hashtable? RatingStats { get; set; } = new Hashtable(); public Hashtable? RatingStats { get; set; } = new Hashtable();
public Hashtable? EloStats { get; set; } = new Hashtable(); public Hashtable? EloStats { get; set; } = new Hashtable();
public Hashtable? RankStats { get; set; } = new Hashtable(); public Hashtable? RankStats { get; set; } = new Hashtable();
public UserStatistics()
{
}
} }
} }

View File

@ -1,4 +1,5 @@
using System; using Milimoe.FunGame.Core.Entity.Event;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -8,111 +9,177 @@ namespace Milimoe.FunGame.Core.Interface
{ {
public interface IEvent public interface IEvent
{ {
public delegate Milimoe.FunGame.Core.Entity.Enum.EventResult BeforeEvent(object sender, GeneralEventArgs e);
public delegate Milimoe.FunGame.Core.Entity.Enum.EventResult AfterEvent(object sender, GeneralEventArgs e);
public delegate Milimoe.FunGame.Core.Entity.Enum.EventResult SucceedEvent(object sender, GeneralEventArgs e);
public delegate Milimoe.FunGame.Core.Entity.Enum.EventResult FailedEvent(object sender, GeneralEventArgs e);
} }
public interface IConnectEvent : IEvent public interface IConnectEvent : IEvent
{ {
public event BeforeEvent BeforeConnectEvent;
public event AfterEvent AfterConnectEvent;
public event SucceedEvent SucceedConnectEvent;
public event FailedEvent FailedConnectEvent;
} }
public interface IDisconnectEvent : IEvent public interface IDisconnectEvent : IEvent
{ {
public event BeforeEvent BeforeDisconnectEvent;
public event AfterEvent AfterDisconnectEvent;
public event SucceedEvent SucceedDisconnectEvent;
public event FailedEvent FailedDisconnectEvent;
} }
public interface ILoginEvent : IEvent public interface ILoginEvent : IEvent
{ {
public event BeforeEvent BeforeLoginEvent;
public event AfterEvent AfterLoginEvent;
public event SucceedEvent SucceedLoginEvent;
public event FailedEvent FailedLoginEvent;
} }
public interface ILogoutEvent : IEvent public interface ILogoutEvent : IEvent
{ {
public event BeforeEvent BeforeLogoutEvent;
public event AfterEvent AfterLogoutEvent;
public event SucceedEvent SucceedLogoutEvent;
public event FailedEvent FailedLogoutEvent;
} }
public interface IRegEvent : IEvent public interface IRegEvent : IEvent
{ {
public event BeforeEvent BeforeRegEvent;
public event AfterEvent AfterRegEvent;
public event SucceedEvent SucceedRegEvent;
public event FailedEvent FailedRegEvent;
} }
public interface IIntoRoomEvent : IEvent public interface IIntoRoomEvent : IEvent
{ {
public event BeforeEvent BeforeIntoRoomEvent;
public event AfterEvent AfterIntoRoomEvent;
public event SucceedEvent SucceedIntoRoomEvent;
public event FailedEvent FailedIntoRoomEvent;
} }
public interface ISendTalkEvent : IEvent public interface ISendTalkEvent : IEvent
{ {
public event BeforeEvent BeforeSendTalkEvent;
public event AfterEvent AfterSendTalkEvent;
public event SucceedEvent SucceedSendTalkEvent;
public event FailedEvent FailedSendTalkEvent;
} }
public interface ICreateRoomEvent : IEvent public interface ICreateRoomEvent : IEvent
{ {
public event BeforeEvent BeforeCreateRoomEvent;
public event AfterEvent AfterCreateRoomEvent;
public event SucceedEvent SucceedCreateRoomEvent;
public event FailedEvent FailedCreateRoomEvent;
} }
public interface IQuitRoomEvent : IEvent public interface IQuitRoomEvent : IEvent
{ {
public event BeforeEvent BeforeQuitRoomEvent;
public event AfterEvent AfterQuitRoomEvent;
public event SucceedEvent SucceedQuitRoomEvent;
public event FailedEvent FailedQuitRoomEvent;
} }
public interface IChangeRoomSettingEvent : IEvent public interface IChangeRoomSettingEvent : IEvent
{ {
public event BeforeEvent BeforeChangeRoomSettingEvent;
public event AfterEvent AfterChangeRoomSettingEvent;
public event SucceedEvent SucceedChangeRoomSettingEvent;
public event FailedEvent FailedChangeRoomSettingEvent;
} }
public interface IStartMatchEvent : IEvent public interface IStartMatchEvent : IEvent
{ {
public event BeforeEvent BeforeStartMatchEvent;
public event AfterEvent AfterStartMatchEvent;
public event SucceedEvent SucceedStartMatchEvent;
public event FailedEvent FailedStartMatchEvent;
} }
public interface IStartGameEvent : IEvent public interface IStartGameEvent : IEvent
{ {
public event BeforeEvent BeforeStartGameEvent;
public event AfterEvent AfterStartGameEvent;
public event SucceedEvent SucceedStartGameEvent;
public event FailedEvent FailedStartGameEvent;
} }
public interface IChangeProfileEvent : IEvent public interface IChangeProfileEvent : IEvent
{ {
public event BeforeEvent BeforeChangeProfileEvent;
public event AfterEvent AfterChangeProfileEvent;
public event SucceedEvent SucceedChangeProfileEvent;
public event FailedEvent FailedChangeProfileEvent;
} }
public interface IChangeAccountSettingEvent : IEvent public interface IChangeAccountSettingEvent : IEvent
{ {
public event BeforeEvent BeforeChangeAccountSettingEvent;
public event AfterEvent AfterChangeAccountSettingEvent;
public event SucceedEvent SucceedChangeAccountSettingEvent;
public event FailedEvent FailedChangeAccountSettingEvent;
} }
public interface IOpenStockEvent : IEvent public interface IOpenStockEvent : IEvent
{ {
public event BeforeEvent BeforeOpenStockEvent;
public event AfterEvent AfterOpenStockEvent;
public event SucceedEvent SucceedOpenStockEvent;
public event FailedEvent FailedOpenStockEvent;
} }
public interface ISignInEvent : IEvent public interface ISignInEvent : IEvent
{ {
public event BeforeEvent BeforeSignInEvent;
public event AfterEvent AfterSignInEvent;
public event SucceedEvent SucceedSignInEvent;
public event FailedEvent FailedSignInEvent;
} }
public interface IOpenStoreEvent : IEvent public interface IOpenStoreEvent : IEvent
{ {
public event BeforeEvent BeforeOpenStoreEvent;
public event AfterEvent AfterOpenStoreEvent;
public event SucceedEvent SucceedOpenStoreEvent;
public event FailedEvent FailedOpenStoreEvent;
} }
public interface IBuyItemEvent : IEvent public interface IBuyItemEvent : IEvent
{ {
public event BeforeEvent BeforeBuyItemEvent;
public event AfterEvent AfterBuyItemEvent;
public event SucceedEvent SucceedBuyItemEvent;
public event FailedEvent FailedBuyItemEvent;
} }
public interface IShowRankingEvent : IEvent public interface IShowRankingEvent : IEvent
{ {
public event BeforeEvent BeforeShowRankingEvent;
public event AfterEvent AfterShowRankingEvent;
public event SucceedEvent SucceedShowRankingEvent;
public event FailedEvent FailedShowRankingEvent;
} }
public interface IUseItemEvent : IEvent public interface IUseItemEvent : IEvent
{ {
public event BeforeEvent BeforeUseItemEvent;
public event AfterEvent AfterUseItemEvent;
public event SucceedEvent SucceedUseItemEvent;
public event FailedEvent FailedUseItemEvent;
} }
public interface IEndGameEvent : IEvent public interface IEndGameEvent : IEvent
{ {
public event BeforeEvent BeforeEndGameEvent;
public event AfterEvent AfterEndGameEvent;
public event SucceedEvent SucceedEndGameEvent;
public event FailedEvent FailedEndGameEvent;
} }
} }

View File

@ -8,5 +8,6 @@ namespace Milimoe.FunGame.Desktop.Controller
{ {
public class SocketController public class SocketController
{ {
} }
} }

View File

@ -8,5 +8,6 @@ namespace Milimoe.FunGame.Desktop.Model
{ {
public class SocketModel public class SocketModel
{ {
} }
} }