コード例 #1
0
        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 { }
            }
        }
コード例 #2
0
ファイル: PlayerSystem.cs プロジェクト: AlexGam/TowerIsland
	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);
	}
コード例 #3
0
        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);
        }
コード例 #4
0
	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);
	}
コード例 #5
0
    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);
    }
コード例 #6
0
    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();
    }
コード例 #7
0
    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);
    }
コード例 #8
0
        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();
            }
        }
コード例 #9
0
        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);
        }
コード例 #10
0
ファイル: PlayerSystem.cs プロジェクト: AlexGam/TowerIsland
	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);
	}
コード例 #11
0
ファイル: PlayerSystem.cs プロジェクト: AlexGam/TowerIsland
	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);
					}
				}
			}
		}
	}
コード例 #12
0
ファイル: PlayerSystem.cs プロジェクト: AlexGam/TowerIsland
	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);
					}
				}
			}
		}
	}
コード例 #13
0
        // ========================================================================
        // ============================  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 ");
            //    }
            //});
        }
コード例 #14
0
    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;
        }
    }