Wintermute – Entwicklung einer InGame Debug-Console
Die Befehle
Hier folgt eine Übersicht über die implementierten Befehle.
loadScene – Szene laden / wechseln
Den Befehl für das Laden oder Wechseln einer Scene haben wir auf der vorherigen Seite bereits aufgeführt. Nun nocheinmal der Vollständigkeit halber.
Aufruf: loadScene path_to_scene
Aufrufbeispiel: scene scenes\scene1.scene
on "loadScene"
{
	if(checkParameter(this.commandParameter,1))
	{
		var logControl = this.GetControl("log");
		logControl.Text = logControl.Text + "~nrun command Game.ChangeScene().";
		var Parameter = this.commandParameter;
		Game.ChangeScene(""+Parameter[1]+"");
		Sleep(1000);
		if(Scene.Filename == Parameter[1]) {
			logControl.Text = logControl.Text + "~nScene changed.";
		}
	}
}
takeItem – Ein Item Inventory aufnehmen
Mit diesem Befehl wollen wir ermöglichen, dass man dem Actor über die Konsole ein Item ins Inventory hinzufügen kann.
Anwendungsfall: Test, wie sich eine Scenen / NPC / Objekt verhält, wenn der Actor einen bestimmten Gegenstand hat / nicht hat.
Aufruf: takeItem itemname
on "takeItem"
{
	// example: takeItem itemHat
	if(checkParameter(this.commandParameter,1))
	{
		var logControl = this.GetControl("log");
		logControl.Text = logControl.Text + "~nrun command actor.TakeItem().";
		var Parameter = this.commandParameter;
		actor.TakeItem(""+Parameter[1]+"");
		Sleep(500);
		if(Game.HasItem(""+Parameter[1]+"")) {
			logControl.Text = logControl.Text + "~nItem is now in the inventory.";
		} else {
			logControl.Text = logControl.Text + "~nError: Item could not be taken.";
		}
	}
}
dropItem – Ein Item aus dem Inventory entfernen
Mit diesem Befehl wollen wir ermöglichen, dass man dem Actor über die Konsole ein Item wieder aus dem Inventory entfernen kann.
Aufruf: dropItem itemname
on "dropItem"
{
	if(checkParameter(this.commandParameter,1))
	{
		var logControl = this.GetControl("log");
		logControl.Text = logControl.Text + "~nrun command Game.DropItem().";
		var Parameter = this.commandParameter;
		if(Game.HasItem(""+Parameter[1]+"") == false) {
			logControl.Text = logControl.Text + "~nError: Item not found in the inventory.";
			return;
		}
		Game.DropItem(""+Parameter[1]+"");
		Sleep(500);
		if(Game.HasItem(""+Parameter[1]+"") == false) {
			logControl.Text = logControl.Text + "~nItem is removed from the inventory.";
		} else {
			logControl.Text = logControl.Text + "~nError: Item could not be removed.";
		}
	}
}
setActive – Ein Objekt in der Scene aktivieren / deaktivieren
Mit diesem Befehl wollen wir ermöglichen, dass man ein Objekt in einer Scene aktivieren / deaktivieren kann, d.h. sichtbar / unsichtbar machen.
Aufruf: setActive object state
Aufrufbeispiele:
setActive object 1
setActive object 0
on "setActive"
{
	if(checkParameter(this.commandParameter,2))
	{
		var logControl = this.GetControl("log");
		logControl.Text = logControl.Text + "~nrun command to set an object active / inactive.";
		var Parameter = this.commandParameter;
		var entity = Scene.GetNode(""+Parameter[1]+"");
		if(entity != null) {
			if(Parameter[2] == "1") {
				entity.Active = true;
			} else {
				entity.Active = false;
			}
		} else {
			logControl.Text = logControl.Text + "~nError: Object not found.";
		}
	}
}
playAnim – Abspielen einer Animation
Dieser Befehl spielt eine Animation eines Actors oder einer Entity ab.
Aufruf: actor_or_entity path_to_sprite
Aufrufbeispiele:
playAnim actorname actor\actorname\walk\walkLeft.sprite
playAnim object specialanim\anim.sprite
on "playAnim"
{
	if(checkParameter(this.commandParameter,2))
	{
		var logControl = this.GetControl("log");
		logControl.Text = logControl.Text + "~nrun command to set an object active / inactive.";
		var Parameter = this.commandParameter;
		var objectName = Parameter[1];
		var filename = Parameter[2];
		// if is the object a scene node
		var entityOrActor = Scene.GetNode(""+objectName+"");
		if(entityOrActor != null)
		{
			// play animation of the node
			entityOrActor.PlayAnim(filename);
		} else {
			// try to get an actor reference
			entityOrActor = Scene.GetFreeNode(""+objectName+"");
			if(entityOrActor != null) {
				// play animation of the node
				entityOrActor.PlayAnim(filename);
			} else {
				// we cant get an actor by name
				// so we try to play the animation on the main actor if the name corresponds
				if(objectName == actor.Name) {
					actor.PlayAnim(filename);
				} else {
					// the last fallback:
					// create a temp node and play the animation
					logControl.Text = logControl.Text + "~nError: Entity reference not found. Play anim on a temp entity.";
					var entity = Scene.CreateEntity("tempEntity");
					entity.X = 500;
					entity.Y = 500;
					entity.Active = true;
					entity.PlayAnimAsync(filename);
					Sleep(5000);
					entity.Reset();
					Scene.UnloadObject(entity);
				}
			}		
		}		
	}
}
skipActor – Den Actor in der Scene positionieren
Befehl mit dem man einen Actor frei in der Szene platzieren kann.
Aufruf: skipActor X Y
Aufrufbeispiel: skipActor 400 300
on "skipActor"
{
	// example: skipActor 400 500
	if(checkParameter(this.commandParameter,2))
	{
		var logControl = this.GetControl("log");
		logControl.Text = logControl.Text + "~nrun command actor.SkipTo().";
		var Parameter = this.commandParameter;
		actor.SkipTo(Parameter[1], Parameter[2]);
	}
}
loadActor – Actor laden / wechseln
Befehl mit dem ein neuer Actor geladen werden kann oder zu einem anderen Actor gewechselt werden kann.
Aufruf: loadActor actorname
on "loadActor"
{
	if(checkParameter(this.commandParameter,1))
	{
		var logControl = this.GetControl("log");
		logControl.Text = logControl.Text + "~nrun command game.LoadActor().";
		var Parameter = this.commandParameter;
		var name = Parameter[1];
		var tmpActor = Game.getGameActorByName(name, false);
		if(tmpActor == null) {
			tmpActor = Game.LoadActor("actor\"+name+"\"+name+".actor");
			gameActors.Push(tmpActor);
		} 
		if(tmpActor == null) {
			logControl.Text = logControl.Text + "~nError: actor not found.";
		} else {
			actor = tmpActor;
		}
	}
}
exit – Spiel beenden
on "exit"
{
	Game.QuitGame();
}
            
 
		 
			 
			 
			 
			 
			