Beispiel #1
0
 public Ticket(IPlayerInfo holder, DateTime draw, int[] numbers, decimal value)
 {
     _numbers = new int[numbers.Length];
       System.Array.Copy(numbers, _numbers, numbers.Length);
       _holder = holder;
       _value = value;
       _open = true;
       _winnings = 0;
       _drawDate = draw;
 }
Beispiel #2
0
 public ImposeTaskHelper(IPacketWriter writer, IPlayerInfo info, ImposeInfo impose)
 {
     this.writer = writer;
     this.info   = info;
     this.impose = impose;
 }
		public ServerGameConfiguration(IPlayerInfo a, IPlayerInfo b)
		{
			this.PlayerA = a;
			this.PlayerB = b;
		}
 public override Task OnActivateAsync()
 {
     _playerInfo = PlayerHelper.ParseKey(this.GetPrimaryKeyString());
     return(Task.CompletedTask);
 }
 public PlayerInfoProcessor(IPlayerInfo info)
 {
     playerInfo = info;
 }
Beispiel #6
0
 public void SetInfoModel(IPlayerInfo model)
 {
     infoModel = model;
 }
 public PlayerInfoViewModel(IPlayerInfo info)
 {
     playerInfo = info;
 }
Beispiel #8
0
 public Player(string name, string type, int initialHitPoints, double baseDamage, ITacticsInfo tactics)
 {
     Info     = new PlayerInfo(name, type, initialHitPoints, baseDamage);
     _tactics = tactics;
     Reset();
 }
Beispiel #9
0
 public UpgradeTaskHelper(IPacketWriter writer, IPlayerInfo info, UpgradeInfo upgrade)
 {
     this.writer  = writer;
     this.info    = info;
     this.upgrade = upgrade;
 }
 public void AddPlayerInfo(string token, IPlayerInfo playerInfo)
 {
     _token2UserInfo[token] = playerInfo;
 }
Beispiel #11
0
 public override void Reset()
 {
     base.Reset();
     PlayerInfo = null;
 }
Beispiel #12
0
 public PlayerInfoViewModel(IPlayerInfo info)
 {
     playerInfo = info;
 }
Beispiel #13
0
 private PlayerData CoercePlayer(IPlayerInfo player) => GameData.Players.Single(_ => _.Identifier == player.Identifier);
Beispiel #14
0
        private void GroupRank(List <IPlayerInfo> players, IPlayerInfo playerInfo, bool rescue)
        {
            if (players.Count <= 1)
            {
                return;
            }
            players.Sort((x, y) =>
            {
                var xStat = x.StatisticsData;
                var yStat = y.StatisticsData;
                if (rescue)
                {
                    if (xStat.HitDownCount < yStat.HitDownCount)
                    {
                        return(1);
                    }
                    if (xStat.HitDownCount > yStat.HitDownCount)
                    {
                        return(-1);
                    }
                    if (xStat.DeadCount > yStat.DeadCount)
                    {
                        return(1);
                    }
                    if (xStat.DeadCount < yStat.DeadCount)
                    {
                        return(-1);
                    }
                    if (xStat.SaveCount > yStat.SaveCount)
                    {
                        return(-1);
                    }
                    if (xStat.SaveCount < yStat.SaveCount)
                    {
                        return(1);
                    }
                    if (xStat.TotalDamage > yStat.TotalDamage)
                    {
                        return(-1);
                    }
                    if (xStat.TotalDamage < yStat.TotalDamage)
                    {
                        return(1);
                    }
                    if (xStat.LastKillTime < yStat.LastKillTime)
                    {
                        return(-1);
                    }
                    if (xStat.LastKillTime > yStat.LastKillTime)
                    {
                        return(1);
                    }
                    if ((xStat.LastDeadTime == 0 && yStat.LastDeadTime != 0) || (xStat.LastDeadTime > yStat.LastDeadTime && yStat.LastDeadTime != 0))
                    {
                        return(-1);
                    }
                    if ((xStat.LastDeadTime != 0 && yStat.LastDeadTime == 0) || (xStat.LastDeadTime < yStat.LastDeadTime && xStat.LastDeadTime != 0))
                    {
                        return(1);
                    }
                    return(0);
                }
                else
                {
                    if (xStat.KillCount < yStat.KillCount)
                    {
                        return(1);
                    }
                    if (xStat.KillCount > yStat.KillCount)
                    {
                        return(-1);
                    }
                    if (xStat.DeadCount > yStat.DeadCount)
                    {
                        return(1);
                    }
                    if (xStat.DeadCount < yStat.DeadCount)
                    {
                        return(-1);
                    }
                    if (xStat.AssistCount > yStat.AssistCount)
                    {
                        return(-1);
                    }
                    if (xStat.AssistCount < yStat.AssistCount)
                    {
                        return(1);
                    }
                    if (xStat.TotalDamage > yStat.TotalDamage)
                    {
                        return(-1);
                    }
                    if (xStat.TotalDamage < yStat.TotalDamage)
                    {
                        return(1);
                    }
                    if (xStat.LastKillTime < yStat.LastKillTime)
                    {
                        return(-1);
                    }
                    if (xStat.LastKillTime > yStat.LastKillTime)
                    {
                        return(1);
                    }
                    if ((xStat.LastDeadTime == 0 && yStat.LastDeadTime != 0) || (xStat.LastDeadTime > yStat.LastDeadTime && yStat.LastDeadTime != 0))
                    {
                        return(-1);
                    }
                    if ((xStat.LastDeadTime != 0 && yStat.LastDeadTime == 0) || (xStat.LastDeadTime < yStat.LastDeadTime && xStat.LastDeadTime != 0))
                    {
                        return(1);
                    }
                    return(0);
                }
            });

            for (int i = 0; i < players.Count; i++)
            {
                players[i].StatisticsData.Rank = players[i].StatisticsData.IsRunaway ? players.Count : i + 1;
                if (players[i].PlayerId == playerInfo.PlayerId)
                {
                    playerInfo.StatisticsData.Rank = players[i].StatisticsData.Rank;
                }
            }
        }
Beispiel #15
0
        private void SurvivalRank(List <IPlayerInfo> players, Dictionary <long, GameOverPlayer> goPlayerList, IEventArgs args, IPlayerInfo playerInfo)
        {
            if (players.Count < 1)
            {
                return;
            }

            long chickenTeamId = -1L;
            Dictionary <long, int> teamDeadDict = new Dictionary <long, int>();
            Dictionary <long, int> teamRankDict = new Dictionary <long, int>();

            foreach (IPlayerInfo ipi in players)
            {
                if (!ipi.StatisticsData.IsRunaway && ipi.StatisticsData.LastDeadTime <= 0L)
                {
                    //和谐模式下,胜出5人不参与排序
                    if (!SharedConfig.IsHXMod && FreeUtil.ReplaceBool("{hasWin}", args))
                    {
                        //没有逃跑且没有死亡->吃鸡
                        chickenTeamId = ipi.TeamId;
                    }
                }
                if (teamDeadDict.ContainsKey(ipi.TeamId))
                {
                    if (ipi.StatisticsData.LastDeadTime > teamDeadDict[ipi.TeamId])
                    {
                        teamDeadDict[ipi.TeamId] = (int)ipi.StatisticsData.LastDeadTime;
                    }
                }
                else
                {
                    teamDeadDict.Add(ipi.TeamId, (int)ipi.StatisticsData.LastDeadTime);
                }
            }
            //队伍总数
            int teamCount = teamDeadDict.Count;

            teamRankDict.Add(chickenTeamId, 1);
            if (chickenTeamId != -1)
            {
                teamDeadDict.Remove(chickenTeamId);//去掉吃鸡队伍
            }

            int rank = 1; //剩下队伍按最后死亡时间排序

            teamDeadDict = teamDeadDict.OrderByDescending(o => o.Value).ToDictionary(p => p.Key, o => o.Value);
            foreach (var deadPair in teamDeadDict)
            {
                teamRankDict.Add(deadPair.Key, ++rank);
            }

            foreach (IPlayerInfo ipi in players)
            {
                if (ipi.StatisticsData.Rank != 1)
                {
                    if (ipi.StatisticsData.IsRunaway)
                    {
                        ipi.StatisticsData.Rank = teamCount;
                    }
                    else
                    {
                        if (FreeUtil.ReplaceBool("{hasWin}", args))
                        {
                            ipi.StatisticsData.Rank = teamRankDict[ipi.TeamId];
                        }
                        else if (ipi.StatisticsData.LastDeadTime != 0L)
                        {
                            ipi.StatisticsData.Rank = teamRankDict[ipi.TeamId] - 1;
                        }
                    }
                }

                Logger.InfoFormat("player id {0} should be rank {1} in total team {2}, game has win ? {3}", ipi.PlayerId, ipi.StatisticsData.Rank, teamCount, FreeUtil.ReplaceBool("{hasWin}", args));

                if (ipi.PlayerId == playerInfo.PlayerId)
                {
                    playerInfo.StatisticsData.Rank = ipi.StatisticsData.Rank;
                }

                GameOverPlayer gop;
                goPlayerList.TryGetValue(ipi.PlayerId, out gop);
                if (gop != null)
                {
                    gop.Statistics[(int)EStatisticsID.Rank]    = ipi.StatisticsData.Rank;
                    gop.Statistics[(int)EStatisticsID.RankAce] = ipi.StatisticsData.Rank == 1 ? 1 : 0;
                    gop.Statistics[(int)EStatisticsID.RankTen] = ipi.StatisticsData.Rank <= 10 ? 1 : 0;
                }
            }
        }
 public override void SetStatisticData(GameOverPlayer gameOverPlayer, IPlayerInfo playerInfo, IFreeArgs freeArgs)
 {
     gameOverPlayer.Id = playerInfo.PlayerId;
     if (null == playerInfo.StatisticsData)
     {
         Logger.Error("player's statisticsData is null ");
         return;
     }
     gameOverPlayer.Score = playerInfo.StatisticsData.KillCount;
     foreach (EStatisticsID eId in Enum.GetValues(typeof(EStatisticsID)))
     {
         gameOverPlayer.Statistics.Add((int)eId, 0);
     }
     gameOverPlayer.Statistics[(int)EStatisticsID.KillCount]           = playerInfo.StatisticsData.KillCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.HitDownCount]        = playerInfo.StatisticsData.HitDownCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.PlayerDamage]        = (int)playerInfo.StatisticsData.PlayerDamage;
     gameOverPlayer.Statistics[(int)EStatisticsID.TotalDamage]         = (int)playerInfo.StatisticsData.TotalDamage;
     gameOverPlayer.Statistics[(int)EStatisticsID.ShootingCount]       = playerInfo.StatisticsData.ShootingCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.ShootingSuccCount]   = playerInfo.StatisticsData.ShootingSuccCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.ShootingPlayerCount] = playerInfo.StatisticsData.ShootingPlayerCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.CritCount]           = playerInfo.StatisticsData.CritCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.TotalMoveDistance]   = (int)playerInfo.StatisticsData.TotalMoveDistance;
     gameOverPlayer.Statistics[(int)EStatisticsID.VehicleMoveDistance] = (int)playerInfo.StatisticsData.VehicleMoveDistance;
     gameOverPlayer.Statistics[(int)EStatisticsID.AssistCount]         = playerInfo.StatisticsData.AssistCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.CureVolume]          = (int)playerInfo.StatisticsData.CureVolume;
     gameOverPlayer.Statistics[(int)EStatisticsID.AccSpeedTime]        = playerInfo.StatisticsData.AccSpeedTime;
     gameOverPlayer.Statistics[(int)EStatisticsID.SaveCount]           = playerInfo.StatisticsData.SaveCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.TotalBeDamage]       = (int)playerInfo.StatisticsData.TotalBeDamage;
     gameOverPlayer.Statistics[(int)EStatisticsID.DefenseDamage]       = (int)playerInfo.StatisticsData.DefenseDamage;
     gameOverPlayer.Statistics[(int)EStatisticsID.DeadCount]           = playerInfo.StatisticsData.DeadCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillDistance]        = (int)playerInfo.StatisticsData.MaxKillDistance;
     gameOverPlayer.Statistics[(int)EStatisticsID.DestroyVehicle]      = playerInfo.StatisticsData.DestroyVehicle;
     gameOverPlayer.Statistics[(int)EStatisticsID.UseThrowingCount]    = playerInfo.StatisticsData.UseThrowingCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.IsFullArmed]         = playerInfo.StatisticsData.IsFullArmed ? 1 : 0;
     gameOverPlayer.Statistics[(int)EStatisticsID.EvenKillCount]       = playerInfo.StatisticsData.MaxEvenKillCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.SwimTime]            = playerInfo.StatisticsData.SwimTime;
     gameOverPlayer.Statistics[(int)EStatisticsID.Drown]               = playerInfo.StatisticsData.Drown ? 1 : 0;
     gameOverPlayer.Statistics[(int)EStatisticsID.PoisionDead]         = playerInfo.StatisticsData.PoisionDead ? 1 : 0;
     gameOverPlayer.Statistics[(int)EStatisticsID.DropDead]            = playerInfo.StatisticsData.DropDead ? 1 : 0;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByVehicle]       = playerInfo.StatisticsData.KillByVehicle ? 1 : 0;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByPlayer]        = playerInfo.StatisticsData.KillByPlayer ? 1 : 0;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByAirBomb]       = playerInfo.StatisticsData.KillByAirBomb ? 1 : 0;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByRifle]         = playerInfo.StatisticsData.KillWithRifle;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByMachineGun]    = playerInfo.StatisticsData.KillWithMachineGun;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillBySubMachineGun] = playerInfo.StatisticsData.KillWithSubmachineGun;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByThrowWeapon]   = playerInfo.StatisticsData.KillWithThrowWeapon;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByMelee]         = playerInfo.StatisticsData.KillWithMelee;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByPistol]        = playerInfo.StatisticsData.KillWithPistol;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillBySniper]        = playerInfo.StatisticsData.KillWithSniper;
     gameOverPlayer.Statistics[(int)EStatisticsID.KillByShotGun]       = playerInfo.StatisticsData.KillWithShotGun;
     gameOverPlayer.Statistics[(int)EStatisticsID.GameTime]            = playerInfo.StatisticsData.GameTime;
     gameOverPlayer.Statistics[(int)EStatisticsID.GameCount]           = playerInfo.StatisticsData.IsRunaway ? 0 : 1;
     gameOverPlayer.Statistics[(int)EStatisticsID.CritKillCount]       = playerInfo.StatisticsData.CritKillCount;
     gameOverPlayer.Statistics[(int)EStatisticsID.GetFirstBlood]       = playerInfo.StatisticsData.GetFirstBlood ? 1 : 0;
     if (((PlayerEntity)playerInfo.PlayerEntity).gamePlay.LifeState != (int)EPlayerLifeState.Alive)
     {
         playerInfo.StatisticsData.DeadTime += (int)System.DateTime.Now.Ticks / 10000 - playerInfo.StatisticsData.LastDeadTime;
     }
     gameOverPlayer.Statistics[(int)EStatisticsID.DeadTime] = playerInfo.StatisticsData.DeadTime;
     AddHonorData(gameOverPlayer, playerInfo);
     PlayerReportTrigger(gameOverPlayer, playerInfo, freeArgs);
 }
Beispiel #17
0
 public ImproveTaskHelper(IPacketWriter writer, IPlayerInfo info, Barracks barracks)
 {
     this.writer   = writer;
     this.info     = info;
     this.barracks = barracks;
 }
Beispiel #18
0
 public void AddPlayerInfo(string token, IPlayerInfo playerInfo)
 {
     _playerInfoManager.AddPlayerInfo(token, playerInfo);
 }
Beispiel #19
0
 public bool LoginPlayer(IPlayerInfo playerInfo, INetworkChannel channel)
 {
     MessageDispatcher.SaveDispatch(channel, (int)EClient2ServerMessage.LocalLogin, playerInfo);
     return(true);
 }
Beispiel #20
0
 private void SetGameOverPlayerValue(GameOverPlayer gameOverPlayer, IPlayerInfo player)
 {
     _gameStatisticData.SetStatisticData(gameOverPlayer, player, _contexts.session.commonSession.FreeArgs);
 }
 public virtual void SetStatisticData(GameOverPlayer gameOverPlayer, IPlayerInfo player, IFreeArgs freeArgs)
 {
 }
 public PlayerInfoProcessor(IPlayerInfo info)
 {
     playerInfo = info;
 }
Beispiel #23
0
 public void SetInfoModel(IPlayerInfo info)
 {
     infoModel = info;
 }
Beispiel #24
0
 /// <summary>
 /// Shorthand way to get a player's GUID.
 /// </summary>
 /// <param name="player">Player</param>
 /// <returns>Guid</returns>
 public static Guid AsGuid(this IPlayerInfo player)
 {
     return(player?.Identifier ?? Guid.Empty);
 }
Beispiel #25
0
 /// <summary>
 /// Shorthand way to see if players have the same GUID.
 /// </summary>
 /// <param name="player">First player</param>
 /// <param name="other">Second player</param>
 /// <returns>True if same identifier.</returns>
 public static bool HasSameIdentifierAs(this IPlayerInfo player, IPlayerInfo other)
 {
     return(player != null && other != null && player.Identifier == other.Identifier);
 }
Beispiel #26
0
 public void AddPlayerInfo(string token, IPlayerInfo room)
 {
     _token2UserInfo[token] = room;
 }