Newer
Older
using System.Linq;
Marco Zimmer
committed
using System.Collections.Generic;
using UnityEngine;
using static CommunicationEvents;
public class GenerateDemoFiles
{
static bool firstcall = true;
Marco Zimmer
committed
public static void GenerateAll()
{
if (GameObject.FindObjectOfType<GadgetBehaviour>(true) == null) {
Debug.LogError("Cannot GenerateDemoFiles without populated GadgetManager");
return;
}
Marco Zimmer
committed
Debug.LogWarning("Generating and Overwriting Stage Files");
firstcall = false;
GenerateTreeStage();
GenerateRiverStage();
Marco Zimmer
committed
}
Marco Zimmer
committed
{
// Params
float minimalSolutionHight = 6;
// Generate Stage
Marco Zimmer
committed
number = 1,
category = "Demo Category",
name = "TechDemo A",
scene = "RiverWorld",
description = "Tree Stage",
use_install_folder = true,
Marco Zimmer
committed
//hierarchie = new List<Directories> { /*Directories.Stages*/ }
Marco Zimmer
committed
// needed to generate facts
Marco Zimmer
committed
StageStatic.StageOfficial = new Dictionary<string, Stage>
Marco Zimmer
committed
{
{ demo.name, demo },
};
Marco Zimmer
committed
StageStatic.SetStage(demo.name, false);
Marco Zimmer
committed
// Populate Solution
PointFact
Marco Zimmer
committed
buttom = new PointFact(Vector3.zero, Vector3.up, StageStatic.stage.solution),
top = new PointFact(Vector3.zero + Vector3.up * minimalSolutionHight, Vector3.up, StageStatic.stage.solution);
Marco Zimmer
committed
StageStatic.stage.solution.Add(buttom, out _, false, null, null);
StageStatic.stage.solution.Add(top, out _, true, null, null);
Marco Zimmer
committed
Marco Zimmer
committed
LineFact target = new LineFact(buttom.Id, top.Id, StageStatic.stage.solution);
var target_Id = StageStatic.stage.solution.Add(target, out _, true, null, null);
Marco Zimmer
committed
// Set Solution
Marco Zimmer
committed
StageStatic.stage.solution.ValidationSet =
Marco Zimmer
committed
{ new SolutionOrganizer.SubSolution(new HashSet<string> { target_Id }, null, null, new LineFactHightDirectionComparer()) };
Marco Zimmer
committed
StageStatic.stage.AllowedGadgets = null;
Marco Zimmer
committed
// Save
Marco Zimmer
committed
StageStatic.SetMode(StageStatic.Mode.Create);
Marco Zimmer
committed
StageStatic.stage.store();
Marco Zimmer
committed
}
{
// Params
float minimalSolutionHight = 6;
// Generate Stage
// TODO? use constructor
Stage demo = new Stage
{
Marco Zimmer
committed
number = 2,
category = "Demo Category",
name = "TechDemo B",
scene = "RiverWorld",
description = "River Stage",
use_install_folder = true,
Marco Zimmer
committed
//hierarchie = new List<Directories> { /*Directories.Stages*/ }
};
// needed to generate facts
StageStatic.StageOfficial = new Dictionary<string, Stage>
{
{ demo.name, demo },
};
StageStatic.SetStage(demo.name, false);
// Populate Solution
PointFact
buttom = new PointFact(Vector3.zero, Vector3.up, StageStatic.stage.solution),
top = new PointFact(Vector3.zero + Vector3.up * minimalSolutionHight, Vector3.up, StageStatic.stage.solution);
StageStatic.stage.solution.Add(buttom, out _, false, null, null);
StageStatic.stage.solution.Add(top, out _, true, null, null);
LineFact target = new LineFact(buttom.Id, top.Id, StageStatic.stage.solution);
var target_Id = StageStatic.stage.solution.Add(target, out _, true, null, null);
// Set Solution
StageStatic.stage.solution.ValidationSet =
new List<SolutionOrganizer.SubSolution> {
new SolutionOrganizer.SubSolution(new HashSet<string> { target_Id }, null, null, new LineFactHightDirectionComparer()),
new SolutionOrganizer.SubSolution(new HashSet<string> { target_Id }, null, null, new LineSpanningOverRiverWorldComparer()),
new SolutionOrganizer.SubSolution(null, new List<int> { 1 }, new List<int> { 0 }, new LineFactHightComparer()),
};
StageStatic.stage.AllowedGadgets = new() { new Pointer(), new Tape(), new AngleTool(), new LineTool(), new LotTool(), new Pendulum(), new Remover(), new EqualCircleGadget() };
StageStatic.stage.AllowedScrolls = new() { "OppositeLen", "AngleSum", "Pythagoras", "CircleScroll", "CircleAreaScroll", "ConeVolumeScroll", "TruncatedConeVolumeScroll", "CylinderVolumeScroll", "MidPoint", "CircleLineAngleScroll", "CircleLineAngleToAngle", "SupplementaryAngles" };
Marco Zimmer
committed
StageStatic.SetMode(StageStatic.Mode.Create);