ScreenCapture sc = new ScreenCapture(); // sc 인스턴스화 public void SendTime(float time, string scenename) { scObject data = new scObject("sendtimeinfo"); data.addFloat("time", time); data.addString("account", userName); data.addString("scenename", scenename); message mes = new message("sendtime"); mes.addSCObject(data); SendServerMessage(mes); }
void OnTriggerEnter2D(Collider2D coll) { float fx = coll.gameObject.transform.position.x; float fy = coll.gameObject.transform.position.y; message m = new message("foodDestroy"); scObject foodInfo = new scObject("foodInfo"); foodInfo.addFloat("xPos", fx); foodInfo.addFloat("yPos", fy); m.addSCObject(foodInfo); //food if (coll.name.StartsWith("apple")) { apple = true; Client.Instance.SendServerMessage(m); Destroy(coll.gameObject); } else if (coll.name.StartsWith("onion")) { onion = true; Client.Instance.SendServerMessage(m); Destroy(coll.gameObject); } else if (coll.name.StartsWith("rat")) { rat = true; Client.Instance.SendServerMessage(m); Destroy(coll.gameObject); } else { //Application.LoadLevel ("GameScene"); testText.text = "You Lose!"; moveable = false; // reset(); } }
public void UpdatePlantExp(string userName, int plantPos, int level, int expName, float expAmount) { //expName 에는 waterExp, sunExp 등등 중에 하나 들어가야됨, 나중에 이것도 이넘형으로 바꾸기 //PlantPos가 기본키니깐...필요... Debug.Log("*******************loginScript - UpdatePlantExp is success************************"); Debug.Log("Plant Position = " + plantPos + " Level is = " + level + " expName is = " + expName); scObject data = new scObject("UpdatePlantExpInfo"); data.addString("account", userName); data.addInt("plantPos", plantPos); data.addInt("level", level); data.addInt("expName", expName); data.addFloat("expAmount", expAmount); message mes = new message("UpdatePlantExp"); mes.addSCObject(data); SendServerMessage(mes); }
public scObject snakeToSCObject() { // Segment for head scObject snake = new scObject("snake"); snake.addString("username", Client.Instance.username); snake.addFloat("xPos", transform.position.x); snake.addFloat("yPos", transform.position.y); snake.addFloat("zPos", transform.position.z); snake.addFloat("xRot", transform.rotation.eulerAngles.x); snake.addFloat("yRot", transform.rotation.eulerAngles.y); snake.addFloat("zRot", transform.rotation.eulerAngles.z); snake.addInt("segments", segments.Count); // New object for each segment for (int i = 0; i < segments.Count; i++) { snake.addFloat(i + "_xPos", segments [i].transform.position.x); snake.addFloat(i + "_yPos", segments [i].transform.position.y); snake.addFloat(i + "_zPos", segments [i].transform.position.z); } return(snake); }
} // userName이 가지고 있는 itemName //이거 지금 사실상 거의 씨앗심을때만 사용하고잇음.. //나중에 테이블을 추가해야된다면 테이블 이름도 변수로 받아서 생성되게 변경할 수 있다. 테이블명에 userName가 들어간다면 조합해서 사용하면되고 //아니면 그냥 테이블 이름 직접 써주면되고 //식물리스트테이블에다가 식물의 이름 위치 해당 식물의 경험치를 넣어주는 함수. 씨앗심거나 위치 옮길때 사용 //userName는 아이디, plantName 식물이름, itemName는 올릴경험치종류(= PlantList테이블의 필드명, WaterEXP, SunEXP, FertilizerEXP, 중 하나) //level은 레벨, expAmount는 올려주고싶은 경험치량, posNumber 식물 위치 //우리 경험치 다 따로 만들기로 했던거 알지? 그래서 이렇게 해놓음... //아이템리스트테이블 필드(PlantPos, PlantName, PlantID, Lv, WaterEXP, SunEXP, FertilizerEXP) //////////수정 필수,,,, 더이상 update의 의미가없다 public void UpdatePlantListTable(string userName, string plantName, int plantID, string itemName, int posNumber, int level, float expAmount, bool isSeedItem) { Debug.Log("loginScript - UpdatePlantListTable is called"); scObject data = new scObject("UpdatePlantListTableInfo"); data.addString("account", userName); data.addString("plantName", plantName); data.addString("itemName", itemName); data.addInt("plantID", plantID); data.addInt("posNumber", posNumber); data.addInt("level", level); data.addFloat("expAmount", expAmount); data.addBool("isSeedItem", isSeedItem); message mes = new message("UpdatePlantListTable"); mes.addSCObject(data); SendServerMessage(mes); }
public void handleClientData(Socket cSock, message incObject) { Stopwatch Sw = new Stopwatch(); switch (incObject.messageText) { case "home": message home = new message("homeResponse"); cSock.Shutdown(SocketShutdown.Receive); if (true) { scObject data = new scObject("data"); data.addBool("response", true); home.addSCObject(data); sendClientMessage(cSock, home); } break; case "close": message close = new message("closeResponse"); cSock.Shutdown(SocketShutdown.Receive); if (true) { scObject data = new scObject("data"); data.addBool("response", true); close.addSCObject(data); sendClientMessage(cSock, close); } break; case "login": //output.outToScreen("serverTCP - login 정상 실행."); message login = new message("loginResponse"); if (playerTools.checkLogin(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("password"))) { scObject data = new scObject("data"); data.addBool("response", true); login.addSCObject(data); output.outToScreen("loginScript - loginResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); login.addSCObject(data); output.outToScreen("loginScript - loginResponse에 False 값 전달."); } sendClientMessage(cSock, login); break; case "register": //output.outToScreen("serverTCP - register 정상 실행."); message register = new message("registerResponse"); if (playerTools.createregister(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("password"))) { scObject data = new scObject("data"); data.addBool("response", true); register.addSCObject(data); output.outToScreen("loginScript - registerResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); register.addSCObject(data); output.outToScreen("loginScript - registerResponse에 False 값 전달."); } sendClientMessage(cSock, register); break; case "url": //output.outToScreen("serverTCP - url 정상 실행."); message url = new message("urlResponse"); if (playerTools.createurl(incObject.getSCObject(0).getString("url"), incObject.getSCObject(0).getString("account"))) { scObject data = new scObject("data"); data.addBool("response", true); url.addSCObject(data); output.outToScreen("loginScript - urlResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); url.addSCObject(data); output.outToScreen("loginScript - urlResponse에 False 값 전달."); } sendClientMessage(cSock, url); break; case "getItem": //output.outToScreen("serverTCP - getItem 정상 실행."); message getitem = new message("getItemResponse"); if (playerTools.getItem(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("itemName"))) { scObject data = new scObject("data"); data.addBool("response", true); getitem.addSCObject(data); output.outToScreen("loginScript - getItemResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); getitem.addSCObject(data); output.outToScreen("loginScript - getItemResponse에 False 값 전달."); } sendClientMessage(cSock, getitem); break; case "UpdatePlantListTable": //output.outToScreen("serverTCP - UpdatePlantListTable 정상 실행."); message updatePlantListTableMes = new message("UpdatePlantListTableResponse"); if (playerTools.UpdatePlantListTable(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("plantName"), incObject.getSCObject(0).getInt("plantID"), incObject.getSCObject(0).getString("itemName"), incObject.getSCObject(0).getInt("posNumber"), incObject.getSCObject(0).getInt("level"), incObject.getSCObject(0).getFloat("expAmount"), incObject.getSCObject(0).getBool("isSeedItem"))) { scObject data = new scObject("data"); data.addBool("response", true); updatePlantListTableMes.addSCObject(data); output.outToScreen("loginScript - UpdatePlantListTable에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); updatePlantListTableMes.addSCObject(data); output.outToScreen("loginScript - UpdatePlantListTable에 False 값 전달."); } sendClientMessage(cSock, updatePlantListTableMes); break; case "SelectQuery": //output.outToScreen("serverTCP - SelectQuery 정상 실행."); message selectQueryMes = new message("SelectQueryResponse"); if (playerTools.SelectQuery(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("columnName"), incObject.getSCObject(0).getString("tableName"))) { scObject data = new scObject("data"); data.addBool("response", true); data.addInt("plantListTableCount", playerTools.plantPos.Count); for (int i = 0; i <= playerTools.plantPos.Count - 1; i++) { data.addInt("plantPos[" + i + "]", playerTools.plantPos[i]); data.addString("plantName[" + i + "]", playerTools.plantName[i]); data.addInt("plantID[" + i + "]", playerTools.plantID[i]); data.addInt("Lv[" + i + "]", playerTools.Lv[i]); data.addFloat("waterEXP[" + i + "]", playerTools.waterEXP[i]); data.addFloat("sunEXP[" + i + "]", playerTools.sunEXP[i]); data.addFloat("fertilizerEXP[" + i + "]", playerTools.fertilizerEXP[i]); } ////고민중, 걍 노가다임시방편으로 할지 여러 곳에 사용될수잇게 만들지.. 테이블마다 컬럼 개수가 다를 텐데 어떻게 다 가져오지? //위에 써놓음, 다시말하면 2차원배열 만들면됨, 배열 크기는 loginScript에서 넘겨받으면됨, //근데 보통 테이블마다 따로 짠다고하니 별 상관 없을듯함 selectQueryMes.addSCObject(data); output.outToScreen("loginScript - SelectQueryResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); selectQueryMes.addSCObject(data); output.outToScreen("loginScript - SelectQueryResponse에 False 값 전달."); } playerTools.plantPos.Clear(); playerTools.plantName.Clear(); playerTools.plantID.Clear(); playerTools.Lv.Clear(); playerTools.waterEXP.Clear(); playerTools.sunEXP.Clear(); playerTools.fertilizerEXP.Clear(); sendClientMessage(cSock, selectQueryMes); break; case "UpdatePlantExp": //output.outToScreen("serverTCP - SelectQuery 정상 실행."); message UpdatePlantExpMes = new message("UpdatePlantExpResponse"); if (playerTools.UpdatePlantExp(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getInt("plantPos"), incObject.getSCObject(0).getInt("level"), incObject.getSCObject(0).getInt("expName"), incObject.getSCObject(0).getFloat("expAmount"))) { output.outToScreen("SeverTCP - UpdatePlantExp is complete"); scObject data = new scObject("data"); data.addBool("response", true); UpdatePlantExpMes.addSCObject(data); } else { scObject data = new scObject("data"); data.addBool("response", false); UpdatePlantExpMes.addSCObject(data); } //sendClientMessage(cSock, UpdatePlantExpMes); break; case "UpdatePlantID": message UpdatePlantIDMes = new message("UpdatePlantIDResponse"); if (playerTools.UpdatePlantID(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getInt("plantPos"), incObject.getSCObject(0).getInt("plantID"))) { output.outToScreen("SeverTCP - UpdatePlantID is complete"); scObject data = new scObject("data"); data.addBool("response", true); UpdatePlantIDMes.addSCObject(data); } else { scObject data = new scObject("data"); data.addBool("response", false); UpdatePlantIDMes.addSCObject(data); } //sendClientMessage(cSock, UpdatePlantExpMes); break; case "ItemCountCheck": //output.outToScreen("serverTCP - ItemCountCheck 정상 실행."); message itemcountcheck = new message("ItemCountCheckResponse"); if (playerTools.ItemCountCheck(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("itemName"))) { scObject data = new scObject("data"); data.addBool("response", true); if (playerTools.number == playerTools.wItemNum) { data.addInt("wItemNum", playerTools.wItemNum); itemcountcheck.addSCObject(data); //output.outToScreen("loginScript - ItemCountCheckResponse에 True 값과 wItemNum 값 전달."); } if (playerTools.number2 == playerTools.fItemNum) { data.addInt("fItemNum", playerTools.fItemNum); itemcountcheck.addSCObject(data); //output.outToScreen("loginScript - ItemCountCheckResponse에 True 값과 fItemNum 값 전달."); } if (playerTools.number3 == playerTools.sItemNum) { data.addInt("sItemNum", playerTools.sItemNum); itemcountcheck.addSCObject(data); //output.outToScreen("loginScript - ItemCountCheckResponse에 True 값과 sItemNum 값 전달."); } if (playerTools.number4 == playerTools.nItemNum) { data.addInt("nItemNum", playerTools.nItemNum); itemcountcheck.addSCObject(data); //output.outToScreen("loginScript - ItemCountCheckResponse에 True 값과 nItemNum 값 전달."); } if (playerTools.number5 == playerTools.sfsItemNum) { data.addInt("sfsItemNum", playerTools.sfsItemNum); itemcountcheck.addSCObject(data); //output.outToScreen("loginScript - ItemCountCheckResponse에 True 값과 sfsItemNum 값 전달."); } if (playerTools.number6 == playerTools.csItemNum) { data.addInt("csItemNum", playerTools.csItemNum); itemcountcheck.addSCObject(data); //output.outToScreen("loginScript - ItemCountCheckResponse에 True 값과 csItemNum 값 전달."); } if (playerTools.number7 == playerTools.tsItemNum) { data.addInt("tsItemNum", playerTools.tsItemNum); itemcountcheck.addSCObject(data); //output.outToScreen("loginScript - ItemCountCheckResponse에 True 값과 tsItemNum 값 전달."); } output.outToScreen("loginScript - ItemCountCheckResponse에 True 값 전달"); } else { scObject data = new scObject("data"); data.addBool("response", false); itemcountcheck.addSCObject(data); output.outToScreen("loginScript - ItemCountCheckResponse에 False 값 전달."); } sendClientMessage(cSock, itemcountcheck); break; case "urlcheck": //output.outToScreen("serverTCP - urlcheck 정상 실행."); message urlcheck = new message("urlcheckResponse"); if (playerTools.urlcheck(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("password"))) { scObject data = new scObject("data"); data.addBool("response", true); urlcheck.addSCObject(data); output.outToScreen("loginScript - urlcheckResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); urlcheck.addSCObject(data); output.outToScreen("loginScript - urlcheckResponse에 False 값 전달."); } sendClientMessage(cSock, urlcheck); break; case "UseItem": //output.outToScreen("serverTCP - UseItem 정상 실행."); message useitem = new message("UseItemResponse"); if (playerTools.UseItem(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("itemName"), incObject.getSCObject(0).getInt("itemNum"))) { scObject data = new scObject("data"); data.addBool("response", true); data.addInt("wItemNum", playerTools.number); data.addInt("fItemNum", playerTools.number2); data.addInt("sItemNum", playerTools.number3); data.addInt("nItemNum", playerTools.number4); data.addInt("sfsItemNum", playerTools.number5); data.addInt("csItemNum", playerTools.number6); data.addInt("tsItemNum", playerTools.number7); useitem.addSCObject(data); output.outToScreen("loginScript - UseItemResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); useitem.addSCObject(data); output.outToScreen("loginScript - UseItemResponse에 False 값 전달."); } sendClientMessage(cSock, useitem); break; case "sendtime": message sendtime = new message("sendtimeresponse"); if (playerTools.sendtime(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getFloat("time"), incObject.getSCObject(0).getString("scenename"))) { output.outToScreen(""); } break; case "plusExp": //output.outToScreen("serverTCP - plusExp 정상 실행."); message plusExp = new message("plusExpResponse"); if (playerTools.plusExp(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("password"))) { scObject data = new scObject("data"); data.addBool("response", true); plusExp.addSCObject(data); output.outToScreen("loginScript - plusExpResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); plusExp.addSCObject(data); output.outToScreen("loginScript - plusExpResponse에 False 값 전달."); } sendClientMessage(cSock, plusExp); break; case "CheckExp": //output.outToScreen("serverTCP - CheckExp 정상 실행."); message CheckExp = new message("CheckExpResponse"); if (playerTools.CheckExp(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("password"))) { scObject data = new scObject("data"); data.addBool("response", true); data.addInt("Exp", playerTools.Exp); CheckExp.addSCObject(data); output.outToScreen("loginScript - CheckExpResponse에 True 값 전달."); } else { scObject data = new scObject("data"); data.addBool("response", false); CheckExp.addSCObject(data); output.outToScreen("loginScript - CheckExpResponse에 False 값 전달."); } sendClientMessage(cSock, CheckExp); break; case "getplantname": //이부분도 수정이 필요하다. 첨에 대전 버튼 누르면 되는데 아니면 안된다. message GetPlantNameMessage = new message("GetPlantNameResponse"); if (true) { string name = ""; char sp = ','; name = playerTools.GetPlantName(incObject.getSCObject(0).getString("account")); string[] spstring = name.Split(sp); scObject data = new scObject("data"); data.addBool("response", true); data.addString("name1", spstring[0]); data.addString("name2", spstring[1]); data.addString("name3", spstring[2]); data.addString("name4", spstring[3]); GetPlantNameMessage.addSCObject(data); sendClientMessage(cSock, GetPlantNameMessage); } /*else * { * output.outToScreen("식물 이름 받아오기 실패"); * scObject data = new scObject("data"); * data.addBool("response", false); * GetPlantNameMessage.addSCObject(data); * sendClientMessage(cSock, GetPlantNameMessage); * }*/ break; case "transferip": message newMessage10 = new message("TransferIPResponse"); if (clientSockets.Contains(cSock)) { output.outToScreen("중복 아이피 또는 Socket 입니다. " + incObject.getSCObject(0).getString("battleip") + cSock); } else { clientSockets.Add(cSock); } if (clientSockets.Count == 2) { clientinfos.Add(clientSockets[0], clientSockets[1]); //KEY VALUE scObject data = new scObject("data"); data.addBool("response", true); newMessage10.addSCObject(data); sendClientMessage(clientSockets[0], newMessage10); sendClientMessage(clientSockets[1], newMessage10); clientSockets.Clear(); } else { scObject data = new scObject("data"); output.outToScreen("매칭 인원이 부족합니다."); data.addBool("response", false); sendClientMessage(clientSockets[0], newMessage10); } break; case "addrank": message addRank = new message("addRankResponse"); if (true) { scObject data = new scObject("data"); data.addBool("response", true); data.addInt("rankpoint", playerTools.addrank(incObject.getSCObject(0).getString("account"))); addRank.addSCObject(data); } else { } sendClientMessage(cSock, addRank); break; case "subtractionrank": message subtractionrank = new message("subtractionRankResponse"); if (true) { scObject data = new scObject("data"); data.addBool("response", true); data.addInt("rankpoint", playerTools.subtractionrank(incObject.getSCObject(0).getString("account"))); subtractionrank.addSCObject(data); } else { } sendClientMessage(cSock, subtractionrank); break; case "sendplantname": if (playerTools.sendplantname(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("plantname"))) { output.outToScreen("sendplantName"); //이제 로그인 스크립트에 저장된 이름 다시 쏴줘야해 } break; case "alldeleteplantname": if (playerTools.AllDeletePlantName(incObject.getSCObject(0).getString("account"))) { output.outToScreen("이름 전부 초기화"); } break; case "deleteplantname": if (playerTools.DeletePlantName(incObject.getSCObject(0).getString("account"), incObject.getSCObject(0).getString("plantname"))) { output.outToScreen("이름 1개 완료"); } break; case "sendcardmessage": //왜 안되는지 모르겠음 message SendCreateMyCard = new message("MyCardResponse"); message SendCreateAICard = new message("SendCreateAICardResponse"); if (clientinfos.ContainsKey(cSock) || clientinfos.ContainsValue(cSock)) { plantname = incObject.getSCObject(0).getString("plantname"); scObject data = new scObject("data"); data.addBool("response", true); data.addString("plantname", plantname); SendCreateMyCard.addSCObject(data); SendCreateAICard.addSCObject(data); if (clientinfos.ContainsKey(cSock)) { clientinfos.TryGetValue(cSock, out value_Value); sendClientMessage(value_Value, SendCreateAICard); sendClientMessage(cSock, SendCreateMyCard); } else if (clientinfos.ContainsValue(cSock)) { value_Key = clientinfos.FirstOrDefault(x => x.Value == cSock).Key; sendClientMessage(value_Key, SendCreateAICard); sendClientMessage(cSock, SendCreateMyCard); } } else { } break; case "senddestroyotherobject": //내 오브젝트 파괴 했다는 메세지 받았을때; { output.outToScreen("??"); message newMessage13 = new message("SendDestroyMyObjectResponse"); scObject data = new scObject("data"); data.addBool("response", true); newMessage13.addSCObject(data); message newMessage14 = new message("SendDestroyAiObjectResponse"); scObject data1 = new scObject("data1"); data1.addBool("response", true); newMessage14.addSCObject(data1); if (clientinfos.ContainsKey(cSock)) { clientinfos.TryGetValue(cSock, out value_Value); sendClientMessage(cSock, newMessage14); sendClientMessage(value_Value, newMessage13); } else if (clientinfos.ContainsValue(cSock)) { value_Key = clientinfos.FirstOrDefault(x => x.Value == cSock).Key; sendClientMessage(cSock, newMessage14); sendClientMessage(value_Key, newMessage13); } output.outToScreen("" + newMessage14); } break; case "senddestroycastle": { output.outToScreen("???"); message newMessage15 = new message("SendDestroyMyCastleResponse"); scObject data = new scObject("data"); data.addBool("response", true); newMessage15.addSCObject(data); message newMessage16 = new message("SendDestroyAiCastleResponse"); scObject data1 = new scObject("data1"); data1.addBool("response", true); newMessage16.addSCObject(data1); message newMessage17 = new message("SendVictoryResponse"); scObject data2 = new scObject("data2"); data2.addBool("response", true); newMessage17.addSCObject(data2); message newMessage18 = new message("SendLoseResponse"); scObject data3 = new scObject("data3"); data3.addBool("response", true); newMessage18.addSCObject(data3); if (clientinfos.ContainsKey(cSock)) { clientinfos.TryGetValue(cSock, out value_Value); sendClientMessage(cSock, newMessage16); sendClientMessage(value_Value, newMessage15); sendClientMessage(cSock, newMessage17); sendClientMessage(value_Value, newMessage18); } else if (clientinfos.ContainsValue(cSock)) { value_Key = clientinfos.FirstOrDefault(x => x.Value == cSock).Key; sendClientMessage(cSock, newMessage16); sendClientMessage(value_Key, newMessage15); sendClientMessage(cSock, newMessage17); sendClientMessage(value_Key, newMessage18); } clientinfos.Remove(cSock); output.outToScreen("" + newMessage15); } break; default: output.outToScreen("The client sent a message: " + incObject.messageText); break; } }