2using System.Collections.Generic;
9 public partial class Game : GameObjectContainer
24 return Layers.FindAll( l => l.IgnoresZoom && l.RelativeTransition ==
Vector.
Zero );
26 return Layers.FindAll( l => l.IgnoresZoom && l.RelativeTransition ==
Vector.
Zero ).AsReadOnly();
37 get {
return Layers.FindAll( l => !l.IgnoresZoom || l.RelativeTransition !=
Vector.
Zero ); }
39 get {
return Layers.FindAll( l => !l.IgnoresZoom || l.RelativeTransition !=
Vector.
Zero ).AsReadOnly(); }
48 get {
return Layers.FirstIndex; }
56 get {
return Layers.LastIndex; }
64 get {
return Layers.Count; }
84 for (
int i = 0; i < 7; i++ )
102 if ( iObj ==
null )
return;
117 if ( iObj ==
null )
return;
160 throw new NotSupportedException(
"Object cannot be added twice" );
163 throw new NotSupportedException(
"Object cannot be added to multiple layers" );
177 if ( o ==
null )
throw new NullReferenceException(
"Tried to add a null object to game" );
183 List<IGameObject> result =
new List<IGameObject>();
235 foreach (var layer
in Layers)
250 foreach (var layer
in Layers)
287 #region GetObject methods
294 public List<GameObject>
GetObjects( Predicate<GameObject> condition )
296 List<GameObject> objs =
new List<GameObject>();
300 foreach ( var obj
in Layers[i].Objects )
304 if ( gobj !=
null && condition( gobj ) )
330 return GetObjects( o => tags.Contains<
string>( o.Tag as
string ) );
342 foreach ( var obj
in Layers[i].Objects )
346 if ( gobj !=
null && condition( gobj ) )
363 return GetObjects( obj => obj.IsInside( position ) );
376 Predicate<GameObject> isInsideRadius = delegate(
GameObject obj )
378 if ( IsJypeliWidget<GameObject>( obj ) )
return false;
380 Vector positionUp =
new Vector( position.
X, position.
Y + radius );
381 Vector positionDown =
new Vector( position.
X, position.
Y - radius );
382 Vector positionLeft =
new Vector( position.
X - radius, position.
Y );
383 Vector positionRight =
new Vector( position.
X + radius, position.
Y );
385 if ( obj.
IsInside( position ) )
return true;
386 if ( obj.
IsInside( positionUp ) )
return true;
387 if ( obj.
IsInside( positionDown ) )
return true;
388 if ( obj.
IsInside( positionLeft ) )
return true;
389 if ( obj.
IsInside( positionRight ) )
return true;
406 return GetFirstObject( obj => obj.IsInside( position ) && !IsJypeliWidget<GameObject>( obj ) );
420 return objs.Count > 0 ? objs[0] :
null;
434 return GetObjectsAt( position ).FindAll( obj => obj.Tag == tag );
448 return GetObjectsAt( position ).Find( obj => obj.Tag == tag );
478 return GetObjectsAt( position, radius ).Find( obj => obj.Tag == tag );
490 return GetObjects(palikka => !(palikka is
Widget) && palikka.IsBetween(pos1, pos2));
Kamera. Määrittää mikä osa pelitasosta on kerralla näkyvissä.
double ZoomFactor
Kameran zoomauskerroin. Oletuksena 1.0. Mitä suurempi zoomauskerroin, sitä lähempänä kamera on (esim ...
Vector WorldToScreen(Vector point)
Muuntaa annetun pisteen maailmankoordinaateista ruutukoordinaatteihin.
static void OnRemoveObject(IGameObject obj)
bool IsObjectOnScreen(IGameObject g)
Kertoo onko objekti ruudulla näkyvällä alueella.
void Add(Layer l)
Lisää oliokerroksen peliin.
IList< Layer > DynamicLayers
Kerrokset, joilla olevat pelioliot liikkuvat kameran mukana.
virtual void OnObjectAdded(IGameObject obj)
Kun olio lisätään kerrokselle
void ClearGameObjects()
Tuhoaa ja poistaa pelistä kaikki pelioliot (ml. fysiikkaoliot).
void Add(IGameObject o)
Lisää olion peliin. Tavalliset oliot tulevat automaattisesti kerrokselle 0 ja ruutuoliot päällimmäise...
List< GameObject > GetObjectsBetween(Vector pos1, Vector pos2)
Palauttaa listan peliolioista, jotka ovat kahden annetun pisteen välissä. Lista ei sisällä widgettejä...
int MinLayer
Pienin mahdollinen kerros.
int MaxLayer
Suurin mahdollinen kerros.
void RemoveAllLayers()
Poistaa kaikki oliokerrokset. Huom. tuhoaa kaikki pelioliot!
Widget GetFirstWidget(Predicate< Widget > condition)
Palauttaa ensimmäisen ruutuolion joka toteuttaa ehdon (null jos mikään ei toteuta).
GameObject GetObjectAt(Vector position, object tag, double radius)
Palauttaa peliolion, joka on annetussa paikassa tietyllä säteellä. Vain annetulla tagilla varustetut ...
void addMessageDisplay(bool force=false)
void ActivateObject(ControlContexted obj)
List< GameObject > GetObjectsWithTag(params string[] tags)
Palauttaa listan kaikista peliolioista joilla on tietty tagi. Lista on järjestetty päällimmäisestä al...
Widget GetWidgetAt(Vector position)
Palauttaa ruutuolion, joka on annetussa paikassa. Jos paikassa ei ole mitään oliota,...
void OnLayerAdded(Layer l)
List< GameObject > GetObjects(Predicate< GameObject > condition)
Palauttaa listan kaikista peliolioista jotka toteuttavat ehdon. Lista on järjestetty päällimmäisestä ...
IList< Layer > StaticLayers
Kerrokset, joilla olevat pelioliot eivät liiku kameran mukana.
virtual void OnObjectRemoved(IGameObject obj)
Kun olio poistetaan kerrokselta
virtual void Add(IGameObject o, int layer)
Lisää peliolion peliin, tiettyyn kerrokseen.
static void OnAddObject(IGameObject obj)
GameObject GetFirstObject(Predicate< GameObject > condition)
Palauttaa ensimmäisen peliolion joka toteuttaa ehdon (null jos mikään ei toteuta).
GameObject GetObjectAt(Vector position)
Palauttaa peliolion, joka on annetussa paikassa. Jos paikassa ei ole mitään pelioliota,...
List< GameObject > GetObjectsAt(Vector position, object tag, double radius)
Palauttaa listan peliolioista, jotka ovat annetussa paikassa tietyllä säteellä. Jos paikassa ei ole m...
void Add(Light light)
Lisää valon peliin. Nykyisellään valoja voi olla ainoastaan yksi kappale. Toistaiseksi ei tuettu Wind...
void OnLayerRemoved(Layer l)
GameObject GetObjectAt(Vector position, double radius)
Palauttaa peliolion, joka on annetussa paikassa tietyllä säteellä. Jos paikassa ei ole mitään pelioli...
GameObject GetObjectAt(Vector position, object tag)
Palauttaa peliolion, joka on annetussa paikassa. Vain annetulla tagilla varustetut oliot huomioidaan....
void DeactivateObject(ControlContexted obj)
SynchronousList< Layer > Layers
Kerrokset, joilla pelioliot viihtyvät.
List< GameObject > GetObjectsAt(Vector position)
Palauttaa listan peliolioista, jotka ovat annetussa paikassa. Jos paikassa ei ole mitään pelioliota,...
int ObjectCount
Kuinka monta pelioliota pelissä on
static Game Instance
Käynnissä olevan pelin pääolio.
static IList< IGameObject > GetObjectsAboutToBeAdded()
List< GameObject > GetObjectsAt(Vector position, double radius)
Palauttaa listan peliolioista, jotka ovat annetussa paikassa tietyllä säteellä. Jos paikassa ei ole m...
static ScreenView Screen
Näytön dimensiot, eli koko ja reunat.
void Remove(IGameObject o)
Poistaa olion pelistä. Jos haluat tuhota olion, kutsu mielummin olion Destroy-metodia.
void ResetLayers()
Nollaa oliokerrokset. Huom. tuhoaa kaikki pelioliot!
void Remove(Layer l)
Poistaa oliokerroksen pelistä.
List< GameObject > GetAllObjects()
int LayerCount
Kerrosten määrä.
List< GameObject > GetObjectsAt(Vector position, object tag)
Palauttaa listan peliolioista, jotka ovat annetussa paikassa tietyllä säteellä. Jos paikassa ei ole m...
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
bool IsInside(Vector point)
Onko piste p tämän olion sisäpuolella.
void Add(IGameObject childObject)
Lisää annetun peliolion tämän olion lapseksi. Lapsiolio liikkuu tämän olion mukana.
object Tag
Vapaasti asetettava muuttuja.
Kerros. Vastaa olioiden piirtämisestä.
void Remove(IGameObject o)
void ApplyChanges()
Instantly applies changes made to the layer's objects.
void Clear()
Tyhjentää kerroksen olioista
static Layer CreateStaticLayer()
Luo staattisen kerroksen (ei liiku kameran mukana)
SynchronousList< IGameObject > Objects
Kerroksen oliot
void GetObjectsAboutToBeAdded(List< IGameObject > result)
Vector Size
Näytön koko vektorina.
Synkroninen lista, eli lista joka päivittyy vasta kun sen Update-metodia kutsutaan....
new double Height
Korkeus.
Yhteinen rajapinta kaikille peliolioille.
Jypelin sisäiset metodit ja propertyt joihin käyttäjän ei tarvitse päästä käsiksi kuuluvat tÃ...
new Vector Position
Paikka.
double Y
Vektorin Y-komponentti
static readonly Vector Zero
Nollavektori.
double X
Vektorin X-komponentti.