完善事件和部分工厂

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
{
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.Generic;
using System.Linq;
@ -10,6 +11,24 @@ namespace Milimoe.FunGame.Core.Api.Factory
{
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
{
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 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.Threading.Tasks;
namespace Milimoe.FunGame.Core.Entity.Enum
{
/**
@ -106,6 +105,43 @@ namespace Milimoe.FunGame.Core.Entity.Enum
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
#region Result
@ -119,6 +155,12 @@ namespace Milimoe.FunGame.Core.Entity.Enum
Retry
}
public enum EventResult
{
Success,
Fail
}
#endregion
#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 ActiveItem()
internal ActiveItem()
{
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 Reference10 { get; set; } = 0;
public ActiveSkill()
internal ActiveSkill()
{
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 Hashtable? Skills { 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? Loses { 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? EloStats { 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 PassiveItem()
internal PassiveItem()
{
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 Reference10 { get; set; } = 0;
public PassiveSkill()
internal PassiveSkill()
{
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 Hashtable PlayerList { get; set; } = new Hashtable();
public User? RoomMaster { get; set; }
public int RoomType { get; set; }
public int RoomState { get; set; }
public Milimoe.FunGame.Core.Entity.Enum.RoomType RoomType { get; set; }
public Milimoe.FunGame.Core.Entity.Enum.RoomState RoomState { get; set; }
public GameStatistics? Statistics { get; set; } = null;
public Room(User? master = null)
internal Room(User? master = null)
{
if (master != null) RoomMaster = master;
}
public Room(string roomid, User? master = null)
internal Room(string roomid, User? master = null)
{
Roomid = roomid;
if (master != null) RoomMaster = master;

View File

@ -14,10 +14,5 @@ namespace Milimoe.FunGame.Core.Entity.General
public User? User { get; set; } = null;
public Hashtable? Characters { 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 Stock? Stock { get; set; } = null;
public User()
internal User()
{
}
public User(string username)
internal User(string username)
{
Userame = username;
}
public User(string username, string password)
internal User(string username, string password)
{
Userame = username;
Password = password;

View File

@ -26,10 +26,5 @@ namespace Milimoe.FunGame.Core.Entity.General
public Hashtable? RatingStats { get; set; } = new Hashtable();
public Hashtable? EloStats { 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.Linq;
using System.Text;
@ -8,111 +9,177 @@ namespace Milimoe.FunGame.Core.Interface
{
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 event BeforeEvent BeforeConnectEvent;
public event AfterEvent AfterConnectEvent;
public event SucceedEvent SucceedConnectEvent;
public event FailedEvent FailedConnectEvent;
}
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 event BeforeEvent BeforeLoginEvent;
public event AfterEvent AfterLoginEvent;
public event SucceedEvent SucceedLoginEvent;
public event FailedEvent FailedLoginEvent;
}
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 event BeforeEvent BeforeRegEvent;
public event AfterEvent AfterRegEvent;
public event SucceedEvent SucceedRegEvent;
public event FailedEvent FailedRegEvent;
}
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 event BeforeEvent BeforeSendTalkEvent;
public event AfterEvent AfterSendTalkEvent;
public event SucceedEvent SucceedSendTalkEvent;
public event FailedEvent FailedSendTalkEvent;
}
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 event BeforeEvent BeforeQuitRoomEvent;
public event AfterEvent AfterQuitRoomEvent;
public event SucceedEvent SucceedQuitRoomEvent;
public event FailedEvent FailedQuitRoomEvent;
}
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 event BeforeEvent BeforeStartMatchEvent;
public event AfterEvent AfterStartMatchEvent;
public event SucceedEvent SucceedStartMatchEvent;
public event FailedEvent FailedStartMatchEvent;
}
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 event BeforeEvent BeforeChangeProfileEvent;
public event AfterEvent AfterChangeProfileEvent;
public event SucceedEvent SucceedChangeProfileEvent;
public event FailedEvent FailedChangeProfileEvent;
}
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 event BeforeEvent BeforeOpenStockEvent;
public event AfterEvent AfterOpenStockEvent;
public event SucceedEvent SucceedOpenStockEvent;
public event FailedEvent FailedOpenStockEvent;
}
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 event BeforeEvent BeforeOpenStoreEvent;
public event AfterEvent AfterOpenStoreEvent;
public event SucceedEvent SucceedOpenStoreEvent;
public event FailedEvent FailedOpenStoreEvent;
}
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 event BeforeEvent BeforeShowRankingEvent;
public event AfterEvent AfterShowRankingEvent;
public event SucceedEvent SucceedShowRankingEvent;
public event FailedEvent FailedShowRankingEvent;
}
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 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
{
}
}

View File

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