public void Update(PlayerEventData eventData) { lock (GameApplication.GetInstance().SFMLLock) { //OurLogger.Log($"Got event {eventData}"); GameApplication.defaultLogger.LogMessage(20, $"Got event {eventData}"); if (!scores.ContainsKey(eventData.Shooter)) { scores.Add(eventData.Shooter, new CustomText(2 * 7)); } if (!scores.ContainsKey(eventData.Victim)) { scores.Add(eventData.Victim, new CustomText(2 * 7)); } try { scores[eventData.Victim].DisplayedString = $"{eventData.Victim.Name} {eventData.Victim.Kills}/{eventData.Victim.Deaths}"; scores[eventData.Shooter].DisplayedString = $"{eventData.Shooter.Name} {eventData.Shooter.Kills}/{eventData.Shooter.Deaths}"; } catch { } } }
private void CreatePlayerInternalPrefs(string playerName, string custom, UnityAction<bool> callback){ string newPlayer=playerName+","+custom+",1"; string allPlayers = PlayerPrefs.GetString (playersKey); string[] arr = allPlayers.Split('/'); if (arr.Length > 0) { for (int i = 0; i < arr.Length; i++) { string[] data = arr[i].Split(','); if(data.Length > 2){ string mName=data[0]; if(playerName == mName){ if(callback != null){ callback.Invoke(false); } return; } } } } if (callback != null) { callback.Invoke (true); } PlayerPrefs.SetString (playersKey,allPlayers + "/" + newPlayer); PlayerEventData eventData = new PlayerEventData (); eventData.playerName = playerName; eventData.level = 1; eventData.custom = custom; Execute("OnCreatePlayer",eventData); }
public void EventManagerSubNotify() { LoadTextures(); LoadFonts(); var shooter = new Mock <Player>().Object; var victim = new Mock <Player>().Object; var scoreboard = new Scoreboard(); var killnotif = new KillNotifier(); var evtManager = PlayerEventManager.GetInstance(); var evtData = new PlayerEventData(); evtData.Shooter = shooter; evtData.Victim = victim; evtManager.Subscribe(PlayerEventType.PlayerDead, killnotif); evtManager.Subscribe(PlayerEventType.KilledPlayer, scoreboard); evtManager.Notify(PlayerEventType.KilledPlayer, evtData); evtManager.Notify(PlayerEventType.PlayerDead, evtData); Assert.True(evtManager._listeners[PlayerEventType.PlayerDead].Count == 1 && evtManager._listeners[PlayerEventType.KilledPlayer].Count == 1); }
private void OnLoadPlayer(PlayerEventData eventData){ GameObject go = (GameObject)Instantiate (slot); go.SetActive (true); PlayerSlot mSlot = go.GetComponent<PlayerSlot> (); mSlot.playerName.text = eventData.playerName; mSlot.playerClass.text = eventData.custom; Debug.Log (eventData.level); mSlot.playerLevel.text = "Lvl."+eventData.level.ToString (); go.transform.SetParent( layoutGroup.transform,false); }
public static void EnterLevel(int model, int weapon, int camp) { PlayerEventData req = new PlayerEventData(); req.camp = (uint)camp;//暂时全部为盟主模式 req.model = (uint)model; req.weapon = (uint)weapon; req.playerId = (uint)Main.Ins.NetWorkBattle.PlayerId; Exec((int)MeteorMsg.Command.SpawnPlayer, req); }
public static void LeaveLevel() { PlayerEventData req = new PlayerEventData(); req.camp = (uint)Main.Ins.NetWorkBattle.camp;//暂时全部为盟主模式 req.model = (uint)Main.Ins.NetWorkBattle.heroIdx; req.weapon = (uint)Main.Ins.NetWorkBattle.weaponIdx; req.playerId = (uint)Main.Ins.NetWorkBattle.PlayerId; Exec((int)MeteorMsg.Command.DestroyPlayer, req); Main.Ins.NetWorkBattle.OnDisconnect(); }
public MonsterEx InitNetPlayer(PlayerEventData player) { MonsterEx ret = new MonsterEx(); ret.HpMax = (int)Main.Ins.RoomMng.GetRoom(Main.Ins.NetWorkBattle.RoomId).hpMax; ret.hpCur = ret.HpMax; ret.AngryValue = 0; ret.Model = (int)player.model; ret.Weapon = (int)player.weapon; ret.Weapon2 = (int)0; ret.name = player.name; ret.SpawnPoint = U3D.Rand(16); ret.Speed = 1000; ret.IsPlayer = player.playerId == Main.Ins.NetWorkBattle.PlayerId; return(ret); }
public void Update(PlayerEventData eventData) { lock (GameApplication.GetInstance().SFMLLock) { OurLogger.Log("Kill notifier notified"); GameApplication.defaultLogger.LogMessage(11, "Kill notifier notified"); message.DisplayedString = $"Player {eventData.Shooter.Name} killed {eventData.Victim.Name}"; var viewPort = GameApplication.GetInstance().GameWindow.GetViewport(GameApplication.GetInstance().MainView); var newOrgin = new Vector2f(message.GetLocalBounds().Width / 2f, message.GetLocalBounds().Height / 2f); message.Origin = newOrgin; message.Position = new Vector2f(viewPort.Width / 2f, viewPort.Height / 1.05f); timemoutTimer.Restart(); } }
public void EventManagerEmptyCrash() { LoadTextures(); LoadFonts(); var shooter = new Mock <Player>().Object; var victim = new Mock <Player>().Object; var evtManager = PlayerEventManager.GetInstance(); var evtData = new PlayerEventData() { Shooter = shooter, Victim = victim }; evtManager.Notify(PlayerEventType.KilledPlayer, evtData); Assert.True(true); }
private IEnumerator CreatePlayerInternal(string username,string playerName, string custom, UnityAction<bool> callback){ WWWForm newForm = new WWWForm (); newForm.AddField ("account", username); newForm.AddField ("name", playerName); newForm.AddField ("custom", custom); newForm.AddField ("level", 1); WWW w = new WWW (settings.serverAddress + "/"+settings.createPlayer, newForm); while (!w.isDone) { yield return new WaitForEndOfFrame(); } if (w.error != null) { Debug.LogError (w.error); } bool res = w.text.Trim ().Equals("true"); if (callback != null) { callback.Invoke(res); } PlayerEventData eventData = new PlayerEventData (); eventData.playerName = playerName; eventData.level = 1; eventData.custom = custom; Execute("OnCreatePlayer",eventData); }
private IEnumerator LoadPlayersInternal(string username, UnityAction<PlayerEventData> callback) { WWWForm newForm = new WWWForm(); newForm.AddField("account", username); WWW w = new WWW(settings.serverAddress + "/"+settings.loadPlayers, newForm); while (!w.isDone) { yield return new WaitForEndOfFrame(); } if (w.error != null) { Debug.LogError(w.error); } string res = w.text.Trim(); Debug.Log(res); string[] arr = res.Split('/'); if (arr.Length > 0) { for (int i = 0; i < arr.Length; i++) { string[] data = arr[i].Split(','); if(data.Length > 2){ PlayerEventData eventData = new PlayerEventData (); eventData.playerName = data[0]; Debug.Log(data[2]); eventData.level = int.Parse(data[2]); eventData.custom = data[1]; Execute("OnLoadPlayer",eventData); if (callback != null) { callback.Invoke(eventData); } } } } }
private void LoadPlayersInternalPrefs(UnityAction<PlayerEventData> callback){ string res = PlayerPrefs.GetString (playersKey); string[] arr = res.Split('/'); if (arr.Length > 0) { for (int i = 0; i < arr.Length; i++) { string[] data = arr[i].Split(','); if(data.Length > 2){ PlayerEventData eventData = new PlayerEventData (); eventData.playerName = data[0]; Debug.Log(data[2]); eventData.level = int.Parse(data[2]); eventData.custom = data[1]; Execute("OnLoadPlayer",eventData); if (callback != null) { callback.Invoke(eventData); } } } } }
// ======================================================================== // ============================ EVENTS AND INPUTS ======================== // ======================================================================== public void BindEvents() { GameState.ConnectionManagerProxy.Connection.On <ServerGameState>("UpdateGameStateClient", (stateDto) => { UpdatePlayers(stateDto); }); //GameState.ConnectionManager.Connection.On<ServerGameState>("UpdateGameStateClient", (stateDto) => //{ // UpdatePlayers(stateDto); //}); GameState.ConnectionManagerProxy.Connection.On <ShootEventData>("ShootEventClient", (shootData) => { Player player = PlayerRepository.Players.Find(p => p.Name.Equals(shootData.Shooter.Name)); if (player != null) { player.Weapon.Shoot(shootData.Target, shootData.Orgin, shootData.Rotation, player, false); } defaultLogger.LogMessage(10, shootData.ToString()); //OurLogger.Log(shootData.ToString()); }); //GameState.ConnectionManager.Connection.On<ShootEventData>("ShootEventClient", (shootData) => //{ // Player player = GameState.Players.Find(p => p.Name.Equals(shootData.Shooter.Name)); // if(player != null) // { // player.Weapon.Shoot(shootData.Target, shootData.Orgin, shootData.Rotation, player, false); // } // defaultLogger.LogMessage(10, shootData.ToString()); // //OurLogger.Log(shootData.ToString()); //}); GameState.ConnectionManagerProxy.Connection.On <ServerPlayer, ServerPlayer>("UpdateScoresClient", (killerServ, victimServ) => { Player killer = PlayerRepository.Players.Find(p => p.Name.Equals(killerServ.Name)); Player victim = PlayerRepository.Players.Find(p => p.Name.Equals(victimServ.Name)); //OurLogger.Log($"{victimServ.Name} got shot. Before {victim.Health} after {victimServ.Health} "); defaultLogger.LogMessage(15, $"{victimServ.Name} got shot. Before {victim.Health} after {victimServ.Health} "); victim.Health = victimServ.Health; if (victim.IsDead) { //OurLogger.Log($"{killerServ.Name} killed ---> {victimServ.Name}"); defaultLogger.LogMessage(30, $"{killerServ.Name} killed ---> {victimServ.Name}"); killer.Kills = killerServ.Kills; victim.Deaths = victimServ.Deaths; var evtData = new PlayerEventData() { Shooter = killer, Victim = victim }; PlayerEventManager.Notify(PlayerEventType.KilledPlayer, evtData); } else { defaultLogger.LogMessage(15, $"{victimServ.Name} got shot. Befor "); //OurLogger.Log($"{victimServ.Name} got shot. Befor "); } }); //GameState.ConnectionManager.Connection.On<ServerPlayer, ServerPlayer>("UpdateScoresClient", (killerServ, victimServ) => //{ // Player killer = GameState.Players.Find(p => p.Name.Equals(killerServ.Name)); // Player victim = GameState.Players.Find(p => p.Name.Equals(victimServ.Name)); // //OurLogger.Log($"{victimServ.Name} got shot. Before {victim.Health} after {victimServ.Health} "); // defaultLogger.LogMessage(15, $"{victimServ.Name} got shot. Before {victim.Health} after {victimServ.Health} "); // victim.Health = victimServ.Health; // if (victim.IsDead) // { // //OurLogger.Log($"{killerServ.Name} killed ---> {victimServ.Name}"); // defaultLogger.LogMessage(30, $"{killerServ.Name} killed ---> {victimServ.Name}"); // killer.Kills = killerServ.Kills; // victim.Deaths = victimServ.Deaths; // var evtData = new PlayerEventData() // { // Shooter = killer, // Victim = victim // }; // PlayerEventManager.Notify(PlayerEventType.KilledPlayer, evtData); // } // else // { // defaultLogger.LogMessage(15, $"{victimServ.Name} got shot. Befor "); // //OurLogger.Log($"{victimServ.Name} got shot. Befor "); // } //}); }
private void LogicFrame() { //得到当前逻辑帧数据,对普通事件数据,调用对应的事件函数,对按键,在更新每个对象使,应用到每个对象上. if (currentFrame == null) { //等待从服务器收到接下来一帧的信息. currentFrame = GetNextTurn(LogicTurnIndex); if (currentFrame == null) { //如果没有取得下一个回合的指令.能否继续 //如果是联机或者回放-那么拿不到后面的操作指令是无法继续播放的 if (Main.Ins.CombatData.GLevelMode == LevelMode.MultiplyPlayer || Main.Ins.CombatData.Replay) { return; } } } else { } //update game-物理引擎更新. //SceneManager.Manager.TwoDPhysics.Update(GameFramesPerSecond); actions.Clear(); if (currentFrame != null) { actions = GetAction(currentFrame.commands, LogicFrameIndex); for (int i = 0; i < actions.Count; i++) { switch (actions[i].command) { case MeteorMsg.Command.SyncRandomSeed: SyncInitData seed = ProtoBuf.Serializer.Deserialize <SyncInitData>(new System.IO.MemoryStream(actions[i].data)); UnityEngine.Random.InitState((int)seed.randomSeed); break; case MeteorMsg.Command.SpawnPlayer: System.IO.MemoryStream ms = new System.IO.MemoryStream(actions[i].data); PlayerEventData evt = ProtoBuf.Serializer.Deserialize <PlayerEventData>(ms); Main.Ins.GameBattleEx.OnCreateNetPlayer(evt); break; } } } NetUpdate(); NetLateUpdate(); LogicFrameIndex++; if (LogicFrameIndex % TurnFrameMax == 0) { Main.Ins.FrameSync.SyncTurn(); LogicTurnIndex++; currentFrame = null; LogicFrameIndex = 0; } if (firstFrame) { Main.Ins.DialogStateManager.ChangeState(null);//关闭loading条 firstFrame = false; } }