示例#1
0
文件: Object.cs 项目: 2Light/Insomnia
 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);
     }
 }
示例#2
0
 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;
     }
 }
示例#3
0
 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();
 }
示例#4
0
 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;
 }
示例#5
0
 //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;
         }
 }