Samstag, 16. November 2013

Buttons fertig

So, hier also ein kleiner Bericht über die momentane Entwicklung.

Ich habe soweit die Buttons fertig :)
Von Aussehen passt alles schon mal, man hat zudem verschiedene Möglichkeiten das Aussehen manuell zu ändern.

Mögliche manuelle Anpassungen der Buttons:
  • eigene Schriftarten
    • über button.Font = ...;
    • auch über den Konstruktor anpassbar
  • spezielle Schrift- & Hintergrundfarbe
    • über button.fontColor = new Color(...);
      ( Schriftfarbe )
    • über button.bkgColor = new Color(...);
      ( Hintergrundfarbe )
    • auch über den Konstruktor anpassbar
  • eigene Textur
    • nur über button.texture = ...; anpassbar
Bisher enthaltene Methoden:
public Boolean Hover(){ }
    // Prüft ob die Maus über dem Button ist
public Boolean IsPressed(){ }
    // Prüft ob der Button gedrückt wurde
public void Draw(){ }
    // Zeichnet den Button

Verbindung Control - Fenster:
Ich habe mich dann gefragt wie ich es hinkriege, dass ein Control quasi zum Fenster gehört. Das wollte ich so haben, weil ich dann nur sagen muss window.Draw(); und das Fenster dann "sein" Controls selbst zeichnen soll. Dadurch muss ich nicht Button1.Draw(); Button2.Draw() ... machen.

Ich habe also eine Liste erstellt, in der nur Buttons gespeichert werden, somit kann ich ganz einfach Methoden der Buttons aufrufen.
Zudem habe ich jedem Buttons das Fenster-Handle zugewiesen, auf dessen Fenster es sich gerade befindet.

public class Window
{
    public List<Button> Button = new List<Button>();
    // ... ( Andere Variablen, Konstruktor, etc. )
    public void Draw()
    {
        // Erst Fenster ansich zeichnen
        for (int i = 0; i < Button.Count; i++)
        {
            Button[i].Draw();
        }
    }
}
public class Button
{
    Arengu game;
    // ...
    public Button(Arengu winHandle, ...)
    {
        this.game = winHandle;
    }
}

Somit kann ich vom Fenster aus Button-Methoden aufrufen und umgekehrt.

Hier ein Bild, wie es im Spiel aussehen wird:

Was als nächstes kommt ( allgemein ):
  • Hauptmenü
    • Liste im Spiel-laden Menü
  • Neue Controls
    • Label
    • Liste ( mit Scrollbalken )
    • Evtl.: CheckBoxen
mfg
Hauke

Kommentare:

  1. Sehr Gut! Ein kleiner Tipp von mir:
    Erstelle ein Interface IWindowElement (oder so) das die Methoden Draw (und vielleicht Update?) enthält. Alle Fensterelemente wie Buttons und so leitest du von diesem Interface ab.

    Was bringt dir das? Ganz einfach:
    * In der Window Klasse kannst du einfach eine Liste machen, anstatt eine eigene Liste für Buttons, usw. zu erstellen.
    * Wenn du später mal ein neues GUI-Element hinzufügst, musst du die Window Klasse nicht verändern!

    Hier ein beispiel:

    http://i39.tinypic.com/vyw6br.png

    AntwortenLöschen
    Antworten
    1. Danke :)!
      Der Tipp mit dem Interface ist wirklich gut, wäre damit wirklich etwas einfacher.
      Leider erben alle Control-Klassen schon von einer Klasse, in der Texturen, Schriftarten, Farben, etc., die überall gebraucht werden, gespeichert sind.
      Im Moment glaub ich lasse ich es erstmal so, wie es ist, da ich möchte, dass alles fürs erste funktioniert, danach werde ich definitiv optimieren und da habe ich deine Idee natürlich immer im Hinterkopf :)

      mfg
      Hauke

      Löschen
    2. Nunja wenn du eine Basisklasse hast ist es ja genau das selbe, mach einfach eine Liste aus der Basisklasse :D

      Löschen
  2. Hallo Codertalent, ;)
    Passt zwar nicht ganz zum Thema, aber ich habe Dich und deinen Blog auf BlogZug gefunden und da Du auch gerne das ein oder andere Spiel zockst, wollte ich Dich kurz darauf aufmerksam machen, dass ich derzeit das Spiel NATURAL SELECTION 2 zur Verlosung freigegeben hab. Wenn es Dich also interessiert, klick doch einfach mal vorbei, es ist umsonst und man hat nichts zu verlieren: http://goo.gl/he2cEp

    Weiterhin frohes bloggen und einen guten Highscore wünsche ich!

    AntwortenLöschen
  3. Hi,

    bin froh, dass ich dein Projekt weiter verfolge. Deine Ergebnisse sehen bis jetzt super aus. Bin auf die erste Demo gespannt ^^

    lg
    Saik0

    AntwortenLöschen
    Antworten
    1. Hallo,

      das freut mich. Ich bin auch gespannt und da die Ferien vor der Tür stehen kann es auch nicht mehr Jahre dauern, bis die erste Pre-Alpha Version released wird ;) aber ich will nicht zu viel versprechen, schließlich steht auch das ABI vor der Tür ;)

      mfg
      Hauke

      Löschen
  4. Hey! Mir gefällt dein Blog bzw. dein Projekt sehr gut! Ich bin auf der Suche nach interessanten Leuten für unser Forum und möchte dich hiermit einfach mal einladen zu uns :)

    Wir würden uns freuen!

    Ansonsten weiter so und lg

    locke

    AntwortenLöschen