Let’s Code mit Jens Episode 16 released

Ich habe Episode 16 meiner Videoreihe “Let’s Code mit Jens” veröffentlicht:

Aktuelles Thema: Posteingang

Sonderfall ist gelöst. Es geht weiter mit dem List-Control. Hinzufügen und Löschen von Elementen aus der Liste steht auf dem Programm.

Aber was war nun eigentlich das Problem in der letzten Folge?

Im Test hatte ich für die Elemente der Liste eine Klasse, welche von MonoBehavior ableitet erstellt. Eine Instanz dieser Klasse sollte als Prefab (Muster) für alle weiteren Elemente von der Liste verwendet werden. Aber Unity hat sich beharrlich geweigert eine Instanz zu erstellen. Der Grund dafür ist, dass Unity von Klassen, die in einem Ordner namens Editor liegen und direkt von MonoBehavior ableiten, nicht erkennt, dass es sich um ein MonoBehavior handelt. Warum? Keine Ahnung. Wie auch immer, mit diesem Wissen geht es erstmal weiter.

Das Hinzufügen von Elementen wird komplett implementiert. Dabei hat die Klasse im öffentlichen Interface nur Methoden, um mit Modellen zu arbeiten. Die Darstellung ist quasi ein Implementierungsdetail.
Natürlich soll das nicht nur im Test mit Modellen klappen, sondern auch in Unity funktionieren, also werden zum Vorführen Elemente in die Liste gehängt.

Und wieder erwischt mit Unity eiskalt. Die Elemente sind zwar in der Liste, aber werden nicht dargestellt. Schon wieder rumfailen. Nach knapp 10 Minuten geben ich auf und machen eine Pause mit der Aufnahme und zu recherchieren, was da schon wieder nicht klappt.

Wenig später (halbe Stunde) finde ich tatsächlich die Lösung. Beim Kopieren des Musters wurde von Unity die Skalierung aller Achsen auf 0 gesetzt. Also unendlich klein. Die Skalierung aller Achsen auf 1 zu setzen hilft. Und kaum habe ich die Lösung eingebaut, fällt mir auf, dass Unity mir schon die ganze Zeit in der Konsole per Logeintrag versucht hat mitzuteilen, was da eigentlich schief geht und wie die eigentliche Lösung aussieht: Man nehme eine andere Überladung der Methode SetParent.
Mit diese Wissen klappt dann auch der Rest der Implementierung des Hinzufügens von Elementen.
Auch das Entfernen von Elementen klappt dann wie geschmiert.

Nächste Folge wird dann die Selektion eingebaut und das Control zum Abschluss gebracht.

Zur Erinnerung: Der Posteingang
Über den Posteingang erhält der Spieler Transportanfragen und später auch Rechnungen und Bewerbungen. Erreicht wird der Posteingang über das Kontextmenü der Städte, sofern die jeweilige Stadt eine Filiale beherbergt. Der Posteingang wird durch ein Fenster dargstellt. Eine Liste zeigt eine Übersicht aller unbearbeiteten Eingänge. Vorerst sind das ausschließlich Transportanfragen. Wählt der Spieler einen Eintrag in der Liste aus, werden in einer Detailansicht die genauen Einzelheiten angezeigt. Bei Transportanfragen sind das Details, wie zum Beispiel die Menge, die Art und das Ziel der Fracht, sowie die Bezahlung. Über Schaltflächen in der Detailansicht kann der Spieler die Transportanfrage annehmen oder ablehnen.


I released episode 16 of my German series “Let’s Code mit Jens”: https://youtu.be/E0jXixU-XNU

Actual topic: Mailbox
I go on with the addition and deletion of elements into the List-Control. The problem of the last video is solved: Do not use MonoBehavior classes, which are defined in the editor project. Unity does not recognize them!

After some design tweaks and a fail, which forces me to make a break of the video for research, I am able get the topic done.

In the next episode and will move on implementing the selection of elements of the list control.

Quick reminder for the mailbox:
The player gets transport requests and later bills and job applications through the mailbox. The player can open the mailbox via the context menu of a city, provided that the city locates a branch office of the cooperation. The mailbox is displayed inside a window. There a list shows an overview of all open entries. For the beginning entries are only transport requests. If the player selects such an entry, details of it are shown at a detail view of the mailbox. If the entry is a transport request these details will be information such as the amount, the type and the destination of the freight and also the payment for transportation. With the help of buttons, which are located inside the detail view, the player can accept or decline the transport request.

Advertisements

Let’s Code mit Jens Episode 15 released

Ich habe Episode 15 meiner Videoreihe “Let’s Code mit Jens” veröffentlicht:

Aktuelles Thema: Posteingang
Nachdem nun der Posteingang geöffnet und geschlossen werden kann, erstelle ich ab dieser Folge ein List-Control, welches alle Transportanfragen kompakt darstellen soll. Da es noch mehr Fenster geben wird, welche auch solche Listen benötigen, wird es ein allgemeines List-Control. Zu Beginn lege ich die benötigten UI-Elemente in Unity an und wechsle danach in den Code, um auch dieses Control testgetrieben zu entwickeln. Ich lege schonmal das erwartete öffentliche Interface des Controls an, ohne diese zu implementieren und starte mit der Methode zum Hinzufügen von Elementen.
Und zack! Unity erwischt mich eiskalt mit einem Sonderfall, der mich den Rest der Folge zum rumfailen bringt (die letzten 20 Minuten). Gefrustet breche ich die Folge ab, um ohne Aufnahme rauszufinden, was zum Teufel denn da los ist…

Das heißt, die nächste Folge geht dann weiter mit einer Lösung dieses Problems und der eigentlichen Implementierung des Controls.

Zur Erinnerung: Der Posteingang
Über den Posteingang erhält der Spieler Transportanfragen und später auch Rechnungen und Bewerbungen. Erreicht wird der Posteingang über das Kontextmenü der Städte, sofern die jeweilige Stadt eine Filiale beherbergt. Der Posteingang wird durch ein Fenster dargstellt. Eine Liste zeigt eine Übersicht aller unbearbeiteten Eingänge. Vorerst sind das ausschließlich Transportanfragen. Wählt der Spieler einen Eintrag in der Liste aus, werden in einer Detailansicht die genauen Einzelheiten angezeigt. Bei Transportanfragen sind das Details, wie zum Beispiel die Menge, die Art und das Ziel der Fracht, sowie die Bezahlung. Über Schaltflächen in der Detailansicht kann der Spieler die Transportanfrage annehmen oder ablehnen.


I released episode 15 of my German series “Let’s Code mit Jens”: https://youtu.be/BliZ3K8sSWc

Actual topic: Mailbox
The player can open and close the mailbox window, so I start creating a list control, which shall give an overview of transport requests. I will create more windows, which will need such a control too, so the control should be generic. First I arrange the required ui components inside of Unity and then I change to the code, because I want to develop this control test driven too. I create the expected public interface of the control without implementing it and start with the method for adding elements to the list.
Boom! Unity catches me red-handed with a special case, which gets me to fail around the rest of the episode. I stop the episode frustated to look for the reason and a solution off camera…

This means, I will show the solution of this problem in the next episode and will move on implementing the list control.

Quick reminder for the mailbox:
The player gets transport requests and later bills and job applications through the mailbox. The player can open the mailbox via the context menu of a city, provided that the city locates a branch office of the cooperation. The mailbox is displayed inside a window. There a list shows an overview of all open entries. For the beginning entries are only transport requests. If the player selects such an entry, details of it are shown at a detail view of the mailbox. If the entry is a transport request these details will be information such as the amount, the type and the destination of the freight and also the payment for transportation. With the help of buttons, which are located inside the detail view, the player can accept or decline the transport request.

Let’s Code mit Jens Episode 14 released

Ich habe Episode 14 meiner Videoreihe “Let’s Code mit Jens” veröffentlicht:

Aktuelles Thema: Posteingang
Ich sorge diese Folge dafür, dass das Fenster, welches seit der letzten Folge den Posteingang darstellen soll, auch wieder geschlossen werden kann. Dafür führe ich ein neues Interface und eine StrangeIoC View-Klasse ein.
Nun liegt die Logik zum Öffnen des Fensters an einer anderen Stelle, wie das Schließen des Fensters. Das heißt, zwei unterschiedliche Klassen haben das Wissen, wie man den Posteingang anzeigt bzw. schließt. Das passt so nicht.

Ich unterbreche die Aufnahme um über das Softwaredesign nachzudenken…

und komme mit einem Refactoring der Logik zum Anzeigen von Fenstern zurück. Das heißt, vieles aus der vorherigen Folge wird überarbeitet. Zum Beispiel hat das HUD nichts mehr mit dem Öffnen des Posteingangs zu tun. Der WindowService, welcher Anfragen zum Öffnen des Posteingangs einfach nur an das HUD weitergeleitet hat, erhält mehr Logik und außerdem registriert sich beim Start des Spiels der Posteingang beim WindowService selbst. Da wird die Folge dann doch länger, wie ursprünglich gedacht…

In der nächsten Folge werde ich damit beginnen ein List-Control zu erstellen, um die Transportanfragen übersichtlich im Posteingang darstellen zu können. Unity bietet solch ein Control nicht fertig an, weshalb man dies selbst erledigen muss. Da in weiteren Fenstern auch Listen benötigt werden, liegt der Fokus darauf eine für Logistician allgemeingültige Liste zu erstellen.

Zur Erinnerung: Der Posteingang
Über den Posteingang erhält der Spieler Transportanfragen und später auch Rechnungen und Bewerbungen. Erreicht wird der Posteingang über das Kontextmenü der Städte, sofern die jeweilige Stadt eine Filiale beherbergt. Der Posteingang wird durch ein Fenster dargstellt. Eine Liste zeigt eine Übersicht aller unbearbeiteten Eingänge. Vorerst sind das ausschließlich Transportanfragen. Wählt der Spieler einen Eintrag in der Liste aus, werden in einer Detailansicht die genauen Einzelheiten angezeigt. Bei Transportanfragen sind das Details, wie zum Beispiel die Menge, die Art und das Ziel der Fracht, sowie die Bezahlung. Über Schaltflächen in der Detailansicht kann der Spieler die Transportanfrage annehmen oder ablehnen.


I released episode 14 of my German series “Let’s Code mit Jens”: https://youtu.be/oqaZ8xtduu8

Actual topic: Mailbox
This episode is about the closing of the window, which shows the mailbox. Therefore I introduce a new interface and a StrangeIoC View class.
The logic for the opening of the window is placed at a different area then the closing. This means, one class knows how to open the mailbox and another completely different class knows how to close the mailbox again. No way. Can’t leave it this way.

I take a break to think about the software design…

and come back with a refactoring of the display of windows. Much of the last episode is changed. For example the HUD does not know anything about the opening of the mailbox anymore. The window service, which dispatched requests for opening of the mailbox to the HUD, gets more logic and the mailbox registers itself at the window service at the start of the game. Therefore this episode gets longer than thought…

In the next episode I will begin to create a list control, which shall show the transport requests in an overview. Unity does not have such a control, so I have to do it myself. Because I will need more windows with lists, the control will become generic.

Quick reminder for the mailbox:
The player gets transport requests and later bills and job applications through the mailbox. The player can open the mailbox via the context menu of a city, provided that the city locates a branch office of the cooperation. The mailbox is displayed inside a window. There a list shows an overview of all open entries. For the beginning entries are only transport requests. If the player selects such an entry, details of it are shown at a detail view of the mailbox. If the entry is a transport request these details will be information such as the amount, the type and the destination of the freight and also the payment for transportation. With the help of buttons, which are located inside the detail view, the player can accept or decline the transport request.

Let’s Code mit Jens Episode 13 released

Ich habe Episode 13 meiner Videoreihe “Let’s Code mit Jens” veröffentlicht:

Ein neues Thema steht an: der Posteingang.
Über den Posteingang erhält der Spieler Transportanfragen und später auch Rechnungen und Bewerbungen. Erreicht wird der Posteingang über das Kontextmenü der Städte, sofern die jeweilige Stadt eine Filiale beherbergt. Der Posteingang wird durch ein Fenster dargestellt. Eine Liste zeigt eine Übersicht aller unbearbeiteten Eingänge. Vorerst sind das ausschließlich Transportanfragen. Wählt der Spieler einen Eintrag in der Liste aus, werden in einer Detailansicht die genauen Einzelheiten angezeigt. Bei Transportanfragen sind das Details, wie zum Beispiel die Menge, die Art und das Ziel der Fracht, sowie die Bezahlung. Über Schaltflächen in der Detailansicht kann der Spieler die Transportanfrage annehmen oder ablehnen.

Auch dieses Thema wird einige Folgen in Anspruch nehmen: Zuerst muss das Fenster mit der Unity UI erstellt werden. Es muss geöffnet und geschlossen werden können. Dann wird eine Liste in Unity UI erstellt und diese muss über das Domain Model befüllt werden, welches auch erweitert werden muss. Der Detailbereich muss auch in Unity UI erstellt werden. Und in der letzten Folge zu diesem Thema wird dann alles rund gemacht.

In dieser Folge beginne ich mit dem Fenster mit Unity UI. Es erhält einen Bereich für den Titel (“Mailbox” + Stadtname) und einen Bereich für den Inhalt. Im Bereich für den Inhalt wird in einer späteren Folge die Liste und die Detailansicht dargestellt. Der Inhaltsbereich bleibt diese Folge erstmal leer, denn ich konzentriere mich darauf, dass das Fenster über das Kontextmenü geöffnet werden kann.

In der nächsten Folge sorge ich dafür. dass das Fenster auch wieder geschlossen werden kann. Danach werde ich mich um den Inhalt des Fensters kümmern.


I released episode 13 of my German series “Let’s Code mit Jens”: https://youtu.be/UqkMaHYMyTs

A new topic arises: The mailbox.
The player gets transport requests and later bills and job applications through the mailbox. The player can open the mailbox via the context menu of a city, provided that the city locates a branch office of the cooperation. The mailbox is displayed inside a window. There a list shows an overview of all open entries. For the beginning entries are only transport requests. If the player selects such an entry, details of it are shown at a detail view of the mailbox. If the entry is a transport request these detail will be for example the amount, the type and the destination of the freight and also the payment for transportation. The player can accept or decline a transport request through buttons at the detail view.

This topic will need some episodes too: First the window must be created with Unity UI and it must be possible to open and close the window. After that a list has to be created with Unity UI and the list has to be filled with data from the domain model, which itself has to be extended. The detail view has to be created with Unity UI, too. And the last episode of the topic will bring the whole mailbox to a round figure.

This episode I begin with the creation of the window with Unity UI. It gets an area for a header (“Mailbox” + city name) and an area for its content. The content area will get the list and the detail view in a later episode. This episode I will focus on opening the mailbox via the context menu of a city.

In the next episode I will implement, that the mailbox can be closed again. After that I will begin with the context of the window.

Let’s Code mit Jens Episode 12 released

Ich habe Episode 12 meiner Videoreihe “Let’s Code mit Jens” veröffentlicht:

Kurzbeschreibung:
Weiter geht es mit dem Kontextmenü für Städte.
In dieser Folge erstelle ich die Verknüpfung zwischen dem Koordinator und den Mediatoren der Kontextmenüs. Danach erzeuge ich ein sogenanntes PreFab aus der Stadt, die als Prototyp fungiert hat, und aktualisiere alle bisher angelegten Städte mit diesem PreFab. So haben nun alle Städte ein Kontextmenü.

Damit ist das Thema Kontextmenü abgeschlossen und ich kann nächste Folge beginnen einen Posteingang zu erstellen, in dem der Spieler Transportanfragen erhält. Den Posteingang kann der Spieler über das Kontextmenü, welches ich die letzten Folgen erstellt habe, erreichen.

Zur Erinnerung – Kontextmenü für Städte:
Städte sollen ein Kontextmenü erhalten.
Städte mit Filiale sollen Schaltflächen bieten, um den Posteingang der Stadt zu öffnen und LKWs zu versenden,
Städte ohne Filiale sollen eine Schaltfläche bieten, um eine Filiale in der Stadt zu eröffnen.


I released episode 12 of my German series “Let’s Code mit Jens”: https://youtu.be/5VAzC1d49lo

Short description:
I continue the work at the context menu of cities.
In this episode I connect the coordinator and all mediators. After that I create a so called PreFab from the city, which I used as prototype the last episodes, and actualize all existing cities with this PreFab. Now every city has its own context menu.

Now the topic context menu is done. With the next episode I will begin to create a mailbox, where the player will get transport requests. The player can reach the mailbox through the context menu, I created the last episodes.

Quick reminder for context menu of cities:
Every city gets its context menu.
The context menu of a city, which locates a branch office, gets buttons to open a mailbox and to send trucks.
The context menu of a city without branch office gets a button to open a branch office in this city.