public Object(Objectdatabase objektdatenbank, Animationsmanager animationsmanager, ObjectClass typ, int variante , Vector2 position, float skalierung, int layer, Objektebene objektebene, bool statisch) { this.Statisch = statisch; this.MaxSpeed = new Vector2(6, 12); this.Typ = typ; this.PositionCurrent = position; this.Skalierung = skalierung; this.Layer = layer; this.Variante = variante; this.Objektvariante = objektdatenbank.Auslesen(Typ, Variante); if (this.Objektvariante == null) return; this.Objektebene = objektebene; this.BearbeitungsID = (int)PositionCurrent.Y + (int)Objektvariante.Bearbeitungsverschiebung.Y + (Layer * 1000); if (Objektvariante.Animiert == true) { Animation = new Animation(Objektvariante.Textur, Objektvariante.Wiederholen, Objektvariante.Spalten, Objektvariante.Texturausschnitt, skalierung, Objektvariante.Geschwindigkeit); animationsmanager.AddAnimation(Animation); } }
public void AddObject(ObjectType typ, int variante, Vector2 position, float skalierung, int layer, Objektebene objektebene, bool statisch) { switch (objektebene) { case Objektebene.Hintergrund: ObjectsHintergrund.Add(new Object(Objektdatenbank, Animationsmanager, typ.ObjectClass, variante, new Vector2(position.X - (typ.Variante[variante].Texturausschnitt.Width / 2), position.Y - (typ.Variante[variante].Texturausschnitt.Height / 2)), skalierung, layer, objektebene, statisch)); break; case Objektebene.Spielfeld: ObjectsSpielebene.Add(new Object(Objektdatenbank, Animationsmanager, typ.ObjectClass, variante, new Vector2(position.X - (typ.Variante[variante].Texturausschnitt.Width / 2), position.Y - (typ.Variante[variante].Texturausschnitt.Height / 2)), skalierung, layer, objektebene, statisch)); break; case Objektebene.Vordergrund: ObjectsVordergrund.Add(new Object(Objektdatenbank, Animationsmanager, typ.ObjectClass, variante, new Vector2(position.X - (typ.Variante[variante].Texturausschnitt.Width / 2), position.Y - (typ.Variante[variante].Texturausschnitt.Height / 2)), skalierung, layer, objektebene, statisch)); break; } }
public void ObjektEditieren(Vector3 position, float skalierung, ObjectClass objectclass, int variante, Objektebene objektebene, bool statisch) { AddObject(new Object(Objektdatenbank, Animationsmanager, objectclass, variante, new Vector2(position.X, position.Y), skalierung, (int)position.Z, objektebene, statisch)); Bubblesort(); }
public Object PositionÜberprüfen(ObjectType typ, Vector3 position, Objektebene ebene) { switch (ebene) { case Objektebene.Hintergrund: for (int i = 0; i < ObjectsHintergrund.Count(); i++) { if ((typ.ObjectClass == ObjectsHintergrund[i].Typ) && (position.Z == ObjectsHintergrund[i].Layer) && (new Rectangle((int)(ObjectsHintergrund[i].PositionCurrent.X), (int)ObjectsHintergrund[i].PositionCurrent.Y, (int)(ObjectsHintergrund[i].Objektvariante.Texturausschnitt.Width * ObjectsHintergrund[i].Skalierung), (int)(ObjectsHintergrund[i].Objektvariante.Texturausschnitt.Height * ObjectsHintergrund[i].Skalierung)).Intersects(new Rectangle((int)position.X, (int)position.Y, 1, 1)))) { return ObjectsHintergrund[i]; } } break; case Objektebene.Spielfeld: for (int i = 0; i < ObjectsSpielebene.Count(); i++) { if ((typ.ObjectClass == ObjectsSpielebene[i].Typ) && (position.Z == ObjectsSpielebene[i].Layer) && (new Rectangle((int)(ObjectsSpielebene[i].PositionCurrent.X), (int)ObjectsSpielebene[i].PositionCurrent.Y, (int)(ObjectsSpielebene[i].Objektvariante.Texturausschnitt.Width * ObjectsSpielebene[i].Skalierung), (int)(ObjectsSpielebene[i].Objektvariante.Texturausschnitt.Height * ObjectsSpielebene[i].Skalierung)).Intersects(new Rectangle((int)position.X, (int)position.Y, 1, 1)))) { return ObjectsSpielebene[i]; } } break; case Objektebene.Vordergrund: for (int i = 0; i < ObjectsVordergrund.Count(); i++) { if ((typ.ObjectClass == ObjectsVordergrund[i].Typ) && (position.Z == ObjectsVordergrund[i].Layer) && (new Rectangle((int)(ObjectsVordergrund[i].PositionCurrent.X), (int)ObjectsVordergrund[i].PositionCurrent.Y, (int)(ObjectsVordergrund[i].Objektvariante.Texturausschnitt.Width * ObjectsVordergrund[i].Skalierung), (int)(ObjectsVordergrund[i].Objektvariante.Texturausschnitt.Height * ObjectsVordergrund[i].Skalierung)).Intersects(new Rectangle((int)position.X, (int)position.Y, 1, 1)))) { return ObjectsVordergrund[i]; } } break; } return null; }
//Variation innerhalb eines Typs um "modifikator" ändern (z.B. für Türen/Schalter) public void ChangeVariation(ObjectType typ, Vector3 position, Objektebene ebene, int variante) { Object TempObjekt = PositionÜberprüfen(typ, new Vector3(position.X, position.Y, position.Z), ebene); if (TempObjekt != null) switch (ebene) { case Objektebene.Hintergrund: ObjectsHintergrund[ObjectsHintergrund.IndexOf(TempObjekt)] = new Object(Objektdatenbank, Animationsmanager, TempObjekt.Typ, variante, TempObjekt.PositionCurrent, TempObjekt.Skalierung, TempObjekt.Layer, TempObjekt.Objektebene, TempObjekt.Statisch); break; case Objektebene.Spielfeld: ObjectsSpielebene[ObjectsSpielebene.IndexOf(TempObjekt)] = new Object(Objektdatenbank, Animationsmanager, TempObjekt.Typ, variante, TempObjekt.PositionCurrent, TempObjekt.Skalierung, TempObjekt.Layer, TempObjekt.Objektebene, TempObjekt.Statisch); break; break; case Objektebene.Vordergrund: ObjectsVordergrund[ObjectsVordergrund.IndexOf(TempObjekt)] = new Object(Objektdatenbank, Animationsmanager, TempObjekt.Typ, variante, TempObjekt.PositionCurrent, TempObjekt.Skalierung, TempObjekt.Layer, TempObjekt.Objektebene, TempObjekt.Statisch); break; break; } }