private void UpdateHpItem() { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); if (localHuman != null && _lastLocalHumanHp != localHuman.Hp) { _lastLocalHumanHp = localHuman.Hp; for (int i = 0; i < PlayerBase.MaxHp; i++) { Image heartImage = _heartItems[i].HeartImage; Animator HeartAnimator = _heartItems[i].HeartAnimator; if (i < _lastLocalHumanHp) { // Sprite heartImage.sprite = HeartPinkSprite; //var heartGreyImage = Resources.Load("UI/HUD/Texture/" + "Grey") as Texture2D; //Sprite heartGreySprite = Sprite.Create(heartGreyImage, new Rect(0, 0, heartGreyImage.width, heartGreyImage.height), new Vector2(0.5f, 0.5f)); //heartImage.sprite = heartGreySprite; // AnimatorController if (i == _lastLocalHumanHp - 1) { HeartAnimator.runtimeAnimatorController = HeartGrowAnimatorController; //AnimatorController animatorController = AnimatorController.CreateAnimatorControllerAtPath(AnimationControllerPath + "/" + name + ".controller"); //AnimatorOverrideController overrideController = new AnimatorOverrideController(); //overrideController.runtimeAnimatorController = GetComponent<Animator>().runtimeAnimatorController; //AnimationClip clip = Resources.Load<AnimationClip>("Player/Animations/test"); //overrideController["Nova@yunqiu"] = clip; //GetComponent<Animator>().avatar = Resources.Load<Avatar>("Player/Models/Nova"); //GetComponent<Animator>().runtimeAnimatorController = overrideController; } else { HeartAnimator.runtimeAnimatorController = null; } } else { // Sprite heartImage.sprite = HeartGreySprite; // AnimatorController HeartAnimator.runtimeAnimatorController = null; } } } else if (localHuman == null) { for (int i = 0; i < PlayerBase.MaxHp; i++) { if (_heartItems != null) { Image heartImage = _heartItems[i].HeartImage; heartImage.sprite = HeartGreySprite; } } } }
public void DecHP() { // Hurt self this.Hp--; if (this.Hp <= 0) { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { // make self dead and destroy later MakeDead(); } else { this.Hp = 1; // Dead event sync PlayerEventItem deadEvent = new PlayerEventItem(); deadEvent.cbTeamType = (byte)TeamType; deadEvent.wChairId = (ushort)ChairID; deadEvent.cbAIId = AIId; deadEvent.cbEventKind = (byte)PlayerEventKind.DeadByDecHp; //killer deadEvent.nCustomData0 = (Int32)TeamType; deadEvent.nCustomData1 = (Int32)ChairID; deadEvent.nCustomData2 = (Int32)AIId; GameObjectsManager.GetInstance().PlayerEventList.Add(deadEvent); } } }
// Use this for initialization void Start() { _connectingLabel = GameObject.Find("Connecting"); if (_connectingLabel) { _connectingLabelText = _connectingLabel.GetComponentInChildren <Text>(); } //_joinGameButton = GameObject.Find("JoinGameButton"); //_joinGameButton.active = false; GlobalUserInfo pGlobalUserInfo = GlobalUserInfo.GetInstance(); tagGlobalUserData pGlobalUserData = pGlobalUserInfo.GetGlobalUserData(); //MersenneTwister.MT19937.Seed((ulong)pGlobalUserData.wRandseed); if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { //GameObjectsManager.GetInstance().LoadMap(pGlobalUserData.cbMapIndexRand); GameObjectsManager.GetInstance().LoadMap(pGlobalUserData.cbMapIndexRandForSingleGame); } else if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { GameObjectsManager.GetInstance().LoadMap(pGlobalUserData.cbMapIndexRand); } else { // GameSingleMultiType.MultiGame_Skynet StartConnecting(); } }
public void Fire() { if (CanShoot()) { foreach (var gun in guns) { bulletInstance = GameObjectsManager.GetObject("bullet"); if (bulletInstance == null) { bulletInstance = (GameObject)Instantiate(bullet, gun.position, gun.rotation); } else { bulletInstance.transform.position = gun.position; bulletInstance.transform.rotation = gun.rotation; bulletInstance.gameObject.SetActive(true); } bulletScript = bulletInstance.GetComponent <Bullet>(); bulletScript.damage = damage; bulletScript.affectsScore = affectsScore; bulletInstance = null; } this.audio.PlayOneShot(this.shotSound); Reload(); } }
public void Initialize() { //TileSheet GameObjectsManager.SpriteSheets.Add("Tilesheet_Terrain", new SpriteSheet("Base", ContentEngine.Texture2D("Base", "Tilesheet_Terrain"), "Tilesheet_Terrain", new Point(32))); GameObjectsManager.SpriteSheets.Add("Tilesheet_Entity", new SpriteSheet("Base", ContentEngine.Texture2D("Base", "Tilesheet_Entity"), "Tilesheet_Entity", new Point(16))); GameObjectsManager.SpriteSheets.Add("Tilesheet_Item", new SpriteSheet("Base", ContentEngine.Texture2D("Base", "Tilesheet_Item"), "Tilesheet_Item", new Point(16))); GameObjectsManager.SpriteSheets.Add("Tilesheet_Creatures", new SpriteSheet("Base", ContentEngine.Texture2D("Base", "Tilesheet_Creatures"), "Tilesheet_Creatures", new Point(16))); GameObjectsManager.SpriteSheets.Add("Tilesheet_Water", new SpriteSheet("Base", ContentEngine.Texture2D("Base", "Tilesheet_Water"), "Tilesheet_Water", new Point(32))); //Items GameObjectsManager.AddItem(this, "Stick", new Core.GameObject.Items.Item("Stick", Core.GameObject.ItemType.Crafting, new string[] { "Stick" }, "Tilesheet_Item")); GameObjectsManager.AddItem(this, "Apple", new Core.GameObject.Items.Item("Apple", Core.GameObject.ItemType.Food, new string[] { "AppleRed", "AppleGreen", "AppleYellow" }, "Tilesheet_Item")); //Tiles Core.GameObject.Tiles.Tile Grass = new Core.GameObject.Tiles.Tile("Grass", new string[] { "Grass0", "Grass1", "Grass2", "Grass3" }, "Tilesheet_Terrain", System.Drawing.Color.FromArgb(36, 81, 11)); Grass.SetSouneffect(SoundEffectParser.Parse(this.Name, "dirtfootstep")); GameObjectsManager.AddTile(this, "Grass", Grass); GameObjectsManager.AddTile(this, "FlowerOnGrass", new Core.GameObject.Tiles.Tile("FlowerOnGrass", new string[] { "YellowFlowerGrass", "PurpleFlowerGrass" }, "Tilesheet_Terrain", System.Drawing.Color.FromArgb(36, 81, 11))); GameObjectsManager.AddTile(this, "Sand", new Core.GameObject.Tiles.Tile("Sand", new string[] { "Sand0", "Sand1", "Sand2", "Sand3" }, "Tilesheet_Terrain", System.Drawing.Color.Yellow)); GameObjectsManager.AddTile(this, "Water", new Core.GameObject.Tiles.Tile("Water", new string[] { "Water" }, "Tilesheet_Water", System.Drawing.Color.Blue)); //Entity GameObjectsManager.AddEntity(this, "BigTree", new Core.GameObject.Entities.Entity("BigTree", new string[] { "BigTree0" }, "Tilesheet_Entity", new Vector2(-0.5f, -3f))); GameObjectsManager.AddEntity(this, "PinTree", new Core.GameObject.Entities.Entity("PinTree", new string[] { "PinTree0" }, "Tilesheet_Entity", new Vector2(-0.5f, -3f))); GameObjectsManager.AddEntity(this, "LargeTree", new Core.GameObject.Entities.Entity("LargeTree", new string[] { "LargeTree0" }, "Tilesheet_Entity", new Vector2(-0.5f, -1f))); GameObjectsManager.AddEntity(this, "Rock", new Core.GameObject.Entities.Entity("Rock", new string[] { "Rock0", "Rock1", "Rock2", "Rock3" }, "Tilesheet_Entity", new Vector2(0, 0))); GameObjectsManager.AddEntity(this, "Plant", new Core.GameObject.Entities.Entity("Plant", new string[] { "Plant0", "Plant1", "Plant2", "Plant3", "Plant4", "Plant5" }, "Tilesheet_Entity", new Vector2(0, 0))); GameObjectsManager.AddEntity(this, "Player", new Core.GameObject.Entities.Creature("Player", new Core.IA.Player(0, 1, 2, 3, 4), new string[] { "Player_Move_Up", "Player_Move_Down", "Player_Move_Left", "Player_Move_Right", "Player_Idle" }, "Tilesheet_Creatures", new Vector2(0, 0))); //Biome GameObjectsManager.AddBiome(this, "Plains", new Core.GameObject.Biome("Plains", 0.1, new KeyWeightPair <int>[] { new KeyWeightPair <int>(GameObjectsManager.EntityKey["Base.Rock"], 0.5), new KeyWeightPair <int>(GameObjectsManager.EntityKey["Base.Plant"], 0.5) }, new KeyWeightPair <int>[] { new KeyWeightPair <int>(GameObjectsManager.TileKeys["Base.Grass"], 0.9), new KeyWeightPair <int>(GameObjectsManager.TileKeys["Base.FlowerOnGrass"], 0.1) })); GameObjectsManager.AddBiome(this, "Forest", new Core.GameObject.Biome("Forest", 0.3, new KeyWeightPair <int>[] { new KeyWeightPair <int>(GameObjectsManager.EntityKey["Base.BigTree"], 0.3), new KeyWeightPair <int>(GameObjectsManager.EntityKey["Base.PinTree"], 0.3), new KeyWeightPair <int>(GameObjectsManager.EntityKey["Base.LargeTree"], 0.2), new KeyWeightPair <int>(GameObjectsManager.EntityKey["Base.Rock"], 0.1), new KeyWeightPair <int>(GameObjectsManager.EntityKey["Base.Plant"], 0.1), }, new KeyWeightPair <int>[] { new KeyWeightPair <int>(GameObjectsManager.TileKeys["Base.Grass"], 1) })); GameObjectsManager.AddBiome(this, "Ocean", new Core.GameObject.Biome("Ocean", 0, new KeyWeightPair <int>[] { }, new KeyWeightPair <int>[] { new KeyWeightPair <int>(GameObjectsManager.TileKeys["Base.Water"], 1) })); GameObjectsManager.AddBiome(this, "Desert", new Core.GameObject.Biome("Desert", 0, new KeyWeightPair <int>[] { }, new KeyWeightPair <int>[] { new KeyWeightPair <int>(GameObjectsManager.TileKeys["Base.Sand"], 1) })); }
IEnumerator PlayerJionDealInGaming(byte cbChairID) { while (CServerItem.get() == null) { } yield return(null); if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); if (localHuman != null) { byte Gamestate = CServerItem.get().GetGameStatus(); if (Gamestate == SocketDefines.GAME_STATUS_PLAY) { ControlManager.GetInstance().ControlModelSwitch(ControlManager.CameraControlMode.PlayerViewMode); if (localHuman != null) { if (localHuman.ChairID == cbChairID) { if (localHuman.TeamType == PlayerTeam.PlayerTeamType.HideTeam) { GameSceneUIHandler.ShowLog("躲藏队"); m_Canvas.transform.Find("Hearts").gameObject.SetActive(false); var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); if (kernel != null && !m_hnGameManager.isReconnect) //只有非断线重连加入游戏才能获得隐身效果 { ShowMiddleTips("当前为隐身状态,在隐身效果结束前躲起来!", 3); kernel.SendInventoryConsumption((byte)ControlManager.InventoryItemID.Stealth, 0); //不消耗费用 } if (m_hnGameManager.isReconnect) { Button StealthButton = m_Canvas.transform.Find("Btn/StealthButton").gameObject.GetComponent <Button>(); if (StealthButton != null) { StealthButton.interactable = true; Text timeText = StealthButton.gameObject.transform.Find("TimeLeft").GetComponent <Text>(); if (timeText != null) { timeText.text = ""; } } } } else { GameSceneUIHandler.ShowLog("搜查队"); ShowMiddleTips("您被分配到搜查队,开始寻找躲起来的物品吧!", 3); m_Canvas.transform.Find("Hearts").gameObject.SetActive(true); } } } _showRoomUsersBtn.SetActive(true); GameManager.GetInstance().SetAllHiderVisible(true); } } } }
protected override GamePlayer CreatePlayer(IClientUserItem pIClientUserItem) { lock (HNGameManager.LockObjOfLoadScene) { int nChairID = pIClientUserItem.GetChairID(); if (pIClientUserItem.GetUserID() == UserInfo.getInstance().getUserID()) { m_pLocal.setUserItem(pIClientUserItem); Debug.Log("---------------------CreatePlayer m_pLocal"); //mChen add, for HideSeek Loom.QueueOnMainThread(() => { GameObjectsManager.s_LocalHumanTeamType = PlayerTeam.PlayerTeamType.TaggerTeam; //GameObjectsManager.s_LocalHumanTeamType = PlayerTeam.PlayerTeamType.HideTeam; //测试 HNGameManager.m_iLocalChairID = nChairID; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { PlayerTeam.PlayerTeamType teamType = pIClientUserItem.GetTeamType();// PlayerTeam.PlayerTeamType.TaggerTeam; //PlayerTeam.PlayerTeamType teamType = PlayerTeam.PlayerTeamType.HideTeam; //测试 GameObjectsManager.s_LocalHumanTeamType = teamType; byte cbModelIndex = pIClientUserItem.GetModelIndex(); PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); team.AddAPlayer(false, nChairID, cbModelIndex); } }); return(m_pLocal); } else { GamePlayer pPlayer = getPlayerByChairID(pIClientUserItem.GetChairID()); pPlayer.setUserItem(pIClientUserItem); //mChen add, for HideSeek Loom.QueueOnMainThread(() => { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { PlayerTeam.PlayerTeamType teamType = pIClientUserItem.GetTeamType();//PlayerTeam.PlayerTeamType.TaggerTeam; //PlayerTeam.PlayerTeamType teamType = PlayerTeam.PlayerTeamType.HideTeam; //测试 byte cbModelIndex = pIClientUserItem.GetModelIndex(); PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); team.AddAPlayer(false, nChairID, cbModelIndex); } }); return(pPlayer); } } }
public static GameObjectsManager GetInstance() { if (_instance == null) { _instance = new GameObjectsManager(); } return(_instance); }
private void DebugTools_Load(object sender, EventArgs e) { foreach (string i in GameObjectsManager.GetGameObjList()) { listBox1.Items.Add(i); } tabPage1.VerticalScroll.Value = tabPage1.VerticalScroll.Maximum; }
//private GameObject[] _targetObjects; public override void OnStart() { //if(TargetObject.Value == null) //{ // _targetObjects = GameObject.FindGameObjectsWithTag(TargetTag); //} PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(TargetTeamType); _targetPlayerArray = team.GetPlayers(); }
void Awake() { DontDestroyOnLoad(gameObject); objects.Clear(); if (Manager == null) { Manager = this; } else if (Manager != this) { Destroy(gameObject); } objects.Add("bullet", new Queue <GameObject>()); }
public void ShowWinOrLose() { //判断输赢 Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(PlayerTeam.PlayerTeamType.HideTeam); if (localHuman != null && team != null) { bool HideWin = false; for (int i = 0; i < team.GetPlayerNum(); i++) { PlayerBase playerBase = GameObjectsManager.GetInstance().GetPlayer(PlayerTeam.PlayerTeamType.HideTeam, i); if (playerBase.Hp != 0) { HideWin = true; break; } } if (!HideWin) { if (localHuman.TeamType == PlayerTeam.PlayerTeamType.HideTeam) { ShowJSPopup(0); } else { ShowJSPopup(1); } } else { if (localHuman.TeamType == PlayerTeam.PlayerTeamType.HideTeam) { var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); if (kernel != null) { kernel.SendAwardData(10, 0); //找到一个人奖励 } ShowJSPopup(1); } else { ShowJSPopup(0); } } } }
//用户离开 public virtual void OnEventUserLeave(IClientUserItem pIClientUserItem, bool bLookonUser) { GamePlayer pPlayer = getGamePlayerByUserItem(pIClientUserItem); if (pPlayer != null) { //fix连续断线导致的多个LocalTagger和LocalHide if (pPlayer == m_pSelfPlayer) { //断线时删除Human GameObjectsManager.GetInstance().ClearPlayers(false); } removeGamePlayerToList(pPlayer); DeletePlayer(pPlayer); } }
public void HiderGameScore(int fTime) { if (fTime == 150 || fTime == 100 || fTime == 50) { PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(PlayerTeam.PlayerTeamType.HideTeam); if (team != null) { for (int i = 0; i < team.GetPlayerNum(); i++) { PlayerBase playerBase = GameObjectsManager.GetInstance().GetPlayer(PlayerTeam.PlayerTeamType.HideTeam, i); if (playerBase.Hp != 0) { playerBase.GameScore += 50; } } } } }
public void EnableLocalAI(PlayerTeam.PlayerTeamType teamType, bool bEnable) { PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); if (team == null) { return; } int nPlayerNum = team.GetPlayerNum(); for (int i = 0; i < nPlayerNum; i++) { PlayerBase player = team.GetPlayer(i); if (player == null) { continue; } if (!player.IsAI) { continue; } //Local AI if (player.ChairID == HNGameManager.m_iLocalChairID) { BehaviorDesigner.Runtime.BehaviorTree behaviorTree = player.GetComponent <BehaviorDesigner.Runtime.BehaviorTree>(); if (behaviorTree != null) { behaviorTree.enabled = bEnable; } UnityEngine.AI.NavMeshAgent navMeshAgent = player.GetComponent <UnityEngine.AI.NavMeshAgent>(); if (navMeshAgent != null) { navMeshAgent.enabled = bEnable; } } } }
void Update() { if (TaggerCount != null) { TaggerCount.text = "0"; } if (HideCount != null) { HideCount.text = "0"; } for (PlayerTeam.PlayerTeamType teamType = PlayerTeam.PlayerTeamType.TaggerTeam; teamType < PlayerTeam.PlayerTeamType.MaxTeamNum; teamType++) { PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); if (team == null) { continue; } for (int i = 0; i < team.GetPlayerNum(); i++) { PlayerBase playerBase = GameObjectsManager.GetInstance().GetPlayer(teamType, i); if (playerBase != null && playerBase.Hp != 0) { if (teamType == PlayerTeam.PlayerTeamType.TaggerTeam) { taggerCount++; } else if (teamType == PlayerTeam.PlayerTeamType.HideTeam) { hideCount++; } ShowPlayerTopHeadInfo(playerBase); } } TaggerCount.text = taggerCount.ToString(); HideCount.text = hideCount.ToString(); } taggerCount = 0; hideCount = 0; }
//用户托管 public void OnSubTrustee(byte[] pBuffer, ushort wDataSize) { var typeValue = typeof(CMD_S_Trustee); if (wDataSize != Marshal.SizeOf(typeValue)) { return; } //消息处理 CMD_S_Trustee pTrustee = (CMD_S_Trustee)StructConverterByteArray.BytesToStruct(pBuffer, typeValue); // UI Log HNMJPlayer pPlyer = getPlayerByChairID(pTrustee.wChairID); if (pPlyer == null) { return; } String strNickName = pPlyer.GetNickName(); String[] strName = strNickName.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); if (strName.Length > 0) { Loom.QueueOnMainThread(() => { ChatSystem.GetInstance.ShowChatText("通知", strName[0] + " 离开了房间!"); }); } Loom.QueueOnMainThread(() => { PlayerBase player = GameObjectsManager.GetInstance().GetPlayerByChairID(pTrustee.wChairID); if (player != null) { Debug.LogWarning("------------- " + player.ChairID); GameObjectsManager.GetInstance().RemovePlayerByChairID(player.TeamType, (byte)player.ChairID); //离开房间移除玩家 } }); }
//send and receive heart beat msg thread function public void SendHeartBeatMsg() { CheckConnectVar = true; while (NetCore.bConnected) { Debug.Log("heart beat send"); Loom.QueueOnMainThread(() => { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); Vector3 localPlayerPos = localHuman.transform.position; Vector3 eulerAngles = localHuman.transform.eulerAngles; SprotoType.heartbeat.request req = new heartbeat.request { posX = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.x), 0), posY = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.y), 0), posZ = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.z), 0), angleX = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.x), 0), angleY = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.y), 0), angleZ = BitConverter.ToInt64(BitConverter.GetBytes((double)eulerAngles.z), 0) }; //req.playerPosMsg = new SprotoType.PlayerPosMsg(); //req.playerPosMsg.playerIndex = (int)-1; //req.playerPosMsg.posX = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.x), 0); //req.playerPosMsg.posY = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.y), 0); //req.playerPosMsg.posZ = BitConverter.ToInt64(BitConverter.GetBytes((double)localPlayerPos.z), 0); NetSender.Send <Protocol.heartbeat>(req, (_) => { CheckConnectVar = true; }); }); Thread.Sleep(5000);//5s } Debug.Log("SendHeartBeatMsg thread exit"); }
private void SetupNetReceiverHandler() { NetReceiver.AddHandler <Protocol.handshake>((_) => { Debug.Log("handshake"); SprotoType.handshake.request req = _ as handshake.request; switch (TheUserLoginState) { case UserLoginState.LoginStart: { //Debug.Log("challenge receive "); _challengeStr = Convert.FromBase64String(req.msg); DH64 dhforKey = new DH64(); dhforKey.KeyPair(out _privateKey, out _publicKey); SprotoType.handshake.request clientkey = new handshake.request(); clientkey.msg = Convert.ToBase64String(BitConverter.GetBytes(_publicKey)); clientkey.socketfd = req.socketfd; NetSender.Send <Protocol.handshake>(clientkey); Debug.Log("challengeStr" + _challengeStr + " ori " + req.msg + " fd " + clientkey.socketfd); TheUserLoginState = UserLoginState.LoginPublicServerKey; } break; case UserLoginState.LoginPublicServerKey: { //string serverKey = System.Text.Encoding.Default.GetString(Convert.FromBase64String(req.msg)); byte[] ServerKey = Convert.FromBase64String(req.msg); ulong serverKey = BitConverter.ToUInt64(ServerKey, 0); _secretKey = DH64.Secret(_privateKey, serverKey); SprotoType.handshake.request challengeMsg = new handshake.request(); challengeMsg.msg = Convert.ToBase64String( BitConverter.GetBytes( HMac64.hmac( BitConverter.ToUInt64(_challengeStr, 0), _secretKey))); challengeMsg.socketfd = req.socketfd; NetSender.Send <Protocol.handshake>(challengeMsg); TheUserLoginState = UserLoginState.LoginCheckSecret; } break; case UserLoginState.LoginCheckSecret: { if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeSuccess)) == req.msg) { if (UserName != string.Empty) { Debug.Log("login " + UserName); string token = string.Format("{0}:{1}", Convert.ToBase64String(Encoding.UTF8.GetBytes(UserName)), Convert.ToBase64String(Encoding.UTF8.GetBytes(PassWord))); SprotoType.handshake.request tokenMsg = new handshake.request { msg = DesCrypt.desencode(_secretKey, token), socketfd = req.socketfd }; NetSender.Send <Protocol.handshake>(tokenMsg); TheUserLoginState = UserLoginState.LoginCheckTokenResult; } else { Debug.Log("register"); DisplayName = RandomName.GetRandomName(); string token = Convert.ToBase64String(Encoding.UTF8.GetBytes(DisplayName)); SprotoType.handshake.request tokenMsg = new handshake.request { msg = DesCrypt.desencode(_secretKey, token), socketfd = req.socketfd }; NetSender.Send <Protocol.handshake>(tokenMsg); TheUserLoginState = UserLoginState.LoginRegistResult; } } else if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeFailed)) == req.msg) { Debug.Log("sercet incorrect!"); //error handle TheUserLoginState = UserLoginState.LoginFailed; } } break; case UserLoginState.LoginRegistResult: { var msg = Encoding.UTF8.GetString(Convert.FromBase64String(req.msg)); var msgArray = msg.Split(':'); UserName = Encoding.UTF8.GetString(Convert.FromBase64String(msgArray[0])); PassWord = Encoding.UTF8.GetString(Convert.FromBase64String(msgArray[1])); Loom.QueueOnMainThread(() => { //save registed info PlayerPrefs.SetString("username", UserName); //GameManager.NetWorkClient.UserName = String.Empty; PlayerPrefs.SetString("password", PassWord); PlayerPrefs.SetString("displayname", DisplayName); Debug.Log("saving name " + UserName + " : " + PassWord); PlayerPrefs.Save(); }); Debug.Log("name " + UserName + " : " + PassWord); //Thread.Sleep(5); TheUserLoginState = UserLoginState.LoginSuccess; } break; case UserLoginState.LoginCheckTokenResult: case UserLoginState.LoginSuccess: { if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeSuccess)) == req.msg) { //Thread.Sleep(5); Debug.Log("token right"); TheUserLoginState = UserLoginState.LoginSuccess; // mChen //if(MultiGameState == GameState.Game_NullState) //{ // FindMatch(); //} } else if (Convert.ToBase64String(Encoding.UTF8.GetBytes(challengeFailed)) == req.msg) { //error handle TheUserLoginState = UserLoginState.LoginFailed; } } break; } //NetSender.Send<Protocol.handshake>(req); //Debug.Log(TheUserLoginState.ToString()); return(null); }); NetReceiver.AddHandler <Protocol.matchMsg>((_) => { SprotoType.matchMsg.request req = _ as matchMsg.request; switch (req.matchMsgType) { case (Int64)MatchMsgType.Match_PlayerJoinedRoom: int playerTeamType = Convert.ToInt32(req.matchInfo); TheUserMatchState = UserMatchState.JoinedRoom; Debug.Log("NetReceiver: matchMsg: MatchMsgType.Match_PlayerJoinRoom: playerTeamType=" + playerTeamType); break; case (Int64)MatchMsgType.Match_CountDownTime: float countDowmTime = Convert.ToSingle(req.matchInfo) / 100; Debug.Log("NetReceiver: matchMsg: MatchMsgType.Match_CountDownTime =" + countDowmTime); // UI Loom.QueueOnMainThread(() => { UIManager.GetInstance().ShowMatchStartCountDown(countDowmTime); }); break; case (Int64)MatchMsgType.Match_TryToJoinMatch: int result = Convert.ToInt32(req.matchInfo); Debug.Log("NetReceiver: matchMsg: MatchMsgType.Match_TryToJoinMatch: result=" + result); MultiGameState = GameState.Game_Match; if (result == 0) { TheUserMatchState = UserMatchState.WaitToJoinNextMatch; Loom.QueueOnMainThread(() => { UIManager.GetInstance().ShowWaitToJoinNextMatchLabel(); }); } else if (result == 1) { TheUserMatchState = UserMatchState.PlayingMatch; Loom.QueueOnMainThread(() => { UIManager.GetInstance().HideWaitToJoinNextMatchLabel(); }); } else { Debug.Log("error TryToJoinMatch result from Server" + result); throw new Exception("error TryToJoinMatch result from Server"); } break; //case (Int64)MatchMsgType.Match_CancelMatching: // if (QuitMatchingMsg != null) // { // QuitMatchingMsg(this, EventArgs.Empty); // } // break; default: Debug.Log("error match type" + req.matchMsgType); throw new Exception("error msg type"); } return(null); }); NetReceiver.AddHandler <Protocol.usersInfoMsg>((_) => { if (MultiGameState == GameState.Game_NullState) { return(null); } Debug.Log("get usersInfoMsg"); SprotoType.usersInfoMsg.request req = _ as SprotoType.usersInfoMsg.request; GameObjectsManager.s_LocalPlayerIndexInGlobal = (int)req.curUserGlobalIndex; //Debug.Log("get player index in global: " + GameObjectsManager.s_LocalPlayerIndexInGlobal); //Create players Loom.QueueOnMainThread(() => { AllPlayers.Clear(); GameObjectsManager.GetInstance().ClearPlayers(); Debug.Log("received usersInfoMsg:"); foreach (SprotoType.UserInfo serverPlayerinfo in req.userArray) { PlayerTeam.PlayerTeamType teamType = (PlayerTeam.PlayerTeamType)serverPlayerinfo.playerTeamType; PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); int userState = (int)serverPlayerinfo.userState; Debug.Log(" UserIndexInGlobal=" + serverPlayerinfo.playerIndex + " UserName="******" userState=" + userState + " TeamType=" + teamType); if (serverPlayerinfo.playerIndex == req.curUserGlobalIndex) { // is local player if (userState == (int)UserMatchState.PlayingMatch) { GameObjectsManager.s_LocalHumanTeamType = teamType; } } int playerIndexInTeam = -1; if (userState == (int)UserMatchState.PlayingMatch) { // create a new player playerIndexInTeam = team.AddAPlayer(false); } // set AllPlayers AllPlayers.Add(new MultiPlayerInfo { PlayIndexInGlobal = serverPlayerinfo.playerIndex, PlayerName = serverPlayerinfo.username, SkinId = 0, PlayerId = 1, ThePlayerTeamType = teamType, PlayerIndexInTeam = playerIndexInTeam }); } }); //TheUserMatchState = UserMatchState.AllPlayersJoinedRoom; return(null); }); NetReceiver.AddHandler <Protocol.waitforstart>((_) => { Debug.Log("Second half start!!"); var res = _ as SprotoType.waitforstart.request; //mChen //switch (GameManager.GetInstance().TheGamePrePeriod) //{ // case GamePeriod.Opening: // break; // case GamePeriod.FirstHalf: // break; // case GamePeriod.Halftime: // break; // case GamePeriod.CutsceneAfterScoredOr24SecondsViolation: // break; // case GamePeriod.WairForGameToContinue: // break; // case GamePeriod.SecondHalf: // GameManager.GetInstance().HalfTimeReadyFrame = res.readyFrame; // break; // case GamePeriod.Ending: // break; // default: // throw new ArgumentOutOfRangeException(); //} return(null); }); NetReceiver.AddHandler <Protocol.gameTick>((_) => { //Debug.Log("response called"); if (false)//mChen if (GameManager.TheGameMode > GameMode.MultiGame_3v3) { //when single mode, do not handle this server tick return(null); } if (MultiGameState == GameState.Game_Match) { MultiGameState = GameState.Game_Running; Loom.QueueOnMainThread(() => { UIManager.GetInstance().HideMatchStartCountDown(); }); //mChen _sendHeartBeatThread = new Thread(SendHeartBeatMsg) { IsBackground = true }; //防止后台现成。相反需要后台线程就设为false _sendHeartBeatThread.Start(); while (_sendHeartBeatThread.IsAlive == false) { } } SprotoType.gameTick.request res = _ as gameTick.request; { // bool bOnlyFrameInfo = true; if (res.HasButtonMsg) { //mChen //foreach (var btnMsg in res.buttonMsg) //{ // ButtonInfo msg = new ButtonInfo // { // TeamType = // (PlayerTeamType)((btnMsg.playerIndex) / GameManager.TeamPlayerNum), // PlayerIndexInTeam = (btnMsg.playerIndex) % GameManager.TeamPlayerNum, // FrameNum = res.frame, // Action = (ButtonAction)btnMsg.btnAction, // Type = (ButtonType)btnMsg.btnType // }; // if (btnMsg.HasBtnValueX) // { // msg.Value.x = (float)BitConverter.ToDouble(BitConverter.GetBytes(btnMsg.btnValueX), 0); // msg.Value.y = (float)BitConverter.ToDouble(BitConverter.GetBytes(btnMsg.btnValueY), 0); ; // } // ControlManager.GetInstance().AddControlInfo(msg); // //Debug.Log("Button msg"); //} // bOnlyFrameInfo = false; } //_controllerMsg.Clear(); if (res.HasControlMsg) { //Debug.Log("controller called"); //List < ControlMsg > tempList = new List<ControlMsg>(); foreach (var resControl in res.controlMsg) { //mChen //DPadInfo msg = new DPadInfo //{ // FrameNum = res.frame, // TeamType = (PlayerTeamType)(resControl.playerIndex / GameManager.TeamPlayerNum), // PlayerIndexInTeam = resControl.playerIndex % GameManager.TeamPlayerNum, // //H = Convert.ToSingle(resControl.x), // //V = Convert.ToSingle(resControl.y) // H = (float)BitConverter.ToDouble(BitConverter.GetBytes(resControl.x), 0), // V = (float)BitConverter.ToDouble(BitConverter.GetBytes(resControl.y), 0) //}; //ControlManager.GetInstance().AddControlInfo(msg); #if false if (ControlManager.GetInstance().GameFrameNum % 150 == 1) { GameManager.GetInstance().InfoStr += string.Format("\n dpad info {0} {1} at frame {2}", msg.H, msg.V, ControlManager.GetInstance().GameFrameNum); } #endif // Debug.LogFormat("dpad msg frame {0} : h {1} v {2} ", res.frame, msg.H, msg.V); } // bOnlyFrameInfo = false; } if (res.HasPlayersGamePlayMsg) { Loom.QueueOnMainThread(() => { foreach (var playerGamePlayMsg in res.playersGamePlayMsg) { int playerIndex = (int)playerGamePlayMsg.playerIndex; float posX = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.posX), 0); float posY = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.posY), 0); float posZ = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.posZ), 0); float angleX = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.angleX), 0); float angleY = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.angleY), 0); float angleZ = (float)BitConverter.ToDouble(BitConverter.GetBytes(playerGamePlayMsg.angleZ), 0); //Debug.Log("playerInfoMsg:" + playerGamePlayMsg.playerIndex + " pos:" + posX + posY + posZ); if (playerIndex == GameObjectsManager.s_LocalPlayerIndexInGlobal) { } else { PlayerTeam.PlayerTeamType teamType = AllPlayers[playerIndex].ThePlayerTeamType; int playerIndexInTeam = AllPlayers[playerIndex].PlayerIndexInTeam; PlayerBase player = GameObjectsManager.GetInstance().GetPlayer(teamType, playerIndexInTeam); if (player != null) { player.transform.position = new Vector3(posX, posY, posZ); player.transform.eulerAngles = new Vector3(angleX, angleY, angleZ); } } } }); } //添加一般帧信息 //if (bOnlyFrameInfo) { //mChen ControlManager.GetInstance().AddControlInfo(res.frame); } } return(null); }); NetReceiver.AddHandler <Protocol.restoreStates>((_) => { var req = _ as SprotoType.restoreStates.request; TheUserMatchState = (UserMatchState)req.serverState; Debug.Log("resotre user state now " + TheUserMatchState.ToString()); var infoArray = req.stateInfo.Split(':'); switch (req.serverState) { case (int)UserMatchState.FindRoom: ParseFindMatchMsg(infoArray); TheUserMatchState = UserMatchState.FindRoom; //mChen Loom.QueueOnMainThread(GameUIManager.GetInstance().UIChangeToMatching); //GameUIManager.GetInstance().UIChangeToMatching();//go to matching ui break; } return(null); }); }
void Start() { //mChen add, try to fix返回大厅后,有小概率HideTeam会剩余一个没清除 GameObjectsManager.GetInstance().ClearPlayers(); m_fDeltaTimeAfterLastClick = 0f; Debug.Log("startcj"); Canvas = GameObject.Find("Canvas"); DiamondNum = Canvas.transform.Find("Diamond/DiamondCount").GetComponent <Text>(); GlodNum = Canvas.transform.Find("Glod/GlodCount").GetComponent <Text>(); StoreDiamonNum = Canvas.transform.Find("Window/StoreWindow/Diamond/DiamondCount").GetComponent <Text>(); StoreGlodNum = Canvas.transform.Find("Window/StoreWindow/Glod/GlodCount").GetComponent <Text>(); ExpNum = Canvas.transform.Find("Experience/ExperienceFill").GetComponent <Image>(); ExpNumTxt = Canvas.transform.Find("Experience/Level").GetComponent <Text>(); Name = Canvas.transform.Find("User/Name").GetComponent <Text>(); Name.text = GlobalUserInfo.getNickName(); ID = Canvas.transform.Find("User/ID").GetComponent <Text>(); ID.text = GlobalUserInfo.getUserID().ToString(); RoomIdValue = 0; hnGameManager = GameObject.FindObjectOfType <HNGameManager>(); //GameHall场景隐藏GameLogoUI hnGameManager.gameplayUIETC.SetActive(false); hnGameManager.gamePlayUI_HT.SetActive(false); HeadImage = Canvas.transform.Find("User/UserMask/UserImage").GetComponent <Image>(); if (hnGameManager != null) { //Sound Slider musicSlider = transform.Find("SetupWindow/Music/Slider").GetComponent <Slider>(); if (musicSlider != null) { musicSlider.value = hnGameManager.BackgroundAudioSource.volume; } Slider soundSlider = transform.Find("SetupWindow/Sound/Slider").GetComponent <Slider>(); if (soundSlider != null) { soundSlider.value = hnGameManager.GlobalEffectAudioSource.volume; } //Rule hnGameManager.m_baseScore = 1; hnGameManager.m_cbPlayCoutIdex = 0; hnGameManager.m_cbPlayCostTypeIdex = 1; //mChen add, for HideSeek hnGameManager.m_cbGameEndReason = HNMJ_Defines.GER_NOT_END; } //控制方案切换 ControlCase = Canvas.transform.Find("Window/SetupWindow/ControlCase").GetComponent <Button>(); ControlCase.gameObject.GetComponent <Image>().sprite = Resources.Load("UI/EasyTouchCase/" + HNGameManager.ControlCase, typeof(Sprite)) as Sprite; ControlCase.onClick.RemoveAllListeners(); ControlCase.onClick.AddListener(() => { HNGameManager.ControlCase++; HNGameManager.ControlCase %= 4; ControlCase.gameObject.GetComponent <Image>().sprite = Resources.Load("UI/EasyTouchCase/" + HNGameManager.ControlCase, typeof(Sprite)) as Sprite; }); //ControlType.Add(Canvas.transform.Find("Window/SetupWindow/Joystick/ChangeWindow/BackImage/Joystick1").gameObject.GetComponent<Toggle>()); //ControlType.Add(Canvas.transform.Find("Window/SetupWindow/Joystick/ChangeWindow/BackImage/Joystick2").gameObject.GetComponent<Toggle>()); UpdateControlType(); UserInfo.getInstance().reqAccountInfo(); }
void SelfDestruct() { GameObjectsManager.RetireObject("bullet", gameObject); gameObject.SetActive(false); }
public void OnSubInventoryConsumptionEvent(byte[] pBuffer, ushort wDataSize) { Debug.LogWarning("------------OnSubInventoryConsumptionEvent"); var typeValue = typeof(CMD_S_InventoryConsumptionEvent); if (wDataSize != Marshal.SizeOf(typeValue)) { Debug.LogError("数据长度不符合"); return; } CMD_S_InventoryConsumptionEvent InfoResult = (CMD_S_InventoryConsumptionEvent)StructConverterByteArray.BytesToStruct(pBuffer, typeValue); if (InfoResult.cbChairID != HNGameManager.m_iLocalChairID) //接收其他人的道具使用信息 { PlayerBase player = GameObjectsManager.GetInstance().GetPlayerByChairID(InfoResult.cbChairID); if (player != null) { switch ((ControlManager.InventoryItemID)InfoResult.cbItemID) { case ControlManager.InventoryItemID.ChangeModel: //变身 Loom.QueueOnMainThread(() => { ControlManager.GetInstance().ChangeModel(player.gameObject, InfoResult.dwModelIndex); }); break; case ControlManager.InventoryItemID.Stealth: //隐身 { if (InfoResult.cbStealthStatus == 0) { Loom.QueueOnMainThread(() => { ControlManager.GetInstance().Stealth(player.gameObject, true); }); } else if (InfoResult.cbStealthStatus == 1) { Loom.QueueOnMainThread(() => { ControlManager.GetInstance().Stealth(player.gameObject, false); }); } } break; case ControlManager.InventoryItemID.Resurrection: //复活 Loom.QueueOnMainThread(() => { ControlManager.GetInstance().Resurrection(player.gameObject); }); break; } } } else //接收自己的道具使用信息 { //使用道具 switch ((ControlManager.InventoryItemID)InfoResult.cbItemID) { case ControlManager.InventoryItemID.ChangeModel: //变身 Loom.QueueOnMainThread(() => { ControlManager.GetInstance().ChangeModel(InfoResult.dwModelIndex); }); break; case ControlManager.InventoryItemID.Stealth: //隐身 { if (InfoResult.cbStealthStatus == 0) { Loom.QueueOnMainThread(() => { ControlManager.GetInstance().Stealth(true); ControlManager.GetInstance().StealthTime(255); }); } else if (InfoResult.cbStealthStatus == 1) { Loom.QueueOnMainThread(() => { ControlManager.GetInstance().Stealth(false); ControlManager.GetInstance().StealthTime(InfoResult.cbStealthTimeLeft); }); } } break; case ControlManager.InventoryItemID.Resurrection: //复活 Loom.QueueOnMainThread(() => { ControlManager.GetInstance().Resurrection(); }); break; } } }
//检测道具使用 private void CheckInventoryUse() { Human localHuman = null; if (GameObjectsManager.GetInstance() != null) { localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); } if (localHuman != null && localHuman.TeamType == PlayerTeam.PlayerTeamType.TaggerTeam) { if (ListInventory.Count != 0 && ListInventory != null) { for (int i = 0; i < ListInventory.Count; i++) { if (ListInventory[i].obj != null && !ListInventory[i].bUsed) { String[] str = ListInventory[i].obj.name.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries); switch (str[1]) { case "Search": if (Math.Abs(localHuman.gameObject.transform.position.x - ListInventory[i].obj.transform.position.x) < 1 && Math.Abs(localHuman.gameObject.transform.position.z - ListInventory[i].obj.transform.position.z) < 1 && !ListInventory[i].bTaked) { PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(PlayerTeam.PlayerTeamType.HideTeam); PlayerBase playerBase = null; if (team.GetPlayerNum() != 0 && localHuman.Hp != 0) { int count = 0; while (true) { int index = (int)(MersenneTwister.MT19937.Int63() % team.GetPlayerNum()); playerBase = GameObjectsManager.GetInstance().GetPlayer(PlayerTeam.PlayerTeamType.HideTeam, index); if (playerBase.Hp > 0) { break; } if (count > 50) //防止没有存活导致死循环 { playerBase = null; break; } count++; } if (playerBase != null) { InventoryObjItem temp = ListInventory[i]; temp.bTaked = true; ListInventory[i] = temp; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { InventoryRemove(i); UIManager.GetInstance().ShowMiddleTips("有一个玩家变成了" + playerBase.gameObject.name); } if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { // GetInventory event sync PlayerEventItem getInventoryEvent = new PlayerEventItem(); getInventoryEvent.cbTeamType = (byte)GameObjectsManager.s_LocalHumanTeamType; getInventoryEvent.wChairId = (ushort)HNGameManager.m_iLocalChairID; getInventoryEvent.cbAIId = HNMJ_Defines.INVALID_AI_ID; getInventoryEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.GetInventory; getInventoryEvent.nCustomData0 = (Int32)ListInventory[i].id; getInventoryEvent.nCustomData1 = (Int32)InventoryType.Inventory_Search; GameObjectsManager.GetInstance().PlayerEventList.Add(getInventoryEvent); } } } } break; case "Boom": if (Math.Abs(localHuman.gameObject.transform.position.x - ListInventory[i].obj.transform.position.x) < 1 && Math.Abs(localHuman.gameObject.transform.position.z - ListInventory[i].obj.transform.position.z) < 1 && !ListInventory[i].bTaked) { if (!HaveBoom && localHuman.Hp != 0) { InventoryObjItem temp = ListInventory[i]; temp.bTaked = true; ListInventory[i] = temp; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { HaveBoom = true; InventoryRemove(i); //GameSceneUIHandler.ShowLog("你拾取了炸弹!!!"); UIManager.GetInstance().ShowMiddleTips("你拾取了炸弹!!!"); ControlManager.GetInstance().BoomButton.gameObject.SetActive(true); } if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { // GetInventory event sync PlayerEventItem getInventoryEvent = new PlayerEventItem(); getInventoryEvent.cbTeamType = (byte)GameObjectsManager.s_LocalHumanTeamType; getInventoryEvent.wChairId = (ushort)HNGameManager.m_iLocalChairID; getInventoryEvent.cbAIId = HNMJ_Defines.INVALID_AI_ID; getInventoryEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.GetInventory; getInventoryEvent.nCustomData0 = (Int32)ListInventory[i].id; getInventoryEvent.nCustomData1 = (Int32)InventoryType.Inventory_Boom; GameObjectsManager.GetInstance().PlayerEventList.Add(getInventoryEvent); } } } break; case "Blood": if (Math.Abs(localHuman.gameObject.transform.position.x - ListInventory[i].obj.transform.position.x) < 1 && Math.Abs(localHuman.gameObject.transform.position.z - ListInventory[i].obj.transform.position.z) < 1 && !ListInventory[i].bTaked) { if (localHuman.Hp < PlayerBase.MaxHp && localHuman.Hp != 0) { InventoryObjItem temp = ListInventory[i]; temp.bTaked = true; ListInventory[i] = temp; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { localHuman.Hp++; //生命增加 InventoryRemove(i); UIManager.GetInstance().ShowMiddleTips("你拾取了生命道具!!!"); } if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { // GetInventory event sync PlayerEventItem getInventoryEvent = new PlayerEventItem(); getInventoryEvent.cbTeamType = (byte)GameObjectsManager.s_LocalHumanTeamType; getInventoryEvent.wChairId = (ushort)HNGameManager.m_iLocalChairID; getInventoryEvent.cbAIId = HNMJ_Defines.INVALID_AI_ID; getInventoryEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.GetInventory; getInventoryEvent.nCustomData0 = (Int32)ListInventory[i].id; getInventoryEvent.nCustomData1 = (Int32)InventoryType.Inventory_Blood; GameObjectsManager.GetInstance().PlayerEventList.Add(getInventoryEvent); // AddHp event PlayerEventItem addHpEvent = new PlayerEventItem(); addHpEvent.cbTeamType = (byte)GameObjectsManager.s_LocalHumanTeamType; addHpEvent.wChairId = (ushort)HNGameManager.m_iLocalChairID; addHpEvent.cbAIId = HNMJ_Defines.INVALID_AI_ID; addHpEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.AddHp; GameObjectsManager.GetInstance().PlayerEventList.Add(addHpEvent); } } } break; case "Speed": if (Math.Abs(localHuman.gameObject.transform.position.x - ListInventory[i].obj.transform.position.x) < 1 && Math.Abs(localHuman.gameObject.transform.position.z - ListInventory[i].obj.transform.position.z) < 1 && !ListInventory[i].bTaked) { if (ControlManager.GetInstance()._etcJoystickL.axisX.speed == ControlManager.s_speed && localHuman.Hp != 0 && localHuman.m_isGrounded) { InventoryObjItem temp = ListInventory[i]; temp.bTaked = true; ListInventory[i] = temp; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { InventoryRemove(i); UIManager.GetInstance().ShowMiddleTips("你拾取了加速道具!!!"); ControlManager.GetInstance().SpeedChange(ControlManager.s_speed * 3); StartCoroutine(InventorySpeed()); } if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { // GetInventory event sync PlayerEventItem getInventoryEvent = new PlayerEventItem(); getInventoryEvent.cbTeamType = (byte)GameObjectsManager.s_LocalHumanTeamType; getInventoryEvent.wChairId = (ushort)HNGameManager.m_iLocalChairID; getInventoryEvent.cbAIId = HNMJ_Defines.INVALID_AI_ID; getInventoryEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.GetInventory; getInventoryEvent.nCustomData0 = (Int32)ListInventory[i].id; getInventoryEvent.nCustomData1 = (Int32)InventoryType.Inventory_Speed; GameObjectsManager.GetInstance().PlayerEventList.Add(getInventoryEvent); } } } break; case "Key": if (Math.Abs(localHuman.gameObject.transform.position.x - ListInventory[i].obj.transform.position.x) < 1 && Math.Abs(localHuman.gameObject.transform.position.z - ListInventory[i].obj.transform.position.z) < 1 && !ListInventory[i].bTaked) { //Debug.Log("--------Key1"); if (localHuman.transform.FindChild("Inventory_Arrow") == null && localHuman.Hp != 0) { PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(PlayerTeam.PlayerTeamType.HideTeam); PlayerBase playerBase = null; if (team.GetPlayerNum() != 0) { int count = 0; while (true) { int index = (int)(MersenneTwister.MT19937.Int63() % team.GetPlayerNum()); playerBase = GameObjectsManager.GetInstance().GetPlayer(PlayerTeam.PlayerTeamType.HideTeam, index); if (playerBase.Hp > 0) { break; } if (count > 50) //防止没有存活导致死循环 { playerBase = null; localHuman = null; break; } count++; } if (playerBase != null && localHuman != null) { if (DirectionKey.GetInstance != null) { InventoryObjItem temp = ListInventory[i]; temp.bTaked = true; ListInventory[i] = temp; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { DirectionKey.GetInstance.Deal(localHuman.gameObject, playerBase.gameObject); InventoryRemove(i); UIManager.GetInstance().ShowMiddleTips("你拾取了钥匙道具!!!"); } if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { // GetInventory event sync PlayerEventItem getInventoryEvent = new PlayerEventItem(); getInventoryEvent.cbTeamType = (byte)GameObjectsManager.s_LocalHumanTeamType; getInventoryEvent.wChairId = (ushort)HNGameManager.m_iLocalChairID; getInventoryEvent.cbAIId = HNMJ_Defines.INVALID_AI_ID; getInventoryEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.GetInventory; getInventoryEvent.nCustomData0 = (Int32)ListInventory[i].id; getInventoryEvent.nCustomData1 = (Int32)InventoryType.Inventory_Key; GameObjectsManager.GetInstance().PlayerEventList.Add(getInventoryEvent); } } } } } } break; } } } } } }
public void PickupObject(GameObject objToPick, Vector3 pickupPos) { if (gameObject.GetComponent <PlayerBase>().TeamType == PlayerTeam.PlayerTeamType.HideTeam) //躲藏的玩家无法执行找操作 { return; } else { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { byte Gamestate = CServerItem.get().GetGameStatus(); if (Gamestate != SocketDefines.GAME_STATUS_PLAY) { return; } } else if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { if (GameManager.s_singleGameStatus != SocketDefines.GAME_STATUS_PLAY) { return; } } } if (objToPick == null || this.Hp <= 0) { return; } if (this.IsAI) { //AI没有用射线检测,也就没有距离判断,所以这里要加入 Vector3 distToPick = objToPick.transform.position - this.transform.position; if (distToPick.magnitude > ControlManager.s_MaxTouchCheckDistance) { Debug.LogError("-----------距离过远!!!!!" + distToPick.magnitude + " " + objToPick.transform.position + " " + this.transform.position); //if (objToPick.tag == "Hide" || objToPick.tag == "NormalFurniture") //objToPick.name { UIManager.GetInstance().ShowPickupTooFarText(); return; } } } if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { // Pick event sync PlayerEventItem pickEvent = new PlayerEventItem(); pickEvent.cbTeamType = (byte)TeamType; pickEvent.wChairId = (ushort)ChairID; pickEvent.cbAIId = (byte)AIId; pickEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.Pick; GameObjectsManager.GetInstance().PlayerEventList.Add(pickEvent); } else { if (IsAI || !ControlManager.isPerson_1st) //只有第三人称才有拾取动画 { if (IsLocalHuman()) { EnableModelDisplay(); } PlayPickupAnim(); //if (_avatarAnimator != null) //{ // _avatarAnimator.SetBool("Pickup_b", true); //} } } PlayerBase pickedPlayer = null; string strObjToPickTag = null; if (this.IsAI) { //this是AI时,传的objToPick是根节点(PlayerBase都在根节点) pickedPlayer = objToPick.GetComponent <PlayerBase>(); if (pickedPlayer == null) { //objToPick是场景中的物体,不是躲藏者 strObjToPickTag = objToPick.tag; } else { Transform model = pickedPlayer.transform.FindChild("Model"); if (model != null) { strObjToPickTag = model.tag; //tag在model节点 } else { Debug.LogError("PickupObject IsAI: model==null"); } } } else { //this不是AI时,objToPick如果是躲藏者,传的是Model子节点,否则传的也是根节点 pickedPlayer = objToPick.transform.parent.GetComponent <PlayerBase>(); if (pickedPlayer == null) { //objToPick是场景中的物体,不是躲藏者 strObjToPickTag = objToPick.tag; } else { strObjToPickTag = objToPick.tag; } } if (strObjToPickTag == "Hide" || (strObjToPickTag == "LocalHuman" && pickedPlayer != null && pickedPlayer.TeamType == PlayerTeam.PlayerTeamType.HideTeam)) //objToPick.name { ObjNamePicked = pickedPlayer.gameObject.name; Debug.Log(gameObject.name + " touched Hide: " + ObjNamePicked); if (IsLocalHuman()) { Debug.Log("I'm touched Hide: " + ObjNamePicked); } // Check if objToPick is alive if (pickedPlayer != null) { if (pickedPlayer.IsDead()) { Debug.Log("It was already dead!"); } else { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { if (IsAI && pickedPlayer.m_isStealth == 1) //AI警察不点隐身的躲藏者 { return; } //击杀信息 if (gameObject.GetComponent <PlayerBase>().IsAI) { //String[] str = gameObject.name.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); //String[] pickedStr = pickedPlayer.gameObject.name.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); UIManager.GetInstance().ShowMiddleTips(gameObject.name + " 找到了: " + pickedPlayer.gameObject.name); } else { String[] str = GlobalUserInfo.getNickName().Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); //String[] pickedStr = pickedPlayer.gameObject.name.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); UIManager.GetInstance().ShowMiddleTips(str[0] + " 找到了: " + pickedPlayer.gameObject.name); } // Heal self AddHP(); if (m_hnGameManager != null && IsLocalHuman()) //本地玩家找到躲藏者提示 { m_hnGameManager.PlaySoundEffect(-1, (int)AudioManager.Sound_Effect_Defines.SOUND_HIDE_BEFOUNDED); } // make pickedPlayer dead and destroy later pickedPlayer.MakeDead(); //if (!pickedPlayer.IsAI) //{ // PlayerChairIDOfPickedDead = pickedPlayer.ChairID; //} } else { //Debug.LogWarning("+++++++++++++++++ " + pickedPlayer.m_isStealth + " " + IsAI); if (pickedPlayer.m_isStealth == 1 && IsAI) //AI警察不点隐身的躲藏者 { //Debug.LogWarning("----------玩家隐身中"); return; } // Dead event sync PlayerEventItem deadEvent = new PlayerEventItem(); deadEvent.cbTeamType = (byte)pickedPlayer.TeamType; deadEvent.wChairId = (ushort)pickedPlayer.ChairID; deadEvent.cbAIId = pickedPlayer.AIId; deadEvent.cbEventKind = (byte)PlayerEventKind.DeadByPicked; //killer deadEvent.nCustomData0 = (Int32)this.TeamType; deadEvent.nCustomData1 = (Int32)this.ChairID; deadEvent.nCustomData2 = (Int32)this.AIId; GameObjectsManager.GetInstance().PlayerEventList.Add(deadEvent); } //警察找到躲藏者加分 GameScore += 50; } } } else if (strObjToPickTag == "NormalFurniture") { ObjNamePicked = objToPick.transform.parent.name; Debug.Log("touched normal furniture: " + ObjNamePicked); UIManager.GetInstance().ShowPickupWrongUI(pickupPos); //hit.point if (m_hnGameManager != null && IsLocalHuman()) //本地玩家点击错误物体提示 { m_hnGameManager.PlaySoundEffect(-1, (int)AudioManager.Sound_Effect_Defines.SOUND_EFFECT_PickObj); } if (IsLocalHuman()) { UIManager.GetInstance().ShowMiddleTips("该物品不是玩家!"); } if (UIManager.TimeLeft <= 45) //剩余时间小于45秒时,警察无敌 { return; } // Hurt self if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { DecHP(); } else { PlayerEventItem decHpEvent = new PlayerEventItem(); decHpEvent.cbTeamType = (byte)this.TeamType; decHpEvent.wChairId = (ushort)this.ChairID; decHpEvent.cbAIId = (byte)this.AIId; decHpEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.DecHp; GameObjectsManager.GetInstance().PlayerEventList.Add(decHpEvent); } } else if (strObjToPickTag == "Tagger") { ObjNamePicked = pickedPlayer.gameObject.name; Debug.Log("touched Tagger: " + ObjNamePicked); } else { Debug.LogError("PickupObject: incorrect objToPickTag=" + strObjToPickTag); } //判断是否团灭 int taggerCount = 0; int hideCount = 0; for (PlayerTeam.PlayerTeamType teamType = PlayerTeam.PlayerTeamType.TaggerTeam; teamType < PlayerTeam.PlayerTeamType.MaxTeamNum; teamType++) { PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); if (team == null) { continue; } for (int i = 0; i < team.GetPlayerNum(); i++) { PlayerBase playerBase = GameObjectsManager.GetInstance().GetPlayer(teamType, i); if (playerBase != null && playerBase.Hp != 0) { if (teamType == PlayerTeam.PlayerTeamType.TaggerTeam) { taggerCount++; } else if (teamType == PlayerTeam.PlayerTeamType.HideTeam) { hideCount++; } } } } if (taggerCount == 0 || hideCount == 0) { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { if (UIManager.GetInstance() != null) { UIManager.GetInstance().ShowWinOrLose(); } m_hnGameManager.StopSingleGame(); m_hnGameManager.PlayAgainSingleGame(); } } }
public void ShowPlayerList() { for (PlayerTeam.PlayerTeamType teamType = PlayerTeam.PlayerTeamType.TaggerTeam; teamType < PlayerTeam.PlayerTeamType.MaxTeamNum; teamType++) { PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(teamType); for (int i = 0; i < team.GetPlayerNum(); i++) { PlayerBase playerBase = GameObjectsManager.GetInstance().GetPlayer(teamType, i); if (playerBase != null) { if (playerBase.TeamType == PlayerTeam.PlayerTeamType.TaggerTeam) { TaggerList[i].transform.Find("NumInfo").GetComponent <Text>().text = (i + 1).ToString(); string name = ""; string state = ""; if (playerBase.IsAI) { //String[] str = playerBase.gameObject.name.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); //name = str[0] + "_" + str[1] + "_" + str[2]; name = playerBase.gameObject.name; } else { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { String[] str = GlobalUserInfo.getNickName().Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); name = str[0]; } else if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); string strNN = kernel.getPlayerByChairID(playerBase.ChairID).GetNickName(); if (strNN != "") { String[] str = strNN.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); name = str[0]; } else { name = playerBase.gameObject.name; state = "离开"; } } } TaggerList[i].transform.Find("NameInfo").GetComponent <Text>().text = name; if (playerBase.Hp != 0) { TaggerList[i].transform.Find("State").GetComponent <Text>().text = ""; } else { TaggerList[i].transform.Find("State").GetComponent <Text>().text = "失败"; } if (state == "离开") { TaggerList[i].transform.Find("State").GetComponent <Text>().text = "离开"; } TaggerList[i].SetActive(true); } else { HideList[i].transform.Find("NumInfo").GetComponent <Text>().text = (i + 1).ToString(); string name = ""; string state = ""; if (playerBase.IsAI) { //String[] str = playerBase.gameObject.name.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); //name = str[0] + "_" + str[1] + "_" + str[2]; name = "机器人"; } else { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { String[] str = GlobalUserInfo.getNickName().Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); name = str[0]; } else if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); string strNN = kernel.getPlayerByChairID(playerBase.ChairID).GetNickName(); if (strNN != "") { String[] str = strNN.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); name = str[0]; } else { name = playerBase.gameObject.name; state = "离开"; } } } HideList[i].transform.Find("NameInfo").GetComponent <Text>().text = name; if (playerBase.Hp != 0) { HideList[i].transform.Find("State").GetComponent <Text>().text = ""; } else { HideList[i].transform.Find("State").GetComponent <Text>().text = "被发现"; } if (state == "离开") { HideList[i].transform.Find("State").GetComponent <Text>().text = "离开"; } HideList[i].SetActive(true); } } } } }
//void Update() //{ //} private void OnCollisionEnter(Collision collision) { //if (collision.collider.tag == "Hide" || collision.collider.tag == "NormalFurniture") { Debug.Log("---------Boom!!!!!!!!!!!!"); PlayerTeam team = GameObjectsManager.GetInstance().GetPlayerTeam(PlayerTeam.PlayerTeamType.HideTeam); Human localHuam = GameObjectsManager.GetInstance().GetLocalHuman(); if (team != null) { for (int i = 0; i < team.GetPlayerNum(); i++) { PlayerBase playerBase = GameObjectsManager.GetInstance().GetPlayer(PlayerTeam.PlayerTeamType.HideTeam, i); if (playerBase != null) { if (Math.Abs(this.gameObject.transform.position.x - playerBase.gameObject.transform.position.x) < 5 && Math.Abs(this.gameObject.transform.position.y - playerBase.gameObject.transform.position.y) < 5 && Math.Abs(this.gameObject.transform.position.z - playerBase.gameObject.transform.position.z) < 5) { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { playerBase.MakeDead(); //playerBase.PlayerChairIDOfPickedDead = playerBase.ChairID; //Debug.Log(temp.name + "击杀了: " + playerBase.gameObject.name); var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); if (kernel != null) { String[] str = kernel.getPlayerByChairID(HNGameManager.m_iLocalChairID).GetNickName().Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); UIManager.GetInstance().ShowMiddleTips(str[0] + "击杀了: " + playerBase.gameObject.name); localHuam.AddHP(); } } else { // Dead event sync PlayerEventItem deadEvent = new PlayerEventItem(); deadEvent.cbTeamType = (byte)playerBase.TeamType; deadEvent.wChairId = (ushort)playerBase.ChairID; deadEvent.cbAIId = playerBase.AIId; deadEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.DeadByBoom; //killer deadEvent.nCustomData0 = (Int32)localHuam.TeamType; deadEvent.nCustomData1 = (Int32)localHuam.ChairID; deadEvent.nCustomData2 = (Int32)localHuam.AIId; GameObjectsManager.GetInstance().PlayerEventList.Add(deadEvent); } } } } } //炸弹特效 GameObject loadObj = Resources.Load("Player/Prefabs/Invenrtory/FX Comic Explosion 1 Large BOOM") as GameObject; GameObject BoomFX = Instantiate(loadObj); BoomFX.transform.position = gameObject.transform.position; Destroy(this.gameObject); if (hnGameManager != null) { hnGameManager.PlaySoundEffect(-1, (int)AudioManager.Sound_Effect_Defines.SOUND_EFFECT_Boom); } // Boom event sync PlayerEventItem boomEvent = new PlayerEventItem(); boomEvent.cbTeamType = (byte)GameObjectsManager.s_LocalHumanTeamType; boomEvent.wChairId = (ushort)HNGameManager.m_iLocalChairID; boomEvent.cbAIId = HNMJ_Defines.INVALID_AI_ID; boomEvent.cbEventKind = (byte)PlayerBase.PlayerEventKind.Boom; boomEvent.nCustomData0 = (Int32)gameObject.transform.position.x; boomEvent.nCustomData1 = (Int32)gameObject.transform.position.y; boomEvent.nCustomData2 = (Int32)gameObject.transform.position.z; GameObjectsManager.GetInstance().PlayerEventList.Add(boomEvent); } }
//显示头顶信息 public void ShowPlayerTopHeadInfo(PlayerBase playerBase) { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { if (GameManager.s_singleGameStatus == SocketDefines.GAME_STATUS_HIDE || GameManager.s_singleGameStatus == SocketDefines.GAME_STATUS_PLAY) { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); if (localHuman != null) { //本地玩家为警察时不显示躲藏者信息 if (localHuman.TeamType == PlayerTeam.PlayerTeamType.TaggerTeam && playerBase.TeamType == PlayerTeam.PlayerTeamType.HideTeam) { playerBase.SetTopInfoVisible(false); return; } goto TopHeadInfo; } return; } else { return; } } else { if (CServerItem.get() == null) { return; } byte Gamestate = CServerItem.get().GetGameStatus(); if (Gamestate == SocketDefines.GAME_STATUS_HIDE || Gamestate == SocketDefines.GAME_STATUS_PLAY) { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); if (localHuman != null) { //本地玩家为警察时不显示躲藏者信息 if (localHuman.TeamType == PlayerTeam.PlayerTeamType.TaggerTeam && playerBase.TeamType == PlayerTeam.PlayerTeamType.HideTeam) { playerBase.SetTopInfoVisible(false); return; } goto TopHeadInfo; } else { IClientUserItem pMeItem = CServerItem.get().GetMeUserItem(); if (pMeItem == null) { return; } int nStatus = pMeItem.GetUserStatus(); if (nStatus == SocketDefines.US_LOOKON) { goto TopHeadInfo; } } } else { return; } } TopHeadInfo: { GameObject InfoPanelObj = playerBase.gameObject.transform.Find("InfoPanel").gameObject; if (InfoPanelObj != null) { TextMesh nameText = InfoPanelObj.transform.Find("Name").GetComponent <TextMesh>(); TextMesh levelText = InfoPanelObj.transform.Find("Level").GetComponent <TextMesh>(); if (playerBase.IsAI) { nameText.text = playerBase.gameObject.name; nameText.color = Color.white; if (levelText.text == "") { levelText.text = "等级:" + UnityEngine.Random.Range(0, 100); } levelText.color = Color.white; } else { var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); string strNN = ""; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { strNN = GlobalUserInfo.getNickName(); } else if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { if (kernel != null) { strNN = kernel.getPlayerByChairID(playerBase.ChairID).GetNickName(); } } if (strNN != "") { String[] str = strNN.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); nameText.text = str[0]; nameText.color = Color.white; if (kernel != null) { tagUserInfo userInfo = (tagUserInfo)kernel.getPlayerByChairID(playerBase.ChairID).GetUserInfo(); levelText.text = "等级:" + (userInfo.lExperience / 100).ToString(); } else { levelText.text = "等级:" + (GlobalUserInfo.getUserExp() / 100).ToString(); } levelText.color = Color.white; } } if (InfoPanelObj != null) { InfoPanelObj.transform.LookAt(Camera.main.transform); } } return; } }
private static void ReadMessage(int id, dynamic obj) { switch (id) { case 0: int objectId = (int)obj.id; int baseId = (int)obj.bId; int x = (int)obj.x; int y = (int)obj.y; try { var mobModel = Script.Call <dynamic>("getMobModel", baseId); GameObject.Instantiate <Character>(objectId, x, y, 64, 64, mobModel.resource); } catch (Exception ex) { Console.WriteLine("Err:" + objectId); Console.WriteLine(ex.ToString()); } break; case 1: if (GameObjectsManager.GetObject((int)obj.id, out GameObject go)) { GameObject.Destroy(go); } break; case 2: if (GameObjectsManager.GetObject((int)obj.id, out Character c)) { c.SetDestination((int)obj.x, (int)obj.y); } break; case 3: GameController.Instance.SetMap((int)obj.mapId); if (GameObjectsManager.GetObject((int)obj.id, out Character pl)) { GameController.Instance.SetPlayer(pl); GameController.Instance.player.SetStat(Stat.LVL, (int)obj.lvl); GameController.Instance.player.SetStat(Stat.EXP, (int)obj.exp); } break; case 4: GameController.Instance.SetMap((int)obj.mapId); GameController.Instance.player.SetPosition((int)obj.x, (int)obj.y); break; case 5: Stat stat = (Stat)(int)obj.stat; if (GameObjectsManager.GetObject((int)obj.id, out Character t)) { t.SetStat(stat, (int)obj.val); } break; case 6: DbUniqueItem[] items = JSON.Parse <DbUniqueItem[]>((string)obj.items); foreach (var item in items) { Script.Call("setInventorySlot", item.slot, item.baseId); } break; } }
protected virtual void Initialize() { initialized = true; spriteBatch = new SpriteBatch(parent.GraphicsDevice); goManager = new GameObjectsManager(parent.GraphicsDevice); }
public Actions() { Player = new Player(CommonEnums.LocationType.Office); GameObjects = new GameObjectsManager(); Locations = new LocationsManager(); }