Skip to content
Snippets Groups Projects
Level.cs 1.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System.Collections.Generic;
    using UnityEngine;
    
    using static CommunicationEvents;
    
    Richard Marcus's avatar
    Richard Marcus committed
    
    //TODO: think about having one Level class and then different subclasses like TreeLevel, Tangenslevel?
    public class Level : MonoBehaviour
    {
    
        //Solving game parameters
    
    Richard Marcus's avatar
    Richard Marcus committed
        void Start()
    
        // Start is called before the first frame update
    
    Richard Marcus's avatar
    Richard Marcus committed
        {
    
            // TODO: do not generate! -> load from somewhere
    
            PointFact
                buttom = new PointFact(Vector3.zero, Vector3.up, SolutionManager),
                top = new PointFact(Vector3.zero + Vector3.up * minimalSolutionHight, Vector3.up, SolutionManager);
    
            SolutionManager.Add(buttom, out _);
            SolutionManager.Add(top, out _, true);
    
    Richard Marcus's avatar
    Richard Marcus committed
    
    
            LineFact target = new LineFact(buttom.Id, top.Id, SolutionManager);
    
            Solution.Add(SolutionManager[SolutionManager.Add(target, out _, true)]);
    
    
            SolutionSet = (SolutionManager,
                new List<(HashSet<string>, FactComparer)> 
                { (new HashSet<string> { target.Id, buttom.Id }, new LineFactHightDirectionComparer()) });
    
    Richard Marcus's avatar
    Richard Marcus committed
    
        public static bool gameSolved()
        {
    
                LevelFacts.DynamiclySolved(Solution, out _, out List<Fact> hits, FactComparer: new LineFactHightDirectionComparer());
    
            bool solvedEXP =
                LevelFacts.DynamiclySolvedEXP(SolutionSet, out _, out List<List<string>> hitsEXP);
    
    
    Richard Marcus's avatar
    Richard Marcus committed
    
    
            if (solved)
                foreach (var hit in hits)
                    AnimateExistingFactEvent.Invoke(hit);
    
    
            if (solvedEXP)
                foreach (var hitlist in hitsEXP)
                    foreach(var hit in hitlist)
                        AnimateExistingFactEvent.Invoke(LevelFacts[hit]);
    
    
    Richard Marcus's avatar
    Richard Marcus committed
        }
    
    Richard Marcus's avatar
    Richard Marcus committed
    }