Exemple #1
0
 public override void Tick(World world)
 {
     if (Subjects.All(s => s.IsDead || !s.Info.HasTraitInfo <GuardInfo>()))
     {
         world.CancelInputMode();
     }
 }
Exemple #2
0
        protected override IEnumerable <Order> OrderInner(World world, CPos xy, MouseInput mi)
        {
            if (mi.Button != ExpectedButton)
            {
                yield break;
            }

            var target = FriendlyGuardableUnits(world, mi).FirstOrDefault();

            if (target == null || Subjects.All(s => s.IsDead))
            {
                yield break;
            }

            world.CancelInputMode();

            var queued = mi.Modifiers.HasModifier(Modifiers.Shift);

            foreach (var subject in Subjects)
            {
                if (subject != target)
                {
                    yield return(new Order(OrderName, subject, Target.FromActor(target), queued));
                }
            }
        }
        protected override IEnumerable <Order> OrderInner(World world, CPos xy, GestureSample gs)
        {
            if (gs.GestureType != ExpectedGestureType)
            {
                yield break;
            }

            var target = FriendlyGuardableUnits(world, gs).FirstOrDefault();

            if (target == null || Subjects.All(s => s.IsDead))
            {
                yield break;
            }

            world.CancelInputMode();

            var queued = false;

            foreach (var subject in Subjects)
            {
                if (subject != target)
                {
                    yield return(new Order(OrderName, subject, Target.FromActor(target), queued));
                }
            }
        }
        protected override IEnumerable <Order> OrderInner(World world, CPos xy, MouseInput mi)
        {
            if (mi.Button != ExpectedButton)
            {
                yield break;
            }

            var target = FriendlyGuardableUnits(world, mi).FirstOrDefault();

            if (target == null || Subjects.All(s => s.IsDead))
            {
                yield break;
            }

            world.CancelInputMode();
            foreach (var subject in Subjects)
            {
                if (subject != target)
                {
                    yield return new Order(OrderName, subject, false)
                           {
                               TargetActor = target
                           }
                }
            }
            ;
        }
Exemple #5
0
 /// <summary>
 /// Check if student has all subjects to get through to next class.
 /// </summary>
 /// <returns>True if rules are satisfied, false another.</returns>
 public bool Verify()
 {
     //For first class there must be 40 credits as minimum
     if (Class == 1)
     {
         return(Subjects.Where(k => k.Finished).Sum(k => k.Credits) >= 40);
     }
     //for other class there must be finished all subjects from previous class and must be 40 credits for current class subjects
     return(Subjects.All(k => k.Class == Class - 1 && k.Finished) && Subjects.Where(k => k.Class == Class && k.Finished).Sum(k => k.Credits) >= 40);
 }
Exemple #6
0
 private void AddSubjects(IEnumerable <string> newSubjects)
 {
     Subjects.AddRange(
         from newSubject in newSubjects
         where Subjects.All(ss => ss.Subject != newSubject)
         select new SetSubject {
         Set     = this,
         Subject = newSubject,
         SetID   = ID
     });
 }
Exemple #7
0
        public void Update(SetInfo si)
        {
            if (ID != si.ID)
            {
                throw new InvalidOperationException("Cannot update Set view model with data from another group");
            }

            Title    = si.Title;
            Author   = si.Author;
            Created  = si.Created;
            Modified = si.Modified;

            for (int i = 0; i < Subjects.Count; ++i)
            {
                if (!si.Subjects.Contains(Subjects[i].Subject))
                {
                    Subjects.RemoveAt(i);
                }
            }

            foreach (var subject in si.Subjects)
            {
                if (Subjects.All(svm => svm.Subject != subject))
                {
                    Subjects.Add(new SubjectViewModel(subject));
                }
            }

            switch (si.Editable)
            {
            case "groups": editPermissions = SetEditPermissions.Groups; break;

            case "password": editPermissions = SetEditPermissions.Password; break;

            default: editPermissions = SetEditPermissions.OnlyMe; break;
            }

            switch (si.Visibility)
            {
            case "public": visibility = SetVisibility.Public; break;

            case "groups": visibility = SetVisibility.Groups; break;

            case "password": visibility = SetVisibility.Password; break;

            default: visibility = SetVisibility.OnlyMe; break;
            }

            HasAccess     = si.HasAccess;
            hasDiscussion = si.HasDiscussion;
            Description   = si.Description;
            Uri           = si.Uri;

            if (si.Terms != null)
            {
                TermsLoaded = true;

                Terms.Clear();
                foreach (var ti in (IEnumerable <TermInfo>)si.Terms)
                {
                    Terms.Add(new TermViewModel(ti));
                }

                TermCount = Terms.Count;
            }
            else
            {
                TermCount = si.TermCount;
            }

            TermLanguageCode       = si.TermLanguageCode;
            DefinitionLanguageCode = si.DefinitionLanguageCode;
        }