Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Überarbeitung von Entities, Komponenten und Extensions #245

Conversation

HierGibtEsDrachen
Copy link

Ein bisschen was überarbeitet.
Neue Interfaces für Extensions und grundlegende Mechanismen.
Simulation hoffentlich nicht verschlechtert. Wobei sie jetzt anders ist aber kann ich notfalls wieder ändern.
UI dynamischer gestaltet.
Entity angepasst.

Copy link
Member

@Gallimathias Gallimathias left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also erstmal danke für deine Mitarbeit.

Dann ein paar dinge.

  1. Bitte wähle einen aussagekräftigeren Titel
  2. Werde bitte in deinem Kommentar deutlicher was du gemacht hast und welche konsequenzen das hat
  3. Erläutere bitte die Todo's die du im Code hinzugefügt hast. Es wäre auch schön zusammenfassend in deiner Beschreibung zu lesen was noch getan werden muss
  4. Bitte beachte unsere Coding Richtlinien CodeStyles

Da das eine größere Änderung ist, kann man die nicht einfach so mergen. Es wäre schön wenn du ein Video oder Blogeintrag oder ähnliches verlinkst, gemäß unserer Code of Conducts

Andernfalls wird es wohl noch sehr lange dauern bis wir das im Stream ausführlich bearbeiten können.

@@ -11,10 +11,8 @@ public class ComplexPlanetGenerator : IMapGenerator
public IPlanet GeneratePlanet(Guid universe, int id, int seed)
{
Index3 size = new Index3(12, 12, 3);
ComplexPlanet planet = new ComplexPlanet(id, universe, size, this, seed)
{
Generator = this
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Es steht zwar nicht explizit in den Richtlinien aber ich würde die Schreibweise mit dem Initialisier bevorzugen.

};
for (int i = 0; i < COLUMNS; i++)
grid.Columns.Add(new ColumnDefinition() { ResizeMode = ResizeMode.Parts, Width = 1 });
// TODO: wieder einfügen
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bitte verwende aussagekräftigere Todo's wenn du sie im Code machst. Was möchtest du hier wieder einfügen

public override string ToString()
{
// TODO: resx
return "Inventar";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auch hier bitte ein Aussagekräftigeres Todo verwenden.


private ToolBarComponent toolbar;

public Label activeToolLabel;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Es steht auch nicht explizit in den Richtlinien wird aber so gehandhabt. Bitte Namen von Öffentlichen Variablen und Prop's groß schreiben

{
if (!Visible || !Enabled)
return;
if(!(toolbar.Entity is IControllable con) || con.Controller == null)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Laut unseren Codingrichtlinen sind out Variablen nur innerhalb des if's scopes zu verwenden

Copy link
Author

@HierGibtEsDrachen HierGibtEsDrachen Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das ist im selben Scope. Da C# bei If und || operatoren abbricht bzw. nicht mehr weiter prüft sobald die Bedingung erfühlt ist.
Zweitens das ist kein out... das ist immer noch ein is. Selbst wenn C#7 das aufgemotzt hat.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ja ok das ist kein out habe ich übersehen. Aber nein das ist nicht der selbe Scope ^^ du returnst direkt unter dem if und verwendest somit das con außerhalb des if's s.h. zeile 101 oder 122. Das ist etwas was auch ich mir abgewöhnen muss wenn ich in octo programmiere.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok OK

/// </summary>
public interface IEntityController
{
// TODO: more buttons ... ?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bitte ausführlicher werden

@@ -25,6 +25,6 @@ public interface IExtension
/// Register the Components in the ExtensionsLoader
/// </summary>
/// <param name="extensionLoader">ExtensionsLoader</param>
void Register(IExtensionLoader extensionLoader);
void Register(IExtensionLoader extensionLoadere);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rechtschreibfehler?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Und das von dir :(

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hatte die Signatur erweitert und es mir dann doch anders überlegt. Aber ja Rechtschreibfehler!

Copy link
Member

@Gallimathias Gallimathias Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok war mir unsicher, hätte auch absichtlich sein können. Ok, dann einfach das e wegnehmen ^^.

@@ -10,6 +10,7 @@ public interface IMapPopulator
/// </summary>
int Order { get; }

//TODO: Kommentieren xD
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bitte machen und nicht auffordern

Copy link
Author

@HierGibtEsDrachen HierGibtEsDrachen Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Schau mal wer (und zwar nicht ich) die XML Comments für den Populator gemacht hat... ich hab wenigstens den Anstand es oben oben drüber zu schreiben.

    /// <param name="column00">TODO: Kommentieren</param>
    /// <param name="column01">TODO: Kommentieren</param>
    /// <param name="column10">TODO: Kommentieren</param>
    /// <param name="column11">TODO: Kommentieren</param>

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wir hatten "vor deiner zeit" auch eine seeeeeeehr geladene und heftige Diskussion zu dem Thema Todos direkt im code. An sich sind sie wenn die nachwelt was damit anfangen kann ok. Grundsätzlich stehe ich aber auf dem Standpunkt das man die Todo's so stark wie möglich reduzieren sollte bis spätestens zu einem pull request. Des weiteren meine Ich wenn du den Code an der stelle eh schon geschrieben hast, warum hast du nicht auch gleich kommentiert?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Der ist ja nicht von mir "(und zwar nicht ich) " weiß ja nicht mal was ich da sinnvolles kommentieren soll :P
aus column 00 ...

@@ -155,26 +160,26 @@ public void ExitGame()
/// <param name="entity">Neue Entity</param>
public void AddEntity(Entity entity)
{
if (entity == null)
throw new ArgumentNullException(nameof(entity));
if (entity == null) throw new ArgumentNullException(nameof(entity));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeStyle!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Der Coding Style tut mir in den Augen weh.
Aber bitte. Ich versuch mich dran zu halten.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wir haben ihn in der Gemeinschaft mit Abstimmung entschieden. Auch ich, auch lassi, Jvbsl und wer nicht alles müssen sich daran halten selbst wenn jeder von uns eigene coding style vorlieben hatt


if (entity == null)
throw new ArgumentNullException(nameof(entity));
if (entity == null) throw new ArgumentNullException(nameof(entity));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeStyle

@Gallimathias Gallimathias self-assigned this Feb 27, 2018
@Gallimathias Gallimathias added the input needed It waits for the answer to queries. label Feb 27, 2018
@XYZLassi
Copy link
Member

Puuh sowas zum Frühen morgen. Ich sag erstmal vielen Dank.
Ich bin die Änderungen mal kurz überflogen.

Aber ich hab leider ein paar Punkte anzumerken.
-Der Title ist nichts sagend und würde ich deshalb auch nicht mergen ^^
-Ich glaub nicht das Multiplayer das richtig ist zum mergen, aber das ist wohl Geschmackssache
-Es ist ein bissel viel

Mein Problem ist, es gibt viele Dinge die mir gefallen z.B.
-WorldService
-IUserInterfaceExtention
-... (noch einige andere finde die Stellen aber nicht aufanhibe mehr)

Und dann gibt es leider auch die, wo ich sage so lieber nicht z.B:
-Das zusammen Legen von Physik-Komponenten (Also die BewegungsComponenten)
-GetBlock im IChunk hat ein bool remove ????
-Das Zusammenlegen von Componenten direkt in Entities

Aber ich würd mir das heute Abend noch mal ein bissel besser Anschauen.

viele grüße
Lassi

@XYZLassi XYZLassi self-requested a review February 27, 2018 07:16
Copy link
Member

@Gallimathias Gallimathias left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hab es mal zusätzlich auf die schnelle Technisch auf meinem Toaster geprüft. Mir scheint das beim Merge ein wenig schief gelaufen ist. OctoAwesome ist in dem Eingereichten Stand weder Kompilier- noch ausführbar.

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="engenious" version="0.1.17" targetFramework="net461" />
Copy link
Member

@Gallimathias Gallimathias Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

engenious wird in der Network.dll benötigt

Copy link
Author

@HierGibtEsDrachen HierGibtEsDrachen Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Es ist doch der Sinn von einem Merge zu prüfen was geändert werden soll und was bleiben kann oder nicht ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Develop wäre deshalb als stand etwas geschickter gewesen, im stream läuft nicht immer alles perfekt :D

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Develop lief bei mir nicht :D

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was lief den im Develop nicht?

Nein ein Merge hat den zweck zwei Dinge zu einem zu vereinen. Der jenige der den merge ausführt muss, zumindestens wenn es quellcode betrifft, überprüfen oder wissen welches von welcher seite das gültige bzw. richtige ist.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Andere Wortwahl, naja egal jetzt.
In der SceneControl, Zeile 80.

        simpleShader = manager.Game.Content.Load<Effect>("simple");

Die Exceptions sind auch sehr aufschlussreich:
Message: ""
Stacktrace:
bei engenious.Graphics.Shader.Compile()
bei engenious.Content.Serialization.EffectTypeReader.Read(ContentManager manager, ContentReader reader)
bei engenious.Content.Serialization.ContentTypeReader`1.engenious.Content.Serialization.IContentTypeReader.Read(ContentManager manager, ContentReader reader)
bei engenious.Content.ContentManager.ReadAsset[T](String assetName)
bei engenious.Content.ContentManager.Load[T](String assetName)
bei OctoAwesome.Client.Controls.SceneControl..ctor(ScreenComponent manager, String style) in C:\Users\Klaus A\Source\Repos\octoawesome\OctoAwesome\OctoAwesome.Client\Controls\SceneControl.cs:Zeile 80.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wenn du genaueres wissen willst führ das ContentTool manuell aus und schau die Fehlermeldung dort an, wenn es dort keine gibt, läuft irgendetwas mächtig schief.
Welche OpenGL Version hast du denn? OpenGL 1.1 ist zu alt

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dieser Kommentar hängt mit #248 zusammen. Bitte schreibe deinen Kommentar dort nochmal @jvbsl der Pull Request ist ja schon zu.

extensionLoader.LoadExtensions();

DefinitionManager = new DefinitionManager(extensionLoader);
ResourceManager = new ResourceManager(extensionLoader, DefinitionManager, Settings);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Der ctor aufruf ist nicht korrekt. Der ResourceManager möchte vier Parameter haben.


extensionLoader = new ExtensionLoader(settings);

ExtensionLoader extensionLoader = new ExtensionLoader(settings);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ExtensionLoader gibt es nicht mehr als Prop

@@ -84,8 +76,23 @@ public OctoGame() : base()

Assets = new AssetComponent(this);
Components.Add(Assets);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hier kommt es zur NullReferenceException

Copy link
Author

@HierGibtEsDrachen HierGibtEsDrachen Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das ist ein Property aus dem Basis Klasse. Was habt ihr da bitte geändert?
Oder was hab ich falsch gemacht ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Property wird local in diesem Stand ausgeblendet also nein das ist nicht die Prop aus der Basisklasse ;)

@@ -106,10 +106,10 @@ internal sealed class SceneControl : Control
}
}

// TODO: valid planet id should be > 0
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum sollte 0 keine valide ID sein? Zählen ab 0 ist doch normal. Wir brauchen sowieso immer minimal einen Planeten und der ist halt Nummer 0.

@XYZLassi
Copy link
Member

Es kompiliert nicht bei mir,
Viele Datein sind nicht im Projekt mehr verlinkt, aber existieren

Siehe Video später

}

private void Initalize()
{
Copy link
Member

@XYZLassi XYZLassi Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum Initalize entfernen ???

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hast recht der muss wieder rein!


public WauziTestController()
{
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zu heavy, sollte mehr aufgesplittet sein. Zum Beispiel Slected Sides

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verstehe zwar nicht was du mir sagen willst, aber wenn es das ist was ich denke das es ist.

Nenene, das Interace bietet eine generalisiert Möglichkeit eine Entität mit dem Spieler als auch einer KI zu steuern. Hallte es nicht für Sinnvoll für jeden möglichen UserInput eine eigene Klassen oder Interface zu schreiben.
Ich sage, es ist nicht Heavy genug...

public float Radius => 1;
private IEntityController currentcontroller;
private float jumptime;
public WauziEntity() : base(true)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eigenschaften nicht änderbar

Copy link
Author

@HierGibtEsDrachen HierGibtEsDrachen Feb 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das ist die konkrete Implementierung einer einer Entity für Testzwecke die außerdem in Entwicklung ist.

Components.AddComponent(new BoxCollisionComponent());
Components.AddComponent(new ControllableComponent());
Components.AddComponent(new RenderComponent() { Name = "Wauzi", ModelName = "dog", TextureName = "texdog", BaseZRotation = -90 }, true);
this.currentcontroller = controller;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bitte Componenten lassen

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NEIN !


var blockplane = CollisionPlane.GetBlockCollisionPlanes(pos, movecomp.Velocity);

var planes = from pp in playerplanes
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Das kommt noch von mir und hat Bestandschutz, ist nur kopiert

int flatindex = GetFlatIndex(x, y, z);
ushort block = Blocks[flatindex];
if (removeblock) SetBlock(flatindex, 0);
return block;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum remove

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Immer noch der Rattenschwanz von oben ^^

return new Vector3(vector.X, vector.Y);
}
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gut gefällt

/// </summary>
Vector3 Body { get; }
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IEntity Definition ist zu speziell

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die ist noch nicht fertig ...

/// <param name="removeblock">Entfernt den Block.</param>
/// <returns>Die Block-ID an der angegebenen Koordinate</returns>
ushort GetBlock(int x, int y, int z, bool removeblock);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum remove

<Compile Include="EntityComponents\PositionComponent.cs" />
<Compile Include="EntityComponents\ToolBarComponent.cs" />
<Compile Include="EntityFilterAttribute.cs" />
<Compile Include="Extension.cs" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sind immer noch im Projekt, aber nicht verlinkt

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also bei mir sind sie weg :)

@XYZLassi
Copy link
Member

Hier noch das entsprechende Review-Video:https://www.youtube.com/watch?v=bRm7qTHiKqA

TODOs entfernt.
@HierGibtEsDrachen HierGibtEsDrachen changed the title :D Überarbeitung von Entities, Komponenten und Extensions Feb 27, 2018
@HierGibtEsDrachen
Copy link
Author

Also nach dem sehr guten Feedback überarbeite ich das jetzt nochmal und Merge es vorher lokal in die Develope.

@Gallimathias Gallimathias removed the input needed It waits for the answer to queries. label Feb 27, 2018
@ManuelHu
Copy link
Member

In diesem Pull Request sind einige Fragen zu den Conding Styles aufgetaucht. Ich habe gerade diese Fälle, jeweils wie @Gallimathias geschrieben hatte, in das Wiki eingepflegt.

@HierGibtEsDrachen HierGibtEsDrachen deleted the feature/multiplayer branch March 5, 2018 21:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants