Adventure Game Studio

AGS Support => Beginners' Technical Questions => Topic started by: Hans on Tue 22/04/2008 14:20:31

Title: Strings in functions (SOLVED)
Post by: Hans on Tue 22/04/2008 14:20:31
I'm trying to make a function that could, for example, make a character face down.
This with the following (working!) code in it:

cName.FaceLocation(cName.x, cName.y+10);

In which cName ofcourse stands for the characters name.
I want to replace this 'cName' with a string inside the function.
How to do this?
I couldn't find much about the use of strings (in functions).
I don't think this will work, but it's as far as I could get:

function facedown(string charactername) {
charactername.FaceLocation(charactername.x, charactername.y+10);
}

How do I make this code working?
Best would be if I could make a function compatible with instances. This would result in cName.FaceDown();
Is that possible?
Title: Re: Strings in functions
Post by: SSH on Tue 22/04/2008 14:54:36
You don't want a String, you want a Character *


function facedown(Character *charactername) {
  charactername.FaceLocation(charactername.x, charactername.y+10);
}
Title: Re: Strings in functions
Post by: Khris on Tue 22/04/2008 15:00:46
Or, even better:

function FaceDown(this Character*) {
  this.FaceLocation(this.x, this.y+10);
}


// usage:
player.FaceDown();


Betterererer: use an enum (eDown, eUp, ...  ->  Character.Face(eDown); )
Title: Re: Strings in functions
Post by: Hans on Tue 22/04/2008 15:38:03
Okay... I do understand SSH's reply. Thanks for that. So apart from the string-->character part I wasn't too far off I see.

But KhrisMUC? What did you do apart from flipping Character and "charactername" (in your words "this")? Is see it resulted in the possibility of using player.FaceDown(); but how come?

And how exactly do I use enums?
Title: Re: Strings in functions
Post by: Khris on Wed 23/04/2008 01:33:25
I agree that the syntax of declaring these extender functions seems weird, but that's the way to do it. Ask CJ :)

enums... look em up in the manual...?
Title: Re: Strings in functions
Post by: Hans on Wed 23/04/2008 21:58:34
So just for the record: switching type and parameter gives the possibility of using the character instance?

And why did you both use the * ? Is that a code?
"you want a Character *"
"function facedown(Character *charactername)"
"function FaceDown(this Character*)"

And a thing about enums. I think this 'll be the same as using multiple parameters in a function, but it couldn't hurt to ask: how do I use AND instances AND enums in one function?
Would that be:

enum DirectionOption {
Up, Down, Left, Right
};
function Face (charactername Character, DirectionOption direction)

(I don't know how to make something appear as code on the fora jet.)

And the last thing: I can imagine I shouldn't use some names as parameters/enum name, because AGS Editor wouldn't know which one would be the type and which one would be the parameter. Is that correct?
Title: Re: Strings in functions
Post by: Khris on Thu 24/04/2008 06:29:54
Extender functions (http://www.adventuregamestudio.co.uk/manual/ExtenderFunctions.htm)

* / Pointers (http://www.adventuregamestudio.co.uk/manual/PointersForNewbies.htm)

Enums (http://www.adventuregamestudio.co.uk/manual/enum.htm)

last thing: this switch-around is only done to the type to be extended, with everything else it's strictly "type variable_name".

Declaring an extender function with additional params:
function SayXTimes(this Character*, String text, int times) {
  ...
}


Oh, and BB-code:
(http://i208.photobucket.com/albums/bb259/khrismuc/gnaaa.png)
Title: Re: Strings in functions
Post by: Hans on Thu 24/04/2008 19:24:15
Thanks. Stupid I didn't see the "How do I post images, smileys and formatting?". I'd already read about enums, but Extender functions and pointers (I won't use for the time coming) were new to me. I find it quite strange I didn't find anything about Extender functions in the manual first. But thanks for that. I've learned a lot from you guys.