コード例 #1
0
        public CriticalValue FilterScore(
            CriticalValue score, ScoreableView source = null)
        {
            if (IsScoreFreezed || isDead)
            {
                return(new CriticalValue());
            }

            if (!score.IsCritical &&
                UnityEngine.Random.value <= CriticalScoreChance &&
                source != null &&
                source.GetComponent <SmashableView>() != null)
            {
                score.IsCritical = true;
                score.Value      =
                    Mathf.RoundToInt(score.Value * (1f + criticalScoreFactor));
            }

            for (int i = 0; i < scoreFilters.Count; ++i)
            {
                score = scoreFilters[i](score, source);
            }

            return(score);
        }
コード例 #2
0
        //[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "expert")]
        public async Task <ActionResult <CriticalValue> > PostCriticalValue(CriticalValue criticalValue)
        {
            _context.CriticalValues.Add(criticalValue);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetCriticalValue", new { id = criticalValue.Id }, criticalValue));
        }
コード例 #3
0
        public async Task <IActionResult> PutCriticalValue(int id, CriticalValue criticalValue)
        {
            if (id != criticalValue.Id)
            {
                return(BadRequest());
            }

            _context.Entry(criticalValue).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CriticalValueExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #4
0
        /**
         * @return Added score
         */
        public int AddScore(PlayerView player, ScoreableView scoreable)
        {
            CriticalValue initialScore = UnityEngine.Random.Range(
                scoreable.MinScore, scoreable.MaxScore + 1);
            CriticalValue finalScore =
                player.FilterScore(initialScore, scoreable);

            if (finalScore <= 0)
            {
                return(0);
            }

            Profiler.BeginSample("PlayerManager.AddScore()");
            player.Score += finalScore;
            var popup = (WorldSpaceTextPopupView)popupManager.Get(
                scoreWorldPopupType);

            popup.transform.localScale = finalScore.IsCritical ?
                                         new Vector3(1.5f, 1.5f, 1.5f) : Vector3.one;
            popup.Msg.text =
                strBuilder.Append('+').Append(finalScore).ToString();
            strBuilder.Length  = 0;
            popup.LookAtTarget = player.Camera;
            popup.PlaceAbove(scoreable.Collider.bounds);
            popupManager.Show(popup);
            Profiler.EndSample();
            return(finalScore);
        }