Exemple #1
0
 public PTypeContext(DefinitionBuilder gc, String name, int minimum)
 {
     this.pc = gc;
     ptype   = new BuildParameterType {
         Game = gc.game, Name = name, Minimum = minimum
     };
 }
Exemple #2
0
        LevelStat LevelStatusIO(BuildParameterType tp, int lvl, List <BuildLevelParameter> levelParams)
        {
            var typeLevelParams = levelParams.Where(x => x.Parameter.Type.id == tp.id).ToList();
            var prevLevel       = typeLevelParams.Select(x => GetPreviousLevel(x));
            // minimum and limit have been processed
            // first, has nothing been done? dont panic then.
            var diff = typeLevelParams.Join(prevLevel, x => x.Parameter.id, x => x.Parameter.id, (l, p) => l.Parameter.Cost * (l.Amount - p.Amount)).Sum();
            var must = dal.Get <BuildParameterTypeLevelPoints>().SingleOrDefault(x => x.Type.id == tp.id && x.Level == lvl)?.Amount ?? 0;

            if (diff == 0)
            {
                return(must == 0 ? LevelStat.Ok : LevelStat.None);
            }
            else if (diff > must)
            {
                return(LevelStat.TooManySpent);
            }
            else if (diff < must)
            {
                return(LevelStat.TooFewSpent);
            }
            else
            {
                // check if requirments are met
                var reqs = dal.Get <BuildParameterRequiement>()
                           .Where(x => x.On != null)    //level restrictions already dealt with
                           .Where(x => typeLevelParams.Any(p => p.Parameter.id == x.Depend.id && p.Amount >= x.DAmount));
                Func <BuildParameterRequiement, int> reqAmt = x => levelParams.Single(l => l.Parameter.id == x.On.id).Amount;
                if (reqs.GroupBy(x => x.OrGroup)
                    .Any(y => y.All(x => reqAmt(x) < x.OAmount ^ x.Not)))
                {
                    return(LevelStat.RequirmentsNotMet);
                }
                else
                {
                    return(LevelStat.Ok); // no problem.
                }
            }
        }
Exemple #3
0
        public LevelStat LevelStatus(BuildParameterType tp, int lvl)
        {
            var levelParams = buildParams.Where(x => x.Level == lvl).ToList();

            return(LevelStatusIO(tp, lvl, levelParams));
        }