using UnityEngine; using Sfs2X.Entities.Data; public class LocalConnection : IConnection { MessageManager.MessageCallBackDelegate callBack; private int _myUserId = 1; public int myUserId { set { } get { return _myUserId; } } public bool holding { get{ return false; } } public LocalConnection () { } public void ProcessEvents() { } public void Connect() { } public bool IsConnected { get{ return true; } } public void SetResponseMessageCallBack(MessageManager.MessageCallBackDelegate callBack) { this.callBack = callBack; } public void SendMessage(Message msg) { if(callBack != null) { if(msg.cmd == Command.EnterBase) DealEnterBase(msg); else if(msg.cmd == Command.SearchRoom) DealSearchBattle(msg); else DealBattleMessage(msg); } } private void DealEnterBase(Message msg) { string mapName = MapData.MapID.Base.ToString (); ISFSArray arr = new SFSArray (); ISFSObject myObj = new SFSObject (); myObj.PutInt ("u", myUserId); myObj.PutInt ("t", TeamUtil.Team.Blue.GetHashCode()); myObj.PutUtfString ("i", "1"); myObj.PutUtfString ("n", WWW.EscapeURL(Session.GetInstance().myUserData.nick)); arr.AddSFSObject(myObj); ISFSObject oppObj = new SFSObject (); oppObj.PutInt ("u", -1); oppObj.PutInt ("t", TeamUtil.Team.Red.GetHashCode()); oppObj.PutUtfString ("i", "-1"); oppObj.PutUtfString ("n", RandomNPCNick()); arr.AddSFSObject (oppObj); ISFSObject data = new SFSObject(); data.PutUtfString("m", mapName); data.PutSFSArray("a", arr); Message callBackMsg = new Message(Command.SearchRoom, data); callBack(callBackMsg.GetMessagePackage()); } private void DealSearchBattle(Message msg) { string mapName = MapData.GetRandomMap ().ToString (); ISFSArray arr = new SFSArray (); ISFSObject myObj = new SFSObject (); myObj.PutInt ("u", myUserId); myObj.PutInt ("t", TeamUtil.Team.Blue.GetHashCode()); myObj.PutUtfString ("i", Session.GetInstance().myUserData.id.ToString()); myObj.PutUtfString ("n", WWW.EscapeURL(Session.GetInstance().myUserData.nick)); arr.AddSFSObject(myObj); // ISFSObject oppObj = new SFSObject (); // oppObj.PutInt ("u", -1); // oppObj.PutInt ("t", TeamUtil.Team.Red.GetHashCode()); // oppObj.PutUtfString ("n", RandomNPCNick()); // arr.AddSFSObject (oppObj); ISFSObject data = new SFSObject(); data.PutUtfString("m", mapName); data.PutSFSArray("a", arr); Message callBackMsg = new Message(Command.SearchRoom, data); callBack(callBackMsg.GetMessagePackage()); } private string RandomNPCNick() { int index = UnityEngine.Random.Range (0, 20); return Language.GetStr ("NPCNick", "nick"+index); } private void DealBattleMessage(Message msg) { msg.data.PutUtfString (Message.LABEL_SENDER, Session.myUserId.ToString()); msg.data.PutInt (Message.LABEL_TIMESTAMP, 0); callBack(msg.GetMessagePackage()); } private void ResponseMesssage(string cmd, ISFSObject data) { Message callBackMsg = new Message(cmd, data); callBack(callBackMsg.GetMessagePackage()); } public void Disconnect() { } }