Scripting Scope o Ámbito de Scripting

08 de octubre de 2008
Valoración del artículo:
Hay dos tipos de ámbitos para el scripting, procedure-level y class-level. Se puede acceder a ellos usando las pestañas Procedure View y Class View, respectivamente, en el Scripting Editor.
Atención: Contenido exclusivo de DesarrolloMultimedia.es. No reproducir. Copyright.

Procedure

Procedure-Level Scope o Ámbito Procedure-level

Este es el ámbito mas usado, ya que en el puedes usar diferentes scripts para cada acción. El código que introduces equivale al cuerpo de una función. Por ejemplo, si has definido una acción Tile Hit para una determinada tile(baldosa), el código usado sería este:

Function [FunctionName]()
    El código de Procedure-level va aquí
End Function

Debido a que Platform Studio crea automáticamente las líneas de código Function...End Function, podrás ver que el código de procedure-level es equivalente al cuerpo de una función o sub-función.

Ahora, pongamos en el caso de que creas un script para el trigger "Value Changed" del marcador de puntuaciones. En ese caso, el código de tu función sería el siguiente,

Function [FunctionName](ByVal curCounter As _
    PlatformStudio.CurrentCounter)
    ‘El código de Procedure-level va aquí
End Function

El código que escribirías en esta función sería el mismo que el del ejemplo anterior, ya que solo estas definiendo el cuerpo de la función sin modificar ningún otro valor. Sin embargo, en esta función, también puedes usar un parámetro, curCounter. Aunque no declares curCounter, puedes hacer uso de el ya que Platform Studio lo declarará por ti.

Una ultima anotación sobre el ámbito procedure-level: no podrás ejecutar las funciones de otros triggers ya que estas son independientes unas de otras. Si quieres compartir código, deberás introducirlo en Class View.

Class-level Scope o Ámbito de Class-level

El segundo tipo de ámbito es el de Class-level. En class-level, puedes escribir código global que podrá ser usado en cualquier procedure (procedimiento) de tu juego. Todo esto código se localiza en una clase (cuya definición es creada automáticamente por Platform Studio). Por lo tanto, si introduces lo siguiente,

Dim Game As PlatformStudio.psGame

Platform Studio creará esto (aunque no lo veas en Class View),

Class ScriptObject
    Dim Game As PlatformStudio.psGame
End Class

El Objeto Game (Game Object) también podra ser usado en los procedures (procedimientos) que uses en Procedure View.

Otra forma de aprovechar el scripting de class level es creando funciones globales. Por ejemplo, si creas una función que dibuja el número de puntos conseguidos cuando el jugador consigue una moneda o un corazón, podrás acceder a ella tanto desde el trigger Coin.Collect como desde el trigger Heart.Collect.

Combinándolo todo


El resultado final es una librería DLL creada por Platform Studio, que combina todos tus scripts, acciones y código global y lo coloca todo un una sola clase, para ser compilado en un archivo DLL. Si se produce un error al compilar el DLL, veras el código fuente que Platform Studio genera para tus acciones y código. Para que vayas familiarizándote con el, aquí tienes una muestra de código al que tu DLL se debería parecer:

Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports Microsoft.VisualBasic

Namespace Script
    Class ScriptObject
        'Este código importa los objetos del juego 
        'así que puede ser usado a través de scripting.
        'El Game object és concretado por el jugador.
        Public Game As PlatformStudio.IGame

        'Trigger actions
        '---------------
        Function cval2(ByVal curCounter As PlatformStudio.CurrentCounter)
            If curCounter.Value < 0 Then
                Game.QuitGame()
            End If
        End Function

        Function cval3(ByVal curCounter As PlatformStudio.CurrentCounter)
            If curCounter.Value <= 0 Then
                Game.ModifyLives(-1)
                Game.SetHealth(3)
            Else
                If curCounter.Decreased Then
                    Game.Hurt(4, "Blink", 0.2)
                End If
            End If
        End Function

        Function khol37()
            Game.MoveCharacter("Left", 4, True)
        End Function

        Function khol39()
            Game.MoveCharacter("Right", 4, True)
        End Function

        Function khol38()
            Game.Jump(0.6, 0.25, 1)
        End Function

        Function krel38()
            Game.StopJumping()
        End Function

        Function kpre27()
            Game.QuitGame()
        End Function
    End Class
End Namespace

Comentarios

Los comentarios de los visitantes son para ampliar la
información del artículo. Cualquiera puede participar.

Añadir un comentario al artículo Publicar un comentario del artículo

Se muestra un comentario revisado

 el lenguaje
05/5/11 

Comentario de santito_87:

¿CÓMO SE LLAMA EL LENJUAGE DE PROGRAMACIÓN QUE USAN?




El autor
Rubén Lapuerta
Colaborador Desarrollo Multimedia
http://www.desarrollomultimedia.es
Manuales

Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...