Differences

This shows you the differences between the selected revision and the current
version of the page.


es:wmebook:ch4 2013/05/26 12:45 es:wmebook:ch4 2013/05/26 12:56 current
Line 314: Line 314:
else WinCaption.Visible = false; else WinCaption.Visible = false;
</code> </code>
 +
 +Bien,¿ que pasara ahora si el cursor se encuentra sobre algún objeto?
 +
 +<code script>
 +WinCaption.X = Game.MouseX;
 +WinCaption.Y = Game.MouseY + 20;
 +</code>
 +
 +WinCaption contiene una referencia al campo de texto que se encuentra dentro de la ventana caption cargada en game.scipt. Con estas lineas, establecemos su posicion en las mismas coordenadas que nuestra posición X del ratón y la posición Y + 20 pixeles, de esta manera, el nombre del objeto sobre el que situamos el cursor, aparece cercano a este.
 +
 +<code script>
 +WinCaption.TextAlign = TAL_LEFT;
 +WinCaption.Text = ActObj.Caption;
 +</code>
 +
 +Con estas dos lineas, establecemos el alineamiento del texto de esta ventana a la izquierda, y establecemos que el texto de esta ventana, sea el nombre que le hayamos asignado a ese objeto en nuestra escena.
 +
 +<code script>
 +WinCaption.SizeToFit();
 +</code>
 +
 +Redimensionamos la ventana caption al mismo tamaño que el texto que se muestra.
 +
 +<code script>
 +if(WinCaption.X + WinCaption.Width > Game.ScreenWidth) WinCaption.X = Game.ScreenWidth – WinCaption.Width;
 +</code>
 +
 +Si la anchura del campo excede de el ancho de la pantalla, establecemos la posición X de la ventana caption exactamente hasta el final, esto lo hace basándose en la resolución de la pantalla, se hace para evitar que el texto se pierda por los bordes de la pantalla.
 +
 +<code script>
 +if(WinCaption.Y + WinCaption.Height > Game.ScreenHeight) WinCaption.Y = Game.ScreenHeight – WinCaption.Height;
 +</code>
 +
 +Exactamente hace lo mismo que la linea anterior, pero esta vez aplicado a la coordenada Y.
 +
 +<code script>
 +WinCaption.Visible = true;
 +WinCaption.Focus();
 +</code>
 +
 +Una vez que hemos aplicado todos esos cambios, hacemos la ventana caption visible y nos la activa( WinCaption.Focus() ) pero en nuestro caso no es necesario, ya que no interactuaremos sobre esa ventana, así que simplemente podemos eliminar esa linea.
 +
 +<code script>
 + }
 +else WinCaption.Visible = false;
 +</code>
 +
 +Esto significa que si el juego esta en modo no interactivo o el cursor se mueve fuera de algún punto caliente, mantenga esta venta oculta.
 +
 +<code script>
 + if(Game.Interactive && Game.MouseY < 45 && !Game.ResponsesVisible && !WinMenu.Visible) Game.InventoryVisible = true;
 +
 +  else if(Game.MouseY > 100 || Game.ResponsesVisible || !Game.Interactive) Game.InventoryVisible = false;
 +</code>
 +
 +Estas dos lineas, hacen que se muestre o no el inventario, y simplemente para nuestro ejemplo las eliminaremos.
 +
 +<code script>
 +Sleep(20);
 +</code>
 +
 +Recuerdas lo que comentábamos sobre los bucles infinitos, que era necesario realizar una pequeña pausa para dejar la cpu libre a otros procesos, pues bien aquí hacemos uso de esa técnica.
 +
 +Ahora revisemos como nos tiene que quedar nuestro fichero game_loop.script:
 +
 +<code script>
 +#include "scripts\base.inc"
 + 
 +global WinCaption;
 + 
 +//bucle infinito
 +while(true){
 +  var ActObj = Game.ActiveObject;
 + 
 +  if(Game.Interactive && ActObj!=null)
 +  {
 +      WinCaption.X = Game.MouseX;
 +      WinCaption.Y = Game.MouseY + 20;
 +      WinCaption.TextAlign = TAL_LEFT;
 +      WinCaption.Text = ActObj.Caption;
 +      WinCaption.SizeToFit();
 +      if(WinCaption.X + WinCaption.Width > Game.ScreenWidth) WinCaption.X = Game.ScreenWidth - WinCaption.Width;
 +      if(WinCaption.Y + WinCaption.Height > Game.ScreenHeight) WinCaption.Y = Game.ScreenHeight - WinCaption.Height;
 +    WinCaption.Visible = true;
 +  }
 +  else WinCaption.Visible = false;
 +  Sleep(20);
 +}
 +</code>
 +
 +Como puedes ver, esta es la columna vertebral de un proyecto. Sin inventario, sin menú, simplemente point and click game. Esto es algo que estamos viendo para que os deis cuenta la forma de funcionar de wintermute, si vais teniendo claras las ideas, podréis cambiar la forma en la que salen estas ventanas, el texto que sale, etc etc. poco a poco podréis modificar estos script y hacer cosas bastante potentes.
 +
 +Ahora pasaremos al siguiente elemento de nuestro proyecto, el actor.
 
es/wmebook/ch4.1369565113.txt.gz · Last modified: 2013/05/26 12:45 by dongo
Recent changes RSS feed Creative Commons License Driven by DokuWiki