public Menuestate Update(Gamestate gamestate, Menuestate menuestate) { //this.Gamestate = gamestate; this.Menuestate = menuestate; Editor.VorschauRuecksetzen(); Keymanager.Update(); Cursor.Update(Player.PositionCurrent, Windowmanager.MouseOverGUI, gamestate); Windowmanager.Update(); Aktionen(gamestate); foreach (Windowelement Eingabezelle in Windowmanager.Eingabezellen) EingabezelleWertLesen(Eingabezelle); return Menuestate; }
private void Aktionen(Gamestate gamestate) { //Keyboardaktionen-------------------------------------------------------------------------------------------------------------------------------------- for (int i = 0; i < Keymanager.Befehle.Count(); i++) { switch (Keymanager.Befehle[i]) { //Spiel case 1: Player.Accelerate(Richtung.Hoch); break; case 2: Player.Accelerate(Richtung.Runter); break; case 3: Player.Accelerate(Richtung.Links); break; case 4: Player.Accelerate(Richtung.Rechts); break; case 5: Levermanager.Use(); break; case 6: Player.DepressionEnabled = !Player.DepressionEnabled; break; //Kamera //case 5: Camera.Update(Richtung.Rechts); break; //case 6: Camera.Update(Richtung.Links); break; //case 7: Camera.Update(Richtung.Hoch); break; //case 8: Camera.Update(Richtung.Runter); break; //Debug & Menue // Debug Toogle case 20: DebugView.setFlag(DebugFlag.PlayerStats, false); break; case 21: DebugView.setFlag(DebugFlag.CollisonShape, true); break; case 22: DebugView.setFlag(DebugFlag.ObjectInformation, true); break; case 23: DebugView.setFlag(DebugFlag.ObjectmanagerStats, false); break; case 24: DebugView.setFlag(DebugFlag.EditorStats, false); break; case 25: DebugView.setFlag(DebugFlag.Inputstats, false); break; case 26: DebugView.setFlag(DebugFlag.KammeraStats, false); break; case 27: DebugView.setFlag(DebugFlag.Pertikle, true); break; case 28: DebugView.setFlag(DebugFlag.BackgrundStats, false); break; case 29: DebugView.setFlag(DebugFlag.WindowStats, false); break; //Depression Flags case 40: Depression.setFlag(DepressionState.InvertMove); break; case 41: Depression.setFlag(DepressionState.Slow); break; case 42: Depression.setFlag(DepressionState.InvertScreen); break; case 43: Depression.setFlag(DepressionState.ModifyWorld); break; case 44: Depression.setFlag(DepressionState.ReduceFOV); break; case 45: Depression.setFlag(DepressionState.Srink); break; case 46: Depression.setFlag(DepressionState.GrayScal); break; //case 11: if (Menuestate == Menuestate.Pause) Menuestate = Menuestate.Continue; else if (gamestate != Gamestate.Menue) { Menuestate = Menuestate.Pause; Windowmanager.AddWindow(Windowtype.MainMenue); Keymanager.TastenMenü(); bg.Stop(); } break; //Gamestate = Gamestate.Exit; break; case 11: switch (gamestate) { case Gamestate.Editor: if (Editor.VectorWaehlen) Editor.VectorWaehlen = false; else { Menuestate = Menuestate.Pause; Windowmanager.AddWindow(Windowtype.MainMenue); Keymanager.TastenMenü(); bg.Stop(); } break; case Gamestate.Game: Menuestate = Menuestate.Pause; Windowmanager.AddWindow(Windowtype.MainMenue); Keymanager.TastenMenü(); bg.Stop(); break; case Gamestate.Menue: if (Menuestate == Menuestate.Pause) Menuestate = Menuestate.Continue; break; } break; case 997: if (Menuestate != Menuestate.Started) Menuestate = Menuestate.StartEditor; break; //Gamestate = Gamestate.Editor; Editor.Starten(); break; case 998: Debug = !Debug; break; case 999: Collision = !Collision; break; //Editor case 2000: Player.PositionCurrent.X -= Editor.AuswahlScrolling; break; case 2001: Player.PositionCurrent.X += Editor.AuswahlScrolling; break; case 2002: Menuestate = Menuestate.LeaveEditor; break; //Gamestate = Gamestate.Game; Editor.Beenden(); break; //Eingabezellen case 3001: Editor.AuswahlLayer = Convert.ToInt32(Keymanager.Texteingabe); break; case 3002: Editor.AuswahlScrolling = Convert.ToInt32(Keymanager.Texteingabe); break; case 3003: Editor.AuswahlSkalierung = (float)Convert.ToDouble(Keymanager.Texteingabe) / 100; break; case 3004: Editor.Raster = Convert.ToInt32(Keymanager.Texteingabe); break; case 3005: Editor.AuswahlHintergrund.versatzY = Convert.ToInt32(Keymanager.Texteingabe); Backgroundmanager.Update(); break; case 3006: Editor.AuswahlHintergrund.Scrollgeschwindigkeit.X = (float)Convert.ToDouble(Keymanager.Texteingabe) / 100; break; case 3007: Editor.AuswahlHintergrund.Scrollgeschwindigkeit.Y = (float)Convert.ToDouble(Keymanager.Texteingabe) / 100; break; case 3008: Editor.AuswahlHintergrund.Transparenz = (float)Convert.ToDouble(Keymanager.Texteingabe) / 100; break; case 3009: Editor.ChangeTool(Editortool.Start); Editor.NewLevel(Keymanager.Texteingabe); break; case 3010: Editor.AuswahlEvent.Name = Keymanager.Texteingabe; break; case 3016: Editor.AuswahlTrigger.Position.X = Convert.ToInt32(Keymanager.Texteingabe); break; case 3017: Editor.AuswahlTrigger.Wert = Convert.ToInt32(Keymanager.Texteingabe); break; case 3019: Editor.AuswahlCondition.Position.X = Convert.ToInt32(Keymanager.Texteingabe); break; case 3020: Editor.AuswahlCondition.Depression = Convert.ToInt32(Keymanager.Texteingabe); break; case 3022: Editor.AuswahlEvent.CooldownStart = Convert.ToInt32(Keymanager.Texteingabe) * 60; break; case 3024: Editor.AuswahlAction.Wert = Convert.ToInt32(Keymanager.Texteingabe); break; case 3033: Levelmanager.AktuellesLevel.Walkline = Convert.ToInt32(Keymanager.Texteingabe); Player.Ground = Convert.ToInt32(Keymanager.Texteingabe); break; case 3036: Levelmanager.AktuellesLevel.DepressionRate = (float)Convert.ToDouble(Keymanager.Texteingabe) / 100; Player.DepressionRate = (float)Convert.ToDouble(Keymanager.Texteingabe) / 100; break; case 3037: Editor.RasterOffset = Convert.ToInt32(Keymanager.Texteingabe); break; case 3038: Levelmanager.AktuellesLevel.VordergrundAbdunkelung = Convert.ToInt32((Convert.ToDouble(Keymanager.Texteingabe) / 100) * 255); break; case 3039: Editor.AuswahlLever.Name = Keymanager.Texteingabe; break; case 3046: Editor.AuswahlAction.Layer = Convert.ToInt32(Keymanager.Texteingabe); break; case 3048: Editor.AuswahlAction.Skalierung = (float)Convert.ToDouble(Keymanager.Texteingabe) / 100; break; case 3054: Editor.Autosaveintervall = Convert.ToInt32(Keymanager.Texteingabe) * 60; break; //case 3055: Editor.AuswahlHintergrund.Startposition = Convert.ToInt32(Keymanager.Texteingabe); break; //case 3056: Editor.AuswahlHintergrund.Endposition = Convert.ToInt32(Keymanager.Texteingabe); break; } } //UI-Aktionen------------------------------------------------------------------------------------------------------------------------------------------- switch (Windowmanager.Befehl) { //Hauptmenü case 1: Menuestate = Menuestate.New; break; //case 2: Menuestate = Menuestate.Load; break; case 3: Menuestate = Menuestate.Exit; Levelmanager.AutoSaveEditor(); break; //case 4: Menuestate = Menuestate.Settings; break; //Editor: Toolfenster case 10: Windowmanager.AddWindow(Windowtype.Editor); break; case 11: Windowmanager.RemoveWindow(Windowtype.Editor); break; case 12: Windowmanager.AddWindow(Windowtype.Infofenster); break; case 13: Editor.ChangeTool(Editortool.Editoreinstellungen); break; case 14: Editor.ChangeTool(Editortool.Laden); break; case 15: Levelmanager.SaveLevelEditor(); Editor.RückmeldungAnzeigen = 100; break; case 16: Editor.ChangeTool(Editortool.Leveleinstellungen); break; case 17: Editor.ChangeTool(Editortool.Hintergruende); break; case 18: Editor.ChangeTool(Editortool.Objektkategorie); break; case 19: Editor.ChangeTool(Editortool.Events); break; case 20: Editor.ChangeTool(Editortool.Gegner); break; case 21: Editor.ChangeTool(Editortool.Items); break; case 22: Editor.ChangeTool(Editortool.Schalter); break; case 29: Menuestate = Menuestate.LeaveEditor; break; //Gamestate = Gamestate.Game; Editor.Beenden(); break; case 30: Menuestate = Menuestate.Exit; Levelmanager.AutoSaveEditor(); break; //Gamestate = Gamestate.Exit; break; case 31: Editor.ChangeTool(Editortool.Neu); break; //Editor: Infofenster case 100: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Infofenster); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Infofenster).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Infofenster).Feld.Y); break; //Fenster verschieben case 101: Windowmanager.RemoveWindow(Windowtype.Infofenster); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen case 102: Editor.Rasterplatzierung = false; break; case 103: Editor.Rasterplatzierung = true; break; case 104: Editor.AuswahlRichtung = Richtung.Links; break; case 105: Editor.AuswahlRichtung = Richtung.Rechts; break; //Editor: Editoreinstellungsfenster case 200: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Editoreinstellungen); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Editoreinstellungen).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Editoreinstellungen).Feld.Y); break; //Fenster verschieben case 201: Windowmanager.RemoveWindow(Windowtype.Editoreinstellungen); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //Editor: Editoreinstellungsfenster case 298: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Neu); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Neu).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Neu).Feld.Y); break; //Fenster verschieben case 299: Windowmanager.RemoveWindow(Windowtype.Neu); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //Editor: Map-Laden Fenster case 300: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Laden); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Laden).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Laden).Feld.Y); break; //Fenster verschieben case 301: Windowmanager.RemoveWindow(Windowtype.Laden); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //310-349 als Bereich vergeben //Editor: Hintergrundtextur Fenster case 400: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Hintergrundtextur); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Hintergrundtextur).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Hintergrundtextur).Feld.Y); break; //Fenster verschieben case 401: Windowmanager.RemoveWindow(Windowtype.Hintergrundtextur); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //410-449 als Bereich vergeben //Editor: Leveleinstellungsfenster case 500: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Leveleinstellungen); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Leveleinstellungen).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Leveleinstellungen).Feld.Y); break; //Fenster verschieben case 501: Windowmanager.RemoveWindow(Windowtype.Leveleinstellungen); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen case 502: if (Levelmanager.AktuellesLevel.Name != "Stadt") { System.IO.Directory.Delete(@"Levels\" + Levelmanager.AktuellesLevel.Name, true); Levelmanager.Levels.Remove(Levelmanager.AktuellesLevel); Levelmanager.LoadLevel("Stadt"); } break; //Editor: Hintergründeauswahlfenster case 600: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Hintergruende); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Hintergruende).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Hintergruende).Feld.Y); break; //Fenster verschieben case 601: Windowmanager.RemoveWindow(Windowtype.Hintergruende); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //610-649 als Bereich vergeben case 650: Backgroundmanager.Backgrounds.Add(new Background("Neu", new Vector2(0, 0), 1.0f, 0, 0, 0, Contentmanager)); Editor.ChangeTool(Editortool.Start); Editor.ChangeTool(Editortool.Hintergruende); //Hintergrundsliste neu Laden für Buttonerstellung break; //Editor: Hintergrundoptionsfenster case 700: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Hintergrund); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Hintergrund).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Hintergrund).Feld.Y); break; //Fenster verschieben case 701: Windowmanager.RemoveWindow(Windowtype.Hintergrund); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen case 702: Editor.ChangeTool(Editortool.Hintergruende); break; //Zurück //710-749 als Bereich vergeben case 750: Editor.ChangeTool(Editortool.Hintergrundtextur); break; case 751: int TempInt = Backgroundmanager.Backgrounds.IndexOf(Editor.AuswahlHintergrund); if (TempInt < Backgroundmanager.Backgrounds.Count() - 1) { Background TempBackground = Backgroundmanager.Backgrounds[Backgroundmanager.Backgrounds.IndexOf(Editor.AuswahlHintergrund) + 1]; Backgroundmanager.Backgrounds[TempInt + 1] = Backgroundmanager.Backgrounds[TempInt]; Backgroundmanager.Backgrounds[TempInt] = TempBackground; } break; case 752: TempInt = Backgroundmanager.Backgrounds.IndexOf(Editor.AuswahlHintergrund); if (Backgroundmanager.Backgrounds.IndexOf(Editor.AuswahlHintergrund) > 0) { Background TempBackground = Backgroundmanager.Backgrounds[TempInt - 1]; Backgroundmanager.Backgrounds[TempInt - 1] = Backgroundmanager.Backgrounds[TempInt]; Backgroundmanager.Backgrounds[TempInt] = TempBackground; } break; case 753: Backgroundmanager.Backgrounds.Remove(Editor.AuswahlHintergrund); Editor.ChangeTool(Editortool.Hintergruende); break; //Editor: Objektkategoriefenster case 800: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Objektkategorie); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Objektkategorie).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Objektkategorie).Feld.Y); break; //Fenster verschieben case 801: Windowmanager.RemoveWindow(Windowtype.Objektkategorie); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //810-849 als Bereich vergeben //Editor: Objektvariationsfenster case 900: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Objektvariante); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Objektvariante).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Objektvariante).Feld.Y); break; //Fenster verschieben case 901: Windowmanager.RemoveWindow(Windowtype.Objektvariante); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen case 902: if (Editor.Tool == Editortool.Objektvariante) Editor.ChangeTool(Editortool.Objektkategorie); else if (Editor.Tool == Editortool.Aktion) { Editor.ChangeTool(Editortool.Event); Editor.ChangeTool(Editortool.Aktion); } break; //Zurück //910-949 als Bereich vergeben -> Auswahl //950-990 als Bereich vergeben -> Vorschau //Editor: Eventsfenster case 1000: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Events); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Events).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Events).Feld.Y); break; //Fenster verschieben case 1001: Windowmanager.RemoveWindow(Windowtype.Events); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //1110-1149 als Bereich vergeben case 1050: Eventmanager.NewEvent(); //Neues Event Editor.ChangeTool(Editortool.Start); Editor.ChangeTool(Editortool.Events); break; //Eventliste neu Laden für Buttonerstellung //Editor: Eventfenster case 1060: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Event); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Event).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Event).Feld.Y); break; //Fenster verschieben case 1061: Windowmanager.RemoveWindow(Windowtype.Event); //Fenster schließen Windowmanager.RemoveWindow(Windowtype.Ausloeser); Windowmanager.RemoveWindow(Windowtype.Bedingung); Windowmanager.RemoveWindow(Windowtype.Aktion); Editor.ChangeTool(Editortool.Start); break; case 1062: Editor.ChangeTool(Editortool.Events); break; //Zurück case 1063: Editor.AuswahlEvent.Triggers.Add(new Eventtrigger(Enemymanager, Mathe, Player)); //Neuer Auslöser Editor.ChangeTool(Editortool.Start); Editor.ChangeTool(Editortool.Event); break; //Eventfenster neu Laden für Buttonerstellung case 1064: Editor.AuswahlEvent.Conditions.Add(new Eventcondition(Mathe, Player)); //Neue Bedingung Editor.ChangeTool(Editortool.Start); Editor.ChangeTool(Editortool.Event); break; //Eventfenster neu Laden für Buttonerstellung case 1065: Editor.AuswahlEvent.Actions.Add(new Eventaction(Mathe, Player, Levelmanager, Enemymanager, Depression, Eventmanager, Objectmanager, Objectdatabase,bg)); //Neue Aktion Editor.ChangeTool(Editortool.Start); Editor.ChangeTool(Editortool.Event); break; //Eventfenster neu Laden für Buttonerstellung case 1066: Eventmanager.Events.Remove(Editor.AuswahlEvent); Editor.ChangeTool(Editortool.Events); break; //Event löschen //1100-1199 als Bereich vergeben //Editor: Eventausloeser case 1200: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Ausloeser); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Ausloeser).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Ausloeser).Feld.Y); break; //Fenster verschieben case 1201: Editor.ChangeTool(Editortool.Event); break; //Zurück case 1209: Editor.AuswahlEvent.Triggers.Remove(Editor.AuswahlTrigger); Editor.ChangeTool(Editortool.Event); break; //Auslöser löschen //1210-1249 als Bereich vergeben //Editor: Eventbedingung case 1300: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Bedingung); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Bedingung).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Bedingung).Feld.Y); break; //Fenster verschieben case 1301: Editor.ChangeTool(Editortool.Event); break; //Zurück case 1309: Editor.AuswahlEvent.Conditions.Remove(Editor.AuswahlCondition); Editor.ChangeTool(Editortool.Event); break; //Bedingung löschen //1310-1349 als Bereich vergeben //Editor: Eventaktion case 1400: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Aktion); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Aktion).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Aktion).Feld.Y); break; //Fenster verschieben case 1401: Editor.ChangeTool(Editortool.Event); break; //Zurück case 1409: Editor.AuswahlEvent.Actions.Remove(Editor.AuswahlAction); Editor.ChangeTool(Editortool.Event); break; //Aktion löschen //1410-1449 als Bereich vergeben //Editor: Eventelementtyp case 1500: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Typ); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Typ).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Typ).Feld.Y); break; //Fenster verschieben //case 1501: Windowmanager.RemoveWindow(Windowtype.Typ); break; //Fenster schließen case 1501: if (Editor.AuswahlTrigger != null) Editor.ChangeTool(Editortool.Ausloeser); else if (Editor.AuswahlCondition != null) Editor.ChangeTool(Editortool.Bedingung); else if (Editor.AuswahlAction != null) Editor.ChangeTool(Editortool.Aktion); break; //Zurück //1510-1549 als Bereich vergeben //Editor: Gegnerfenster case 1600: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Gegner); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Gegner).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Gegner).Feld.Y); break; //Fenster verschieben case 1601: Windowmanager.RemoveWindow(Windowtype.Gegner); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //1610-1649 als Bereich vergeben -> Auswahl //1650-1690 als Bereich vergeben -> Vorschau //Editor: Itemfenster case 1700: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Items); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Items).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Items).Feld.Y); break; //Fenster verschieben case 1701: Windowmanager.RemoveWindow(Windowtype.Items); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //1710-1749 als Bereich vergeben -> Auswahl //1750-1790 als Bereich vergeben -> Vorschau //Editor: Schalterfenster case 1800: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Lever); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Lever).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Lever).Feld.Y); break; //Fenster verschieben case 1801: Windowmanager.RemoveWindow(Windowtype.Lever); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen case 1802: Editor.ChangeTool(Editortool.Schalter); break; //Zurück case 1803: Editor.VectorWaehlen = true; break; case 1809: Levermanager.Levers.Remove(Editor.AuswahlLever); Editor.ChangeTool(Editortool.Schalter); break; //Schalter löschen //1810-1849 als Bereich vergeben -> Auswahl case 1850: Levermanager.AddLever(); Editor.ChangeTool(Editortool.Start); Editor.ChangeTool(Editortool.Schalter); break; //Schalterliste neu Laden für Buttonerstellung //Editor: Schaltereinstellungsfenster case 1900: Cursor.Fenster = Windowmanager.GetWindowOfType(Windowtype.Levers); Cursor.Bezugspunkt = new Vector2(Cursor.Mouseposition.X - Windowmanager.GetWindowOfType(Windowtype.Levers).Feld.X, Cursor.Mouseposition.Y - Windowmanager.GetWindowOfType(Windowtype.Levers).Feld.Y); break; //Fenster verschieben case 1901: Windowmanager.RemoveWindow(Windowtype.Levers); Editor.ChangeTool(Editortool.Start); break; //Fenster schließen //Eingabezellen case 3000: Editor.AnzeigenKollision = !Editor.AnzeigenKollision; break; case 3001: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Infofenster), 5); break; case 3002: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Editoreinstellungen), 4); break; case 3003: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Infofenster), 11); break; case 3004: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Infofenster), 15); break; case 3005: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Hintergrund), 7); break; case 3006: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Hintergrund), 9); break; case 3007: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Hintergrund), 11); break; case 3008: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Hintergrund), 13); break; case 3009: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Neu), 3); break; case 3010: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Event), 6); break; case 3011: Editor.ChangeTool(Editortool.Typ); break; case 3012: Editor.Rasterplatzierung = !Editor.Rasterplatzierung; break; case 3013: if (Editor.AuswahlRichtung == Richtung.Links) Editor.AuswahlRichtung = Richtung.Rechts; else Editor.AuswahlRichtung = Richtung.Links; break; case 3014: switch (Editor.AuswahlObjektebene) { case Objektebene.Hintergrund: Editor.AuswahlObjektebene = Objektebene.Spielfeld; break; case Objektebene.Spielfeld: Editor.AuswahlObjektebene = Objektebene.Vordergrund; break; case Objektebene.Vordergrund: Editor.AuswahlObjektebene = Objektebene.Hintergrund; break; } break; case 3015: Editor.AuswahlEvent.Repeat = !Editor.AuswahlEvent.Repeat; break; case 3016: Editor.VectorWaehlen = true; break; case 3017: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Ausloeser), 5); break; case 3018: Editor.AuswahlTrigger.Ausrichtung = !Editor.AuswahlTrigger.Ausrichtung; break; case 3019: switch (Editor.AuswahlAction.Gegneraktion) { case Gegneraktionstyp.Erstellen: Editor.AuswahlAction.Gegneraktion = Gegneraktionstyp.Entfernen; break; case Gegneraktionstyp.Entfernen: Editor.AuswahlAction.Gegneraktion = Gegneraktionstyp.Status; break; case Gegneraktionstyp.Status: Editor.AuswahlAction.Gegneraktion = Gegneraktionstyp.Erstellen; break; } Editor.ChangeTool(Editortool.Event); Editor.ChangeTool(Editortool.Aktion); break; case 3020: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Bedingung), 5); break; case 3021: Editor.AuswahlCondition.Ausrichtung = !Editor.AuswahlCondition.Ausrichtung; break; case 3022: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Event), 13); break; case 3023: Editor.AuswahlAction.Ausrichtung = !Editor.AuswahlAction.Ausrichtung; break; case 3024: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Aktion), 7); break; case 3025: switch (Editor.AuswahlAction.DepressionState) { case DepressionState.GrayScal: Editor.AuswahlAction.DepressionState = DepressionState.InvertMove; break; case DepressionState.InvertMove: Editor.AuswahlAction.DepressionState = DepressionState.InvertScreen; break; case DepressionState.InvertScreen: Editor.AuswahlAction.DepressionState = DepressionState.ModifyWorld; break; case DepressionState.ModifyWorld: Editor.AuswahlAction.DepressionState = DepressionState.ReduceFOV; break; case DepressionState.ReduceFOV: Editor.AuswahlAction.DepressionState = DepressionState.Slow; break; case DepressionState.Slow: Editor.AuswahlAction.DepressionState = DepressionState.Srink; break; case DepressionState.Srink: Editor.AuswahlAction.DepressionState = DepressionState.GrayScal; break; } break; case 3026: switch (Editor.AuswahlAction.Effektwechsel) { case Effektwechsel.Einschalten: Editor.AuswahlAction.Effektwechsel = Effektwechsel.Ausschalten; break; case Effektwechsel.Ausschalten: Editor.AuswahlAction.Effektwechsel = Effektwechsel.Umschalten; break; case Effektwechsel.Umschalten: Editor.AuswahlAction.Effektwechsel = Effektwechsel.Einschalten; break; } break; case 3027: switch (Editor.AuswahlAction.Gegnertyp) { case Enemytype.Greif: Editor.AuswahlAction.Gegnertyp = Enemytype.Messerkreatur; break; case Enemytype.Messerkreatur: Editor.AuswahlAction.Gegnertyp = Enemytype.Schatten; break; case Enemytype.Schatten: Editor.AuswahlAction.Gegnertyp = Enemytype.Wolf; break; case Enemytype.Wolf: Editor.AuswahlAction.Gegnertyp = Enemytype.Greif; break; } break; case 3028: if (Editor.AuswahlAction.Richtung == Richtung.Links) Editor.AuswahlAction.Richtung = Richtung.Rechts; else Editor.AuswahlAction.Richtung = Richtung.Links; break; case 3029: switch (Editor.AuswahlAction.Gegnerstatus) { case Enemystate.Idle: Editor.AuswahlAction.Gegnerstatus = Enemystate.Attack; break; //case Enemystate.Chase: Editor.AuswahlAction.Gegnertyp = Enemytype.Schatten; break; case Enemystate.Attack: Editor.AuswahlAction.Gegnerstatus = Enemystate.Idle; break; //case Enemystate.Dead: Editor.AuswahlAction.Gegnertyp = Enemytype.Greif; break; } break; case 3030: foreach (Level level in Levelmanager.Levels) { if (Editor.AuswahlAction.Name == level.Name) { if (Levelmanager.Levels.IndexOf(level) + 1 == Levelmanager.Levels.Count()) Editor.AuswahlAction.Name = Levelmanager.Levels[0].Name; else Editor.AuswahlAction.Name = Levelmanager.Levels[Levelmanager.Levels.IndexOf(level) + 1].Name; break; } } break; case 3031: Editor.AnzeigenEvents = !Editor.AnzeigenEvents; break; case 3032: Editor.AuswahlHeilung = !Editor.AuswahlHeilung; break; case 3033: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Leveleinstellungen), 7); break; case 3034: Editor.VectorWaehlen = true; Editor.NurX = true; break; case 3035: Editor.VectorWaehlen = true; Editor.NurY = true; break; case 3036: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Leveleinstellungen), 9); break; case 3037: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Infofenster), 13); break; case 3038: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Leveleinstellungen), 11); break; case 3039: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Lever), 3); break; case 3040: Editor.AuswahlLever.Einmalig = !Editor.AuswahlLever.Einmalig; break; case 3041: break; case 3042: Editor.AuswahlLever.Betätigt = !Editor.AuswahlLever.Betätigt; break; case 3043: Editor.AuswahlLever.Rücksetzen = !Editor.AuswahlLever.Rücksetzen; break; case 3044: switch (Editor.AuswahlAction.Objektaktion) { case Objektaktionstyp.Erstellen: Editor.AuswahlAction.Objektaktion = Objektaktionstyp.Entfernen; break; case Objektaktionstyp.Entfernen: Editor.AuswahlAction.Objektaktion = Objektaktionstyp.Austauschen; break; case Objektaktionstyp.Austauschen: Editor.AuswahlAction.Objektaktion = Objektaktionstyp.Erstellen; break; } Editor.ChangeTool(Editortool.Event); Editor.ChangeTool(Editortool.Aktion); break; case 3045: Windowmanager.RemoveWindow(Windowtype.Aktion); Editor.AuswahlObjektkategorie = Editor.AuswahlAction.Objecttyp; Windowmanager.AddWindow(Windowtype.Objektvariante); Windowmanager.GetWindowOfType(Windowtype.Objektvariante).Feld = Windowmanager.GetWindowPosition(Windowtype.Aktion); int LäuferY = 40; int LäuferLinksklick = 910; foreach (Objectvariation Variation in Editor.AuswahlAction.Objecttyp.Variante) { Windowmanager.GetWindowOfType(Windowtype.Objektvariante).AddButton(new Button(new Rectangle(10, LäuferY, 200, 15), Contents.Meiryo8, Variation.Name, false, Color.Blue, LäuferLinksklick, 0, LäuferLinksklick + 40)); LäuferY += 15; LäuferLinksklick++; } break; case 3046: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Aktion), 9); break; case 3047: Windowmanager.RemoveWindow(Windowtype.Aktion); Editor.AuswahlObjektkategorie = Editor.AuswahlAction.Objecttyp; Windowmanager.AddWindow(Windowtype.Objektkategorie); Windowmanager.GetWindowOfType(Windowtype.Objektkategorie).Feld = Windowmanager.GetWindowPosition(Windowtype.Aktion); LäuferY = 40; LäuferLinksklick = 810; foreach (ObjectType Objekttyp in Objectdatabase.Objektdaten) { Windowmanager.GetWindowOfType(Windowtype.Objektkategorie).AddButton(new Button(new Rectangle(10, LäuferY, 200, 15), Contents.Meiryo8, Objekttyp.ObjectClass.ToString(), false, Color.Blue, LäuferLinksklick, 0, 0)); LäuferY += 15; LäuferLinksklick++; } break; case 3048: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Aktion), 15); break; case 3049: switch (Editor.AuswahlAction.Objektebene) { case Objektebene.Hintergrund: Editor.AuswahlAction.Objektebene = Objektebene.Spielfeld; break; case Objektebene.Spielfeld: Editor.AuswahlAction.Objektebene = Objektebene.Vordergrund; break; case Objektebene.Vordergrund: Editor.AuswahlAction.Objektebene = Objektebene.Hintergrund; break; } break; case 3050: switch (Editor.AuswahlTrigger.Enemytype) { case Enemytype.Greif: Editor.AuswahlTrigger.Enemytype = Enemytype.Messerkreatur; break; case Enemytype.Messerkreatur: Editor.AuswahlTrigger.Enemytype = Enemytype.Schatten; break; case Enemytype.Schatten: Editor.AuswahlTrigger.Enemytype = Enemytype.Wolf; break; case Enemytype.Wolf: Editor.AuswahlTrigger.Enemytype = Enemytype.Greif; break; } break; case 3051: switch (Editor.AuswahlTrigger.Enemystate) { case Enemystate.Attack: Editor.AuswahlTrigger.Enemystate = Enemystate.Dead; break; case Enemystate.Dead: Editor.AuswahlTrigger.Enemystate = Enemystate.Idle; break; case Enemystate.Idle: Editor.AuswahlTrigger.Enemystate = Enemystate.Attack; break; } break; case 3052: Editor.AuswahlStatisch = !Editor.AuswahlStatisch; break; case 3053: Editor.AuswahlAction.Statisch = !Editor.AuswahlAction.Statisch; break; case 3054: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Editoreinstellungen), 6); break; case 3055: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Hintergrund), 15); break; case 3056: Keymanager.NeueEingabe(Windowmanager.GetWindowOfType(Windowtype.Hintergrund), 17); break; //Zahlenbereiche abfragen------------------------------------------------------------------------------------------------------------------------------- default: Zahlenbereiche(gamestate); break; } }
protected override void Update(GameTime gameTime) { Menuestate TempMenuestate = Inputmanager.Update(Gamestate, Menuestate); //Input verarbeiten und resultierenden Menüzustand speichern if (Menuestate != TempMenuestate) //Vergleich mit aktuellem Menüzustand -> Bei Änderung Menü starten und Zustand übernehmen { Gamestate = Gamestate.Menue; Menuestate = TempMenuestate; } switch (Gamestate) { case Gamestate.Menue: switch (Menuestate) { case Menuestate.Started: menue.Update(gameTime); if (Settings.Music) { if (BackgroundMusic.isStooped()) BackgroundMusic.changeTrackList(menueTheme); BackgroundMusic.Update(); } else BackgroundMusic.Stop(); break; case Menuestate.Pause: menue.Update(gameTime); if (Settings.Music) { if (BackgroundMusic.isStooped()) BackgroundMusic.changeTrackList(menueTheme); BackgroundMusic.Update(); } break; case Menuestate.New: Gamestate = Gamestate.Game; Windowmanager.ClearWindows(); Keymanager.TastenSpiel(); if (Settings.Music) { BackgroundMusic.Stop(); BackgroundMusic.changeTrackList(levelTheme); } break; case Menuestate.Continue: Gamestate = Gamestate.Game; Windowmanager.ClearWindows(); Keymanager.TastenSpiel(); if (Settings.Music) BackgroundMusic.Resume(); break; case Menuestate.Load: break; case Menuestate.Save: break; case Menuestate.Options: break; case Menuestate.Controls: break; case Menuestate.Credits: break; case Menuestate.Exit: this.Exit(); break; case Menuestate.StartEditor: Gamestate = Gamestate.Editor; Editor.ChangeTool(Editortool.Start); Windowmanager.ClearWindows(); Windowmanager.AddWindow(Windowtype.Topbar); Windowmanager.AddWindow(Windowtype.Editor); Keymanager.TastenEditor(); Cursor.Kamera.Zoom = 1; break; case Menuestate.LeaveEditor: Gamestate = Gamestate.Game; Windowmanager.ClearWindows(); Keymanager.TastenSpiel(); break; } break; case Gamestate.Game: //IsMouseVisible = false; DepressionHandler.Update(); if (onGo > 0) modShader(); Animationsmanager.Update((float)gameTime.ElapsedGameTime.TotalSeconds); Player.Update((float)gameTime.ElapsedGameTime.TotalSeconds); Backgroundmanager.Update(); Objectmanager.Update(); Levermanager.Update(); Itemmanager.Update(Gamestate, (float)gameTime.ElapsedGameTime.TotalSeconds); Enemymanager.Update(Gamestate, (float)gameTime.ElapsedGameTime.TotalSeconds); if (Player.Playerstate != Playerstates.Dead) Eventmanager.Update(); //testEmitter.Update(gameTime); //rainEmitter.Update(gameTime); if (Settings.Sound) light.checkDistanze(Player.PositionCurrent); //rain.checkDistanze(Player.PositionCurrent); if (Settings.Music) BackgroundMusic.Update(); break; case Gamestate.Editor: //IsMouseVisible = true; Animationsmanager.Update((float)gameTime.ElapsedGameTime.TotalSeconds); Editor.Update(); Itemmanager.Update(Gamestate, (float)gameTime.ElapsedGameTime.TotalSeconds); Enemymanager.Update(Gamestate, (float)gameTime.ElapsedGameTime.TotalSeconds); Backgroundmanager.Update(); Objectmanager.Update(); break; //case Gamestate.Exit: // this.Exit(); // break; } Debug.Update(); base.Update(gameTime); }