//-------------------------------------------------------------------------------- // Lesson3.TXT // Where we learn fancy things like choices, images, and oooh, sound! // // // Now that you've made a window look like you want, what next? Well, maybe we // want to have the player choose from a set of choices. What would be a good // name for that command? // // CHOICE // The choice command allows you to present bulleted choices (choices with little // dots in front of them), and to pick one, and go to another window or switch // based on the choice: // // choice "Buy" 3:3 // choice "Sell" 3:4 // choice "Exit" 3:5 // // GOTO means that you should go to the window or switch with the following // bank and entry number. (In a choice, using the word GOTO is optional, // because that's all you can do in a choice, really.) We'll talk more about // GOTO when we talk about SWITCH statements. // // Here is where we reach one of the interesting quirks of APE's evolution. // While GOTO is used in a SWITCH to send the code execution to a new // WINDOW or SWTICH, it is not an accepted command when used in a WINDOW. // To goto another WINDOW or SWITCH at the end of WINDOW, you must use the // command NEXTWINDOW. For almost all intents and purposes, it is identical // to GOTO. // // At the end of this file is a window containing everything from Lesson3. // Once you compile it, you can see it all in action. // // IMAGE // Okay, this command allows you to add a picture in the window along with // the text. // // You can include as many images inside the window as you wish. // You can use BMPs, PCXs, PNGs, or TGAs each with its own pro/cons: // // BMPs Full, 24-bit color, no palette, looks great, but does not support // transparency // PCXs Transparency (use palette color #255), limited to 256 colors // // (PCXs are the usually the handy format for games, because you often // want a shape to go over a background looking like its shape, not the shape // with a big black square around it. But I digress.) // // PNG support was added late to Anachronox. It supports tanslucency, // compresses in a lossless format, and is all in all a handy little // format. It is heavily used in particles, and interform textures. // The only drawback you may find is that many Windows based // viewers, such as Internet Explorer tend to display them either darker // or lighter than their original brightness. You should find that // Anachronox displays them properly. // // TGAs are 24-bit with eight bits of translucency. These allow you to // actually have colored, translucent graphics! You can't make these with // the Paint program supplied with Windows, but if you have Photoshop or // PaintShop Pro, Go ahead! // // Here's the format of an image command, and we'll explain each part: // image path/FILENAME.PCX X,Y H,W SOLID // The file can be a PCX, BMP, PNG or TGA and usually is preceded by the pathname // to that graphic as well. Otherwise, all the graphics would be sitting in // the GAMEFLOW directory! That would stink! // // As you might assume from the above statement, the Anachronox\anoxdata\gameflow // directory is the default directory of the image tag. // // NOTE: Use forward slash in all cases in APE. Backward slash, as we'll // learn more about later, is used to included special characters, like \n // for carriage return. // // X,Y are the X and Y coordinate of where in the window to draw the picture. // 0,0 is obviously the upper left corner. // H,W are the height and width of the image. These are optional paramaters, and // can be used to expand or shrink the image from it's original size. // If a SOLID is specified, text wraps around the picture. If you want the text // to go over the picture, or there isn't any text, then don't use SOLID--just // specify the filename and the X,Y coordinates. Note that there is a space // between the filename and the X,Y coords, not a comma. // // If X or Y are negative, it will draw the graphic that much in from the right // or lower corner, respectively. // // NOTE: Images in Anachronox, must be in powers of 2! What does that mean? It // means that images must be in one of the following sizes // 16 X 16 // 16 X 32 // 16 X 64 // 16 X 128 // 32 X 16 // 32 X 32 // 32 X 64 // 32 X 128 // 32 X 256 // 64 X 16 // 64 X 32 // 64 X 64 // 64 X 128 // 64 X 256 // 128 X 16 // 128 X 32 // 128 X 64 // 128 X 128 // 128 X 256 // 256 X 32 // 256 X 64 // 256 X 128 // 256 X 256 // // So what if you have a 20 x 45 sized image? Well then, make it 32 x 64 and make the extra space transparent. // // // SOUND // This command allows a WAV file to be played as soon as the window is displayed. // This is how we have the speech played in the game. Sounds are stored in // ANOXDATA\SOUND A sound command goes like this: // extern playsound "boots\BOOTS1.WAV" // // // // Okay, here's all those commands used together. Type INVOKE 3:1 after you // compile and load it: // // NOTE: This lesson used to be much simpler, but the sound command was eventually // changed to an extern, which must be run from a switch. So instead of creating // an all new lesson, I have simply fixed the old code in an effort to get these // docs out asap. So for now, ignore the startswitch and extern commands. They // will be brought in at a later lesson. // // //================================================================================ #window 2:1 title "Learn 3 Demo" // you can put comments on the same line body "Choose from three sounds:" choice "Blip" 2:2 choice "Bleep" 2:3 choice "Bloop" 2:4 //-------------------------------------------------------------------------------- #window 2:2 startswitch { extern playsound "ui/gen/button1.wav" } body "Blip" //-------------------------------------------------------------------------------- #window 2:3 startswitch { extern playsound "ui/gen/button3.wav" } body "Bleep" //-------------------------------------------------------------------------------- #window 2:4 startswitch { extern playsound "ui/gen/button4.wav" } body "Bloop" //================================================================================ // Okay, in Lesson 4, we're gonna learn about switches...and that gets _reeeally_ // interesting!