|
|
|
@ -1,6 +1,7 @@
@@ -1,6 +1,7 @@
|
|
|
|
|
using System; |
|
|
|
|
using System.Collections; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using JXSoft; |
|
|
|
|
using QFrameworkCP; |
|
|
|
|
using UnityEngine; |
|
|
|
|
using UnityEngine.Events; |
|
|
|
@ -13,7 +14,7 @@ namespace JXSoft {
@@ -13,7 +14,7 @@ namespace JXSoft {
|
|
|
|
|
//管理消息收发响应控制 |
|
|
|
|
public IOCContainer mCommandContainer = new IOCContainer(); |
|
|
|
|
//管理连接状态响应 |
|
|
|
|
public IOCContainer mLinkStateContainer = new IOCContainer(); |
|
|
|
|
public Dictionary<int,ILinkState> mLinkStateContainer = new Dictionary<int,ILinkState>(); |
|
|
|
|
public UnityStringEvent onDataRecived = new UnityStringEvent(); |
|
|
|
|
public Color printColor = Color.white; |
|
|
|
|
|
|
|
|
@ -68,30 +69,39 @@ namespace JXSoft {
@@ -68,30 +69,39 @@ namespace JXSoft {
|
|
|
|
|
public abstract void setLinkState(int linkState); |
|
|
|
|
public abstract int getLinkState(); |
|
|
|
|
|
|
|
|
|
public void invokeLinkState<TLinkState>(int invokeState) where TLinkState : ILinkState ,new(){ |
|
|
|
|
public void transfromLinkState<TLinkState>(TLinkState linkState) where TLinkState : ILinkState, new() |
|
|
|
|
{ |
|
|
|
|
if (mLinkStateContainer.ContainsKey(getLinkState())) |
|
|
|
|
{ |
|
|
|
|
bool isSuccess = mLinkStateContainer[getLinkState()].transform(linkState); |
|
|
|
|
if (isSuccess) |
|
|
|
|
{ |
|
|
|
|
this.setLinkState(linkState.getLinkState()); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
Debug.LogWarning("Transform Faild!"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void invokeLinkState<TLinkState>(TLinkState linkState,int invokeState) where TLinkState : ILinkState, new() |
|
|
|
|
public void transfromLinkState<TLinkState>() where TLinkState : ILinkState, new() |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
TLinkState linkState = new TLinkState(); |
|
|
|
|
transfromLinkState(linkState); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void registerLinkState(ILinkState linkState) { |
|
|
|
|
mLinkStateContainer.Register(linkState); |
|
|
|
|
if (mLinkStateContainer.ContainsKey(linkState.getLinkState())) |
|
|
|
|
{ |
|
|
|
|
mLinkStateContainer[linkState.getLinkState()] = linkState; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
mLinkStateContainer.Add(linkState.getLinkState(), linkState); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//public abstract void nodifyLinkState<TLinkState>() where TLinkState:ILinkState; |
|
|
|
|
//public abstract void registerLinkState(); |
|
|
|
|
#endregion |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#region enum |
|
|
|
|
public enum LinkStateDefault { |
|
|
|
|
NoLink = 0, |
|
|
|
|
LinkSuccess = 1, |
|
|
|
|
LinkFaild = 2 |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Command |
|
|
|
|
/// <summary> |
|
|
|
@ -176,10 +186,14 @@ namespace JXSoft {
@@ -176,10 +186,14 @@ namespace JXSoft {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public interface ILinkState { |
|
|
|
|
//获取当前链接状态 |
|
|
|
|
//当前链接状态 |
|
|
|
|
int getLinkState(); |
|
|
|
|
//执行当前链接 |
|
|
|
|
bool invoke(int invokeState); |
|
|
|
|
/// <summary> |
|
|
|
|
/// 转换到xx状态 |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="invokeState">目标链接状态</param> |
|
|
|
|
/// <returns>是否成功</returns> |
|
|
|
|
bool transform(ILinkState invokeState); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endregion |
|
|
|
@ -216,19 +230,7 @@ namespace JXSoft {
@@ -216,19 +230,7 @@ namespace JXSoft {
|
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
#region LinkState |
|
|
|
|
public class StateLinkToServer : ILinkState { |
|
|
|
|
public int getLinkState() |
|
|
|
|
{ |
|
|
|
|
return (int)LinkStateDefault.NoLink; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public bool invoke(int invokeState) |
|
|
|
|
{ |
|
|
|
|
throw new NotImplementedException(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
#region event |
|
|
|
|
public struct ResponseMsgEvent |
|
|
|
@ -260,4 +262,85 @@ namespace JXSoft {
@@ -260,4 +262,85 @@ namespace JXSoft {
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// this Package improved a base example of link to server |
|
|
|
|
/// you can also create class implements ILinkState. |
|
|
|
|
/// </summary> |
|
|
|
|
namespace BaseLinkState |
|
|
|
|
{ |
|
|
|
|
#region enum |
|
|
|
|
public enum LinkStateDefault |
|
|
|
|
{ |
|
|
|
|
NoLink = 0, |
|
|
|
|
LinkSuccess = 1, |
|
|
|
|
LinkFaild = 2, |
|
|
|
|
LinkTimeOut = 3 |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
#region LinkState |
|
|
|
|
public abstract class StateNoLink : ILinkState |
|
|
|
|
{ |
|
|
|
|
public int getLinkState() |
|
|
|
|
{ |
|
|
|
|
return (int)LinkStateDefault.NoLink; |
|
|
|
|
} |
|
|
|
|
public bool transform(ILinkState invokeState) |
|
|
|
|
{ |
|
|
|
|
bool transformResult = false; |
|
|
|
|
switch (invokeState.getLinkState()) |
|
|
|
|
{ |
|
|
|
|
case (int)LinkStateDefault.LinkSuccess: |
|
|
|
|
linkToServer(); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
Debug.LogWarning("No such transform fucntion!"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
return transformResult; |
|
|
|
|
} |
|
|
|
|
public abstract bool linkToServer(); |
|
|
|
|
} |
|
|
|
|
public class StateLinkSuccess : ILinkState |
|
|
|
|
{ |
|
|
|
|
public int getLinkState() |
|
|
|
|
{ |
|
|
|
|
return (int)LinkStateDefault.LinkSuccess; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public bool transform(ILinkState invokeState) |
|
|
|
|
{ |
|
|
|
|
throw new NotImplementedException(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public class StateLinkFaild :ILinkState{ |
|
|
|
|
public int getLinkState() |
|
|
|
|
{ |
|
|
|
|
return (int)LinkStateDefault.LinkFaild; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public bool transform(ILinkState invokeState) |
|
|
|
|
{ |
|
|
|
|
throw new NotImplementedException(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public class StateLinkTimeOut :ILinkState{ |
|
|
|
|
public int getLinkState() |
|
|
|
|
{ |
|
|
|
|
return (int)LinkStateDefault.LinkTimeOut; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public bool transform(ILinkState invokeState) |
|
|
|
|
{ |
|
|
|
|
throw new NotImplementedException(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
} |