Simple GUI

This tutorial is how to make a simple Graphical User Interface, or "GUI". Here we will make an interesting agent, allowing us to:
 * teach the vocabulary to all the creatures in the game
 * save the game without quitting
 * quit the game without saving

This little tutorial will tell you how to use BUTTONS in compound agents.

At first we need a set of sprites: here I set them like this in the .c16 :
 * sprite 0 : the main part of the sprite
 * sprite 1 : the 'teach' button
 * sprite 2 : the 'save' button
 * sprite 3 : the 'quit' button

inst comp 2 24 11111 "tutogui" 4 0 9900 attr 38 bhvr 0 pat: butt 1 "tutogui" 1 4 1 1 0 [] 3000 0 pat: butt 2 "tutogui" 2 4 22 1 0 [] 3001 0 pat: butt 3 "tutogui" 3 4 43 1 0 [] 3002 0 mvto cmrx cmry endm
 * we install the agent in the game
 * attributes ... floatable 32 + mouseable 2 + mouse activeable 4
 * and here the hardest part of the install script begins!
 * but don't worry, it is still quite simple
 * we create the button 'teach all creatures in game'
 * I explain what all these odd numbers mean:
 * 1 - it is the number of the created part - the main part of the agent has part 0
 * "tutogui" refers to the name of the sprite file used for the part
 * 1 tells the game that the image used for the button is the image 1
 * 4 tells the game that there are only 4 images in the sprite file
 * 1 the position in 'x', related to the part 0
 * 1 the position in 'y', related to the part 0
 * 0 the plane difference between the part 0 and the new part
 * [] - if you want an animation when you roll your mouse over the button, you can put it here
 * 3000 - it is the number of the message sent by the button when pressed
 * 0 it means that the button will be activated even if you click on a transparent pixel of the button sprite
 * we create the second button, the button 'save'
 * and the third button
 * as you've seen, the number of the message sent changes with each button - the message is a random number, but you have to remember it, and never use the same message number for 2 different parts of an agent.
 * cmrx and cmry are the 'x' and 'y' position of the middle of the screen - mvto means that the agent will move to the nearest safe position around the camera's central (x;y) coordinates
 * ! the install script is finished!

Now we will use them!
 * now we have to define what will happen when we will press the buttons. Do you remember the messages we have sent with the buttons?

scrp 2 24 11111 3000 enum 4 0 0 vocb next endm
 * script for the 'teach' button :
 * the '3000' is there as the number of the called script - the message sent refers to a script number, and that's why you can't have the same message sent by 2 different buttons - or you can, but the buttons will execute the same piece of code.
 * this means that if you want 2 buttons to do the same action, you can send the same message
 * if you want them to have a different action, you MUST change the message and script number
 * here we 'enum' all the agents matching the '4 0 0' classifiers - this means all creatures
 * 'vocb' teaches the vocabulary to these creatures
 * 'next' closes the enum command

scrp 2 24 11111 3001 save endm
 * script for the 'save' button

scrp 2 24 11111 3002 quit endm
 * script for the 'quit' button

rscr enum 2 24 11111 kill targ next
 * the remove script

Tutorial by zareb