public CursorController(FractalWindow mainWindow, GuiElement[] buttons) { ButtonsActive = new bool[buttons.Length]; AllButtons = buttons; MainWindow = mainWindow; MainWindow = mainWindow; CursorElement = new EmptyComponent(new RectangleF(0, 0, CursorSize, CursorSize)); mainWindow.ChildElements.Add(CursorElement); MainWindow.MouseDownEvent += MainWindowClick; for (int i = 0; i < AllButtons.Length; i++) { AllButtons[i].Enabled = false; mainWindow.ChildElements.Add(AllButtons[i]); AllButtons[i].FrameColor = Color.Red; AllButtons[i].MouseDownEvent += ButtonClick; } CursorElement.Enabled = false; CursorElement.DrawFrame = false; CursorElement.DragEvent += CursorDragged; CursorElement.LateDraw += CursorLateDraw; ExtendTimer.FinishedEvent += ExtendTimerFinish; ExtendTimer.Tick += ExtendTimerTick; TeleportTimer.FinishedEvent += TeleportTimerFinish; TeleportTimer.Tick += TeleportTimerTick; CursorElement.MouseDownEvent += CursorClick; MainWindow.Controller.FinishEvent += MainComputed; }
public MainCursorSystem(FractalWindow mainWindow) { MainWindow = mainWindow; float size = CursorController.ButtonSize; JuliaWindow = new FractalWindow(new RectangleF(MainWindow.Rect.Width - JuliaWindowSize - 20, 20, JuliaWindowSize, JuliaWindowSize)); //AllButtons[0] = PinButton = new EmptyComponent(new RectangleF(0, 0, ButtonSize, ButtonSize)); JuliaButton = new FractalWindow(new RectangleF(0, 0, size, size)); OrbitButton = new FractalWindow(new RectangleF(0, 0, size, size)); SoundButton = new EmptyComponent(new RectangleF(0, 0, size, size)); mainController = new CursorController(mainWindow, new GuiElement[] { OrbitButton, SoundButton, JuliaButton }); JuliaPeriodButton = new FractalWindow(new RectangleF(0, 0, size, size)); JuliaOrbitButton = new FractalWindow(new RectangleF(0, 0, size, size)); JuliaOffsetButton = new EmptyComponent(new RectangleF(0, 0, size, size)); juliaController = new CursorController(JuliaWindow, new GuiElement[] { JuliaOrbitButton, JuliaPeriodButton, JuliaOffsetButton } ); SoundButton.LateDraw += SoundButtonLateDraw; SoundButton.MouseDownEvent += SoundButtonClick; mainController.MenuUpdatedEvent += MenuUpdated; mainController.PositionEvent += CursorChanged; juliaController.MenuUpdatedEvent += JuliaMenuUpdated; juliaController.PositionEvent += JuliaCursorChanged; //AllButtons[3] = OrbitButton = new FractalWindow(new RectangleF(0, 0, ButtonSize, ButtonSize)); JuliaButton.Controller.Iterations = 1000; JuliaButton.Controller.Zoom = 0.14; JuliaButton.Controller.ColorScale = 2; JuliaButton.Controller.ColorOffset = 0.9f; JuliaButton.Controller.Julia = true; JuliaButton.Controller.JuliaPos = new Complex(-0.16037822, -1.0375242); JuliaButton.EnableInteraction = false; OrbitButton.Controller.CameraPos = new Complex(-0.0978, -0.747457); OrbitButton.Controller.Zoom = 0.15; OrbitButton.Controller.PeriodHighlight = 5; OrbitButton.OrbitActive = true; OrbitButton.OrbitPosition = new Complex(-0.03137, -0.79095); OrbitButton.OrbitScale = 0.5f; OrbitButton.StrippleScale = 1; OrbitButton.EnableInteraction = false; JuliaOrbitButton.EnableInteraction = false; JuliaOrbitButton.Controller.Zoom = 1.0; JuliaOrbitButton.OrbitActive = true; JuliaOrbitButton.Controller.CameraPos = new Complex(-0.3, -0.3); JuliaOrbitButton.Controller.JuliaPos = new Complex(-0.504455304069502, -0.562767203932328); JuliaOrbitButton.Controller.Julia = true; JuliaOrbitButton.OrbitScale = 0.5f; JuliaOrbitButton.StrippleScale = 1; JuliaOrbitButton.Controller.CenterDotStrength = 0; JuliaPeriodButton.EnableInteraction = false; JuliaPeriodButton.Controller.JuliaPos = new Complex(-0.153974876797236, -1.03769787591661); JuliaPeriodButton.Controller.Julia = true; JuliaPeriodButton.Controller.Zoom = 0.117; JuliaPeriodButton.Controller.FinalDotStrength = 0.001f; JuliaPeriodButton.fractalMath.CoefficientArray = JuliaWindow.Controller.CoefficientArray; JuliaPeriodButton.fractalMath.SetCoefficients(JuliaPeriodButton.Controller.JuliaPos); Complex Z = new Complex(0, 0); for (int i = 0; i < JuliaPeriodButton.Controller.Iterations; i++) { Z = JuliaPeriodButton.fractalMath.Compute(Z); } JuliaPeriodButton.Controller.FinalDotPosition = Z; //JuliaWindow = new FractalWindow(new RectangleF(20, 20, JuliaWindowSize, JuliaWindowSize)); JuliaWindow.Controller.Julia = true; JuliaWindow.Enabled = false; JuliaWindow.Controller.QuaternionJulia = false; JuliaSizeBox = new EmptyComponent(new RectangleF(5, JuliaWindowSize - JuliaSizeBoxSize - 5, JuliaSizeBoxSize, JuliaSizeBoxSize)); mainWindow.ChildElements.Add(JuliaWindow); JuliaWindow.ChildElements.Add(JuliaSizeBox); JuliaSizeBox.DragEvent += JuliaSizeBoxDrag; JuliaSizeBox.LateDraw += JuliaResizeLateDraw; JuliaSizeBox.DrawFrame = false; /*Julia3dButton = new FractalWindow(new RectangleF(5, 5, size, size)); * Julia3dButton.Controller.Julia=true; * Julia3dButton.Controller.QuaternionJulia = true; * * Julia3dCutoffButton = new FractalWindow(new RectangleF(10 + size, 5, size, size)); * Julia3dCutoffButton.Controller.Julia = true; * Julia3dCutoffButton.Controller.QuaternionJulia = true; * Julia3dCutoffButton.Controller.QuaternionJuliaCutoff = false; * Julia3dCutoffButton.Enabled = false; * JuliaWindow.ChildElements.Add(Julia3dButton); * JuliaWindow.ChildElements.Add(Julia3dCutoffButton); * Julia3dButton.ClickEvent += Julia3dClick; * Julia3dCutoffButton.ClickEvent += JuliaCutoffClick;*/ //CursorWorldPosition = new Complex(-Math.PI/4, -0.15); //CursorPosition = MainWindow.GetScreenFromWorld(CursorWorldPosition); //CursorActive = true; //CursorElement.Enabled = true; OrbitButton.MouseDownEvent += OrbitClick; JuliaButton.MouseDownEvent += JuliaClick; JuliaOrbitButton.MouseDownEvent += JuliaOrbitClick; JuliaPeriodButton.MouseDownEvent += JuliaPeriodClick; JuliaOffsetButton.MouseDownEvent += JuliaOffsetClick; }