Exemplo n.º 1
0
    public Activity CreateActivity(MissionScore score, ActivityScore activityScore)
    {
        if (activityScore == null)
        {
            return(CreateStartActivity(score));
        }

        var difficulty = CalculateActivityDifficulty(activityScore.NextActivity, activityScore.ActivityResult, activityScore.P);

        return(Instantiate(activityScore.NextActivity, _groupFactory.GetGroup1(), difficulty));
    }
Exemplo n.º 2
0
        public void SubmitMissionScore(string login, string passwordHash, string missionName, int score, int gameSeconds, string missionVars = "")
        {
            missionName = Mission.GetNameWithoutVersion(missionName);

            using (var db = new ZkDataContext())
            {
                var acc = AuthServiceClient.VerifyAccountHashed(login, passwordHash);
                if (acc == null)
                {
                    throw new ApplicationException("Invalid login or password");
                }

                acc.Xp += GlobalConst.XpForMissionOrBots;

                var mission = db.Missions.Single(x => x.Name == missionName);

                if (score != 0)
                {
                    var scoreEntry = mission.MissionScores.FirstOrDefault(x => x.AccountID == acc.AccountID);
                    if (scoreEntry == null)
                    {
                        scoreEntry = new MissionScore()
                        {
                            MissionID = mission.MissionID, AccountID = acc.AccountID, Score = int.MinValue
                        };
                        mission.MissionScores.Add(scoreEntry);
                    }

                    if (score > scoreEntry.Score)
                    {
                        var max = mission.MissionScores.Max(x => (int?)x.Score);
                        if (max == null || max <= score)
                        {
                            mission.TopScoreLine = login;
                            acc.Xp += 150; // 150 for getting top score
                        }
                        scoreEntry.Score           = score;
                        scoreEntry.Time            = DateTime.UtcNow;
                        scoreEntry.MissionRevision = mission.Revision;
                        scoreEntry.GameSeconds     = gameSeconds;
                    }
                }
                acc.CheckLevelUp();
                db.SubmitChanges();

                // ====================
                // campaign stuff
                ProgressCampaign(acc.AccountID, mission.MissionID, missionVars);
            }
        }
Exemplo n.º 3
0
    public Type GetNextActivityType(MissionScore score, Percentage newScore, ActivityResult newActivityResult, P p)
    {
        if (newActivityResult == null)
        {
            return(score.GetCurrentActivity());
        }

        var previousActivity = newActivityResult.ActivityType;


        var scoreBasedActivity = previousActivity;

        if (newScore >= Percentage.OneHundred)
        {
            var nextNode = _activityOrder.Find(previousActivity).Next;
            if (nextNode == null)
            {
                //nextNode = _activityOrder.Last;
                return(HackToShowActivityTransitionAtTheEnd());
            }

            scoreBasedActivity = nextNode.Value;
        }
        else if (newScore <= Percentage.Zero)
        {
            var previousNode = _activityOrder.Find(previousActivity).Previous;
            if (previousNode == null)
            {
                previousNode = _activityOrder.First;
            }

            scoreBasedActivity = previousNode.Value;
        }

        return(scoreBasedActivity);
    }
        public void SubmitMissionScore(string login, string passwordHash, string missionName, int score, int gameSeconds, string missionVars = "")
        {
            missionName = Mission.GetNameWithoutVersion(missionName);

            using (var db = new ZkDataContext())
            {
                var acc = AuthServiceClient.VerifyAccountHashed(login, passwordHash);
                if (acc == null)
                {
                    Trace.TraceWarning("Invalid login attempt for {0}", login);
                    System.Threading.Thread.Sleep(new Random().Next(2000));
                }

                acc.Xp += GlobalConst.XpForMissionOrBots;

                var mission = db.Missions.Single(x => x.Name == missionName);

                if (score != 0 || mission.RequiredForMultiplayer)
                {
                    var scoreEntry = mission.MissionScores.FirstOrDefault(x => x.AccountID == acc.AccountID);
                    if (scoreEntry == null)
                    {
                        scoreEntry = new MissionScore()
                        {
                            MissionID = mission.MissionID, AccountID = acc.AccountID, Score = int.MinValue
                        };
                        mission.MissionScores.Add(scoreEntry);
                    }

                    if (score > scoreEntry.Score)
                    {
                        var max = mission.MissionScores.Max(x => (int?)x.Score);
                        if (max == null || max <= score)
                        {
                            mission.TopScoreLine = login;
                            acc.Xp += 150; // 150 for getting top score
                        }
                        scoreEntry.Score           = score;
                        scoreEntry.Time            = DateTime.UtcNow;
                        scoreEntry.MissionRevision = mission.Revision;
                        scoreEntry.GameSeconds     = gameSeconds;
                    }
                }

                acc.CheckLevelUp();
                db.SaveChanges();

                if (!acc.CanPlayMultiplayer)
                {
                    if (
                        db.Missions.Where(x => x.RequiredForMultiplayer)
                        .All(y => y.MissionScores.Any(z => z.AccountID == acc.AccountID)))
                    {
                        acc.CanPlayMultiplayer = true;
                        db.SaveChanges();
                        Global.Server.PublishAccountUpdate(acc);
                        Global.Server.GhostPm(acc.Name, "Congratulations! You are now authorized to play MultiPlayer games!");
                    }
                }
            }
        }
Exemplo n.º 5
0
 public GameState()
 {
     LetterProficiency = new List <LetterProficiency>();
     Score             = new MissionScore();
 }
Exemplo n.º 6
0
    Activity CreateStartActivity(MissionScore score)
    {
        var type = score.GetCurrentActivity();

        return(Instantiate(type, _groupFactory.GetGroup1(), ActivityDifficulty.Normal));
    }