home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d3xx
/
d343
/
snakepit.lha
/
SnakePit
/
SnakePitSrc.lzh
/
Snake_Windows.c
< prev
next >
Wrap
Text File
|
1988-07-04
|
29KB
|
620 lines
/*
* MKSoft SnakePit (c) 1988
*
* Screen, Window, and Requester definitions (Plus gadgets & menus)
*/
#define Snake_Windows_c 1
#include "Snake.h"
/* These are the gadget ID definitions */
#define gACCEPT 255
#define gLEVEL_UP 201
#define gLEVEL_DN 202
#define gKEY_UP 203
#define gKEY_DN 204
#define gKEY_LF 205
#define gKEY_RT 206
#define gKEY_BASE gKEY_UP
#define gCONTINUE 211
#define gABORT gCONTINUE+1
#define gQUIT gABORT+1
#define gESC 254
#define gBACKSPACE 8
#define gCR 13
#define RAW_LF 0x4F
#define RAW_RT 0x4E
#define RAW_LF_UP (0x80 | 0x4F)
#define RAW_RT_UP (0x80 | 0x4E)
#define RAW_SP_UP (0x80 | 0x40)
#define RAW_CR_UP (0x80 | 0x44)
#define RAW_EN_UP (0x80 | 0x43)
#define RAW_C_UP (0x80 | 0x33)
#define RAW_A_UP (0x80 | 0x20)
#define RAW_Q_UP (0x80 | 0x10)
static short SelectLevel = 1;
static UBYTE Level_Text[10] = "Level:xxx";
static UBYTE Lives_Text[10] = "Lives:xxx";
static UBYTE Score_Text[16] = "Score:xxxxxxxxx";
static UBYTE SelectLevelText[4] = " 1";
static struct Screen *MyScreen=NULL;
struct Window *MyWindow=NULL;
static struct TextAttr TOPAZ80 = {(STRPTR)"topaz.font",TOPAZ_EIGHTY,0,0};
static struct TextAttr TOPAZ60 = {(STRPTR)"topaz.font",TOPAZ_SIXTY,0,0};
static UBYTE Title_Text[]="SnakePit © 1988 - MKSoft Development";
static struct NewScreen NewScreenStructure = {0,0,320,200,5,1,0,NULL,CUSTOMSCREEN|SCREENBEHIND,&TOPAZ80,Title_Text,NULL,NULL};
static USHORT Palette[32] = {
0x0000,0x0EEE,0x0FCD,0x0F77,0x0F00,0x0A00,0x0600,0x0FC9,
0x0FB7,0x0F80,0x0B50,0x0630,0x0FFC,0x0FF7,0x07C5,0x0097,
0x0650,0x0CFC,0x07F7,0x00E0,0x0580,0x0170,0x0CCF,0x077F,
0x000F,0x000A,0x0006,0x0FCF,0x0F7F,0x0F0F,0x070A,0x0606
};
static struct IntuiText MainIText0 = {1,0,JAM1,19,0,&TOPAZ80,(UBYTE *)"End Edit",NULL};
static struct IntuiText MainITextA = {7,1,JAM1,19,0,&TOPAZ80,(UBYTE *)"Erase",NULL};
static struct IntuiText MainIText1 = {7,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Clear",NULL};
static struct IntuiText MainIText2 = {7,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Save",NULL};
static struct IntuiText MainIText3 = {7,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Load",NULL};
static struct IntuiText MainIText4 = {13,0,JAM1,19,0,&TOPAZ80,(UBYTE *)"Level",NULL};
static struct IntuiText MainIText5 = {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"9",NULL};
static struct IntuiText MainIText6 = {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"8",NULL};
static struct IntuiText MainIText7 = {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"7",NULL};
static struct IntuiText MainIText8 = {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"6",NULL};
static struct IntuiText MainIText9 = {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"5",NULL};
static struct IntuiText MainIText10= {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"4",NULL};
static struct IntuiText MainIText11= {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"3",NULL};
static struct IntuiText MainIText12= {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"2",NULL};
static struct IntuiText MainIText13= {21,1,JAM1,19,0,&TOPAZ60,(UBYTE *)"1",NULL};
static struct IntuiText MainIText14= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[7].str,NULL};
static struct IntuiText MainIText15= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[6].str,NULL};
static struct IntuiText MainIText16= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[5].str,NULL};
static struct IntuiText MainIText17= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[4].str,NULL};
static struct IntuiText MainIText18= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[3].str,NULL};
static struct IntuiText MainIText19= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[2].str,NULL};
static struct IntuiText MainIText20= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[1].str,NULL};
static struct IntuiText MainIText21= {2,26,JAM2,2,0,&TOPAZ60,ScoreList[0].str,NULL};
static struct IntuiText MainIText22= {31,0,JAM1,0,0,&TOPAZ80,(UBYTE *)"High Scores",NULL};
static struct IntuiText MainIText23= {9,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Quit",NULL};
static struct IntuiText MainIText30= {21,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Sound On/Off",NULL};
static struct IntuiText MainIText31= {21,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Drums On/Off",NULL};
static struct IntuiText MainIText24= {30,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Edit",NULL};
static struct IntuiText MainIText25= {13,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Define Keys",NULL};
static struct IntuiText MainIText26= {10,1,JAM1,0,0,&TOPAZ80,(UBYTE *)"Play",NULL};
static struct IntuiText SelectLevelIText30 = {18,26,JAM2,30,-17,&TOPAZ60,SelectLevelText,NULL};
static struct IntuiText SelectKeysIText34 = {14,26,JAM2,73,-57,&TOPAZ60,KeyList[gKEY_RT-gKEY_BASE].str,NULL};
static struct IntuiText SelectKeysIText33 = {14,26,JAM2,-16,-57,&TOPAZ60,KeyList[gKEY_LF-gKEY_BASE].str,&SelectKeysIText34};
static struct IntuiText SelectKeysIText32 = {14,26,JAM2,28,-16,&TOPAZ60,KeyList[gKEY_DN-gKEY_BASE].str,&SelectKeysIText33};
static struct IntuiText SelectKeysIText31 = {14,26,JAM2,28,-97,&TOPAZ60,KeyList[gKEY_UP-gKEY_BASE].str,&SelectKeysIText32};
static struct IntuiText HighScoresIText42 = {2,5,JAM2,-16,-14,&TOPAZ80,ScoreList[7].str,NULL};
static struct IntuiText HighScoresIText41 = {2,5,JAM2,-16,-26,&TOPAZ80,ScoreList[6].str,&HighScoresIText42};
static struct IntuiText HighScoresIText40 = {2,5,JAM2,-16,-38,&TOPAZ80,ScoreList[5].str,&HighScoresIText41};
static struct IntuiText HighScoresIText39 = {2,5,JAM2,-16,-50,&TOPAZ80,ScoreList[4].str,&HighScoresIText40};
static struct IntuiText HighScoresIText38 = {2,5,JAM2,-16,-62,&TOPAZ80,ScoreList[3].str,&HighScoresIText39};
static struct IntuiText HighScoresIText37 = {2,5,JAM2,-16,-74,&TOPAZ80,ScoreList[2].str,&HighScoresIText38};
static struct IntuiText HighScoresIText36 = {2,5,JAM2,-16,-86,&TOPAZ80,ScoreList[1].str,&HighScoresIText37};
static struct IntuiText HighScoresIText35 = {2,5,JAM2,-16,-98,&TOPAZ80,ScoreList[0].str,&HighScoresIText36};
static struct IntuiText MainIText29= {24,0,JAM2,102,193,&TOPAZ80,Score_Text,NULL};
static struct IntuiText MainIText28= {15,0,JAM2,248,193,&TOPAZ80,Lives_Text,&MainIText29};
static struct IntuiText MainIText27= {5,0,JAM2,0,193,&TOPAZ80,Level_Text,&MainIText28};
#define MainIntuiTextList MainIText27
/* This files contains the 8x8 images for the snake screen... */
#include "Snake_Parts.h"
static struct MenuItem MainSubItem3 = {NULL,52,8,80,8,ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText1,NULL,'C',NULL,MENUNULL};
static struct MenuItem MainSubItem2 = {&MainSubItem3,52,0,80,8,ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText2,NULL,'S',NULL,MENUNULL};
static struct MenuItem MainSubItem1 = {&MainSubItem2,52,-8,80,8,ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText3,NULL,'L',NULL,MENUNULL};
static struct IntuiText Copyright1= {13,25,JAM2,0,0,&TOPAZ80,(UBYTE *)" SnakePit ",NULL};
static struct IntuiText Copyright2= {13,25,JAM2,0,0,&TOPAZ80,(UBYTE *)" Copyright © 1988 ",NULL};
static struct IntuiText Copyright3= {13,25,JAM2,0,0,&TOPAZ80,(UBYTE *)" by ",NULL};
static struct IntuiText Copyright4= {13,25,JAM2,0,0,&TOPAZ80,(UBYTE *)"MKSoft Development",NULL};
static struct MenuItem MainSubItem15= {NULL,132,57,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&Copyright4,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem14= {&MainSubItem15,132,49,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&Copyright3,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem13= {&MainSubItem14,132,41,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&Copyright2,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem12= {&MainSubItem13,132,33,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&Copyright1,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem11= {&MainSubItem12,132,24,144,9,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText14,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem10= {&MainSubItem11,132,16,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText15,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem9 = {&MainSubItem10,132,8,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText16,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem8 = {&MainSubItem9,132,0,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText17,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem7 = {&MainSubItem8,132,-8,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText18,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem6 = {&MainSubItem7,132,-16,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText19,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem5 = {&MainSubItem6,132,-24,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText20,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainSubItem4 = {&MainSubItem5,132,-32,144,8,ITEMTEXT|ITEMENABLED|HIGHNONE,0,(APTR)&MainIText21,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem2B= {NULL,-24,92,123,8,ITEMTEXT|ITEMENABLED|HIGHCOMP|COMMSEQ,0,(APTR)&MainIText0,NULL,'D',NULL,MENUNULL};
static struct MenuItem MainMenuItem2A= {&MainMenuItem2B,-24,73,123,8,CHECKIT|ITEMTEXT|ITEMENABLED|HIGHBOX,126,(APTR)&MainITextA,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem20= {&MainMenuItem2A,-24,64,123,8,CHECKIT|ITEMENABLED|HIGHBOX,190,(APTR)&mShrinkFood,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem19= {&MainMenuItem20,-24,55,123,8,CHECKIT|ITEMENABLED|HIGHBOX,222,(APTR)&mGrowFood,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem18= {&MainMenuItem19,-24,46,123,8,CHECKIT|ITEMENABLED|HIGHBOX,238,(APTR)&mPopUpBrick,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem17= {&MainMenuItem18,-24,37,123,8,CHECKIT|ITEMENABLED|HIGHBOX,246,(APTR)&mDropBrick,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem16= {&MainMenuItem17,-24,28,123,8,CHECKIT|ITEMENABLED|HIGHBOX,250,(APTR)&mMoveBrick,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem15= {&MainMenuItem16,-24,19,123,8,CHECKIT|ITEMENABLED|HIGHBOX|CHECKED,252,(APTR)&mBrick,NULL,NULL,NULL,MENUNULL};
static struct MenuItem MainMenuItem14= {&MainMenuItem15,-24,0,123,8,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText4,NULL,NULL,&MainSubItem1,MENUNULL};
static struct MenuItem MainMenuItem29= {NULL,0,72,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,255,(APTR)&MainIText5,NULL,'9',NULL,MENUNULL};
static struct MenuItem MainMenuItem28= {&MainMenuItem29,0,63,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,383,(APTR)&MainIText6,NULL,'8',NULL,MENUNULL};
static struct MenuItem MainMenuItem27= {&MainMenuItem28,0,54,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,447,(APTR)&MainIText7,NULL,'7',NULL,MENUNULL};
static struct MenuItem MainMenuItem26= {&MainMenuItem27,0,45,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,479,(APTR)&MainIText8,NULL,'6',NULL,MENUNULL};
static struct MenuItem MainMenuItem25= {&MainMenuItem26,0,36,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,495,(APTR)&MainIText9,NULL,'5',NULL,MENUNULL};
static struct MenuItem MainMenuItem24= {&MainMenuItem25,0,27,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP|CHECKED,503,(APTR)&MainIText10,NULL,'4',NULL,MENUNULL};
static struct MenuItem MainMenuItem23= {&MainMenuItem24,0,18,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,507,(APTR)&MainIText11,NULL,'3',NULL,MENUNULL};
static struct MenuItem MainMenuItem22= {&MainMenuItem23,0,9,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,509,(APTR)&MainIText12,NULL,'2',NULL,MENUNULL};
static struct MenuItem MainMenuItem21= {&MainMenuItem22,0,0,69,8,CHECKIT|ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,510,(APTR)&MainIText13,NULL,'1',NULL,MENUNULL};
static struct MenuItem MainMenuItem34= {NULL,0,95,128,8,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText22,NULL,NULL,&MainSubItem4,MENUNULL};
static struct MenuItem MainMenuItem33= {&MainMenuItem34,0,76,128,8,ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText23,NULL,'Q',NULL,MENUNULL};
static struct MenuItem MainMenuItem35= {&MainMenuItem33,0,57,128,8,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText30,NULL,0,NULL,MENUNULL};
static struct MenuItem MainMenuItem36= {&MainMenuItem35,0,47,128,8,ITEMTEXT|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText31,NULL,0,NULL,MENUNULL};
static struct MenuItem MainMenuItem32= {&MainMenuItem36,0,28,128,8,ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,0,(APTR)&MainIText24,NULL,'E',NULL,MENUNULL};
static struct MenuItem MainMenuItem31= {&MainMenuItem32,0,19,128,8,ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,4,(APTR)&MainIText25,NULL,'K',NULL,MENUNULL};
static struct MenuItem MainMenuItem30= {&MainMenuItem31,0,0,128,8,ITEMTEXT|COMMSEQ|ITEMENABLED|HIGHCOMP,4,(APTR)&MainIText26,NULL,'P',NULL,MENUNULL};
static struct Menu MainMenu3 = {NULL,146,0,57,0,NULL,"Tools",&MainMenuItem14};
static struct Menu MainMenu2 = {&MainMenu3,82,0,57,0,MENUENABLED,"Speed",&MainMenuItem21};
static struct Menu MainMenu1 = {&MainMenu2,0,0,75,0,MENUENABLED,"Project",&MainMenuItem30};
#define MainMenuList MainMenu1
static struct NewWindow MainNewWindowStructure = {0,0,320,200,1,0,MENUPICK,REPORTMOUSE|BORDERLESS|BACKDROP|ACTIVATE,NULL,NULL,NULL,NULL,NULL,320,200,320,200,CUSTOMSCREEN};
/*
* These files contain the image data for the requesters.
* They were broken out to make editing easier.
* (a 310,000 byte file is a bit hard on an editor...
*/
#include "ContinueImageData.h"
#include "SelectLevelImageData.h"
#include "SelectKeysImageData.h"
#include "HighScoresImageData.h"
#include "PauseImageData.h"
static struct Image ContinueImage = {0,0,78,33,5,ContinueImageData,0x001F,0x0000,NULL};
/* Select Level Requester info... */
static struct Image SelectLevelImage20 = {-18,-45,114,84,5,SelectLevelImageData20,0x001F,0x0000,NULL};
static struct Gadget SelectLevelGadget81 = {NULL,18,45,78,33,GADGIMAGE|GADGHIMAGE,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,(APTR)&SelectLevelImage20,(APTR)&ContinueImage,&SelectLevelIText30,NULL,NULL,gACCEPT,NULL};
static struct Gadget SelectLevelGadget80 = {&SelectLevelGadget81,10,21,22,21,GADGHNONE,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gLEVEL_UP,NULL};
static struct Gadget SelectLevelGadget79 = {&SelectLevelGadget80,82,21,22,21,GADGHNONE,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gLEVEL_DN,NULL};
#define SelectLevelGadgetList SelectLevelGadget79
static struct Requester SelectLevelRequesterStructure = {NULL,100,50,114,84,0,0,&SelectLevelGadgetList,NULL,NULL,NOISYREQ,0,NULL,NULL,NULL};
/* Select keys requester info... */
static struct Image SelectKeysImage21 = {-26,-121,129,160,5,SelectKeysImageData21,0x001F,0x0000,NULL};
static struct Gadget SelectKeysGadget84 = {NULL,26,121,78,33,GADGIMAGE|GADGHIMAGE,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,(APTR)&SelectKeysImage21,(APTR)&ContinueImage,&SelectKeysIText31,NULL,NULL,gACCEPT,NULL};
static struct Gadget SelectKeysGadget83 = {&SelectKeysGadget84,54,39,21,22,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gKEY_UP,NULL};
static struct Gadget SelectKeysGadget82 = {&SelectKeysGadget83,71,57,22,21,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gKEY_RT,NULL};
static struct Gadget SelectKeysGadget81 = {&SelectKeysGadget82,36,57,22,21,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gKEY_LF,NULL};
static struct Gadget SelectKeysGadget80 = {&SelectKeysGadget81,54,74,21,22,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gKEY_DN,NULL};
#define SelectKeysGadgetList SelectKeysGadget80
static struct Requester SelectKeysRequesterStructure = {NULL,90,20,129,160,0,0,&SelectKeysGadgetList,NULL,NULL,NOISYREQ,0,NULL,NULL,NULL};
/* High Scores requester info... */
static struct Image HighScoresImage22 = {-42,-141,237,180,5,HighScoresImageData22,0x001F,0x0000,NULL};
static struct Gadget HighScoresGadget111= {NULL,42,141,78,33,GADGIMAGE|GADGHIMAGE,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,(APTR)&HighScoresImage22,(APTR)&ContinueImage,&HighScoresIText35,NULL,NULL,gACCEPT,NULL};
static struct Gadget HighScoresGadget110= {&HighScoresGadget111,156,151,34,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gBACKSPACE,NULL};
static struct Gadget HighScoresGadget109= {&HighScoresGadget110,210,131,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'&',NULL};
static struct Gadget HighScoresGadget108= {&HighScoresGadget109,192,131,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,' ',NULL};
static struct Gadget HighScoresGadget107= {&HighScoresGadget108,174,131,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'Z',NULL};
static struct Gadget HighScoresGadget106= {&HighScoresGadget107,156,131,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'Y',NULL};
static struct Gadget HighScoresGadget105= {&HighScoresGadget106,210,111,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'X',NULL};
static struct Gadget HighScoresGadget104= {&HighScoresGadget105,192,111,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'W',NULL};
static struct Gadget HighScoresGadget103= {&HighScoresGadget104,174,111,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'V',NULL};
static struct Gadget HighScoresGadget102= {&HighScoresGadget103,156,111,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'U',NULL};
static struct Gadget HighScoresGadget101= {&HighScoresGadget102,210,91,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'T',NULL};
static struct Gadget HighScoresGadget100= {&HighScoresGadget101,192,91,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'S',NULL};
static struct Gadget HighScoresGadget99 = {&HighScoresGadget100,174,91,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'R',NULL};
static struct Gadget HighScoresGadget98 = {&HighScoresGadget99,156,91,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'Q',NULL};
static struct Gadget HighScoresGadget97 = {&HighScoresGadget98,210,71,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'P',NULL};
static struct Gadget HighScoresGadget96 = {&HighScoresGadget97,192,71,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'O',NULL};
static struct Gadget HighScoresGadget95 = {&HighScoresGadget96,174,71,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'N',NULL};
static struct Gadget HighScoresGadget94 = {&HighScoresGadget95,156,71,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'M',NULL};
static struct Gadget HighScoresGadget93 = {&HighScoresGadget94,210,51,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'L',NULL};
static struct Gadget HighScoresGadget92 = {&HighScoresGadget93,192,51,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'K',NULL};
static struct Gadget HighScoresGadget91 = {&HighScoresGadget92,174,51,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'J',NULL};
static struct Gadget HighScoresGadget90 = {&HighScoresGadget91,156,51,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'I',NULL};
static struct Gadget HighScoresGadget89 = {&HighScoresGadget90,210,31,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'H',NULL};
static struct Gadget HighScoresGadget88 = {&HighScoresGadget89,192,31,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'G',NULL};
static struct Gadget HighScoresGadget87 = {&HighScoresGadget88,174,31,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'F',NULL};
static struct Gadget HighScoresGadget86 = {&HighScoresGadget87,156,31,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'E',NULL};
static struct Gadget HighScoresGadget85 = {&HighScoresGadget86,210,11,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'D',NULL};
static struct Gadget HighScoresGadget84 = {&HighScoresGadget85,192,11,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'C',NULL};
static struct Gadget HighScoresGadget83 = {&HighScoresGadget84,174,11,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'B',NULL};
static struct Gadget HighScoresGadget82 = {&HighScoresGadget83,156,11,16,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,'A',NULL};
static struct Gadget HighScoresGadget81 = {&HighScoresGadget82,192,151,34,18,NULL,RELVERIFY,BOOLGADGET|REQGADGET,NULL,NULL,NULL,NULL,NULL,gCR,NULL};
#define HighScoresGadgetList HighScoresGadget81
static struct Requester HighScoresRequesterStructure = {NULL,40,13,237,180,0,0,&HighScoresGadgetList,NULL,NULL,NOISYREQ,0,NULL,NULL,NULL};
static struct Image PauseImage1 = {0,0,52,33,5,PauseImageData1,0x001F,0x0000,NULL};
static struct Image PauseImage2 = {0,0,68,33,5,PauseImageData2,0x001F,0x0000,NULL};
static struct Image PauseImage3 = {0,0,85,33,5,PauseImageData3,0x001F,0x0000,NULL};
static struct Gadget PauseGadget3 = {NULL,153,0,52,33,GADGIMAGE,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,(APTR)&PauseImage1,NULL,NULL,NULL,NULL,gQUIT,NULL};
static struct Gadget PauseGadget2 = {&PauseGadget3,85,0,68,33,GADGIMAGE,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,(APTR)&PauseImage2,NULL,NULL,NULL,NULL,gABORT,NULL};
static struct Gadget PauseGadget1 = {&PauseGadget2,0,0,85,33,GADGIMAGE,RELVERIFY|ENDGADGET,BOOLGADGET|REQGADGET,(APTR)&PauseImage3,NULL,NULL,NULL,NULL,gCONTINUE,NULL};
#define PauseGadgetList PauseGadget1
static struct Requester PauseRequesterStructure = {NULL,51,69,205,33,0,0,&PauseGadgetList,NULL,NULL,NOISYREQ,0,NULL,NULL,NULL};
VOID Show_Title()
{
ShowTitle(MyScreen,1L);
}
VOID Hide_Title()
{
ShowTitle(MyScreen,0L);
}
short OpenMyWindow()
{
if (MyScreen=OpenScreen(&NewScreenStructure))
{
LoadRGB4(&(MyScreen->ViewPort),Palette,32L);
MainNewWindowStructure.Screen=MyScreen;
if (MyWindow=OpenWindow(&MainNewWindowStructure))
{
SetMenuStrip(MyWindow,&MainMenuList);
SetWindowTitles(MyWindow,NULL,Title_Text);
ScreenToFront(MyScreen);
}
}
return( (MyWindow ? TRUE:FALSE) );
}
VOID CloseMyWindow()
{
if (MyWindow)
{
ClearMenuStrip(MyWindow);
CloseWindow(MyWindow);
MyWindow=NULL;
}
if (MyScreen)
{
CloseScreen(MyScreen);
MyScreen=NULL;
}
}
short Request_SelectLevel(lv) short lv;
{
register struct IntuiMessage *msg;
register struct Gadget *g;
register short add_flag=0;
register short loop=TRUE;
ULONG tmpIDCMP;
UBYTE tmp;
Show_Title();
if ((lv>0)&&(lv<MAX_LEVEL)) SelectLevel=lv;
sprintf(SelectLevelText,"%2d",SelectLevel);
tmpIDCMP=MyWindow->IDCMPFlags;
ModifyIDCMP(MyWindow,GADGETUP|INTUITICKS|RAWKEY);
if (Request(&SelectLevelRequesterStructure,MyWindow)) while (loop)
{
WaitPort(MyWindow->UserPort);
while (msg=(struct IntuiMessage *)GetMsg(MyWindow->UserPort))
{
if (loop) switch (msg->Class)
{
case RAWKEY: add_flag=0;
switch ((UBYTE)(msg->Code))
{
case RAW_CR_UP:
case RAW_EN_UP:
case RAW_SP_UP:
case RAW_A_UP: loop=FALSE;
EndRequest(&SelectLevelRequesterStructure,MyWindow);
break;
case RAW_RT: add_flag=1;
break;
case RAW_LF: add_flag=-1;
break;
default: if (((UBYTE)(msg->Code)) & 0x80)
{
tmp=Convert_Key((UBYTE)(msg->Code))-'0';
if ((tmp>=0) && (tmp<10))
{
add_flag=SelectLevel%10;
SelectLevel=0;
if (add_flag>(MAX_LEVEL/10)) add_flag=0;
add_flag=add_flag*10 + tmp;
if (!add_flag) add_flag=MAX_LEVEL+1;
}
}
break;
}
if (add_flag)
{
SelectLevel+=add_flag;
if (SelectLevel<1) SelectLevel=MAX_LEVEL;
if (SelectLevel>MAX_LEVEL) SelectLevel=SelectLevel%MAX_LEVEL;
sprintf(SelectLevelText,"%2d",SelectLevel);
RefreshGadgets(&SelectLevelGadget81,MyWindow,&SelectLevelRequesterStructure);
}
break;
case GADGETUP: g=(struct Gadget *)(msg->IAddress);
if (g->GadgetID==gACCEPT) loop=FALSE;
break;
case INTUITICKS: add_flag=0;
if (SelectLevelGadget80.Flags&SELECTED) add_flag=-1;
if (SelectLevelGadget79.Flags&SELECTED) add_flag=1;
if (add_flag)
{
SelectLevel+=add_flag;
if (SelectLevel<1) SelectLevel=MAX_LEVEL;
if (SelectLevel>MAX_LEVEL) SelectLevel=1;
sprintf(SelectLevelText,"%2d",SelectLevel);
RefreshGadgets(&SelectLevelGadget81,MyWindow,&SelectLevelRequesterStructure);
}
break;
}
ReplyMsg(msg);
}
}
ModifyIDCMP(MyWindow,tmpIDCMP);
Hide_Title();
return(SelectLevel);
}
VOID Request_SelectKeys()
{
register struct IntuiMessage *msg;
register struct Gadget *g;
register short change_flag=0;
register short loop=TRUE;
UBYTE tmp;
ULONG tmpIDCMP;
Show_Title();
tmpIDCMP=MyWindow->IDCMPFlags;
ModifyIDCMP(MyWindow,RAWKEY|GADGETUP);
if (Request(&SelectKeysRequesterStructure,MyWindow)) while (loop)
{
WaitPort(MyWindow->UserPort);
while (msg=(struct IntuiMessage *)GetMsg(MyWindow->UserPort))
{
if (loop) switch (msg->Class)
{
case GADGETUP: g=(struct Gadget *)(msg->IAddress);
fix_KeyList();
if (g->GadgetID==gACCEPT) loop=FALSE;
else
{
change_flag=g->GadgetID;
strcpy(KeyList[change_flag-gKEY_BASE].str,"¿?");
RefreshGadgets(&SelectKeysGadget84,MyWindow,&SelectKeysRequesterStructure);
}
break;
case RAWKEY: if (change_flag>0)
{
tmp=(UBYTE)msg->Code;
if ((tmp<RAW_MAX) && (tmp!=RAW_ESC))
{
KeyList[change_flag-gKEY_BASE].raw=tmp;
fix_KeyList();
RefreshGadgets(&SelectKeysGadget84,MyWindow,&SelectKeysRequesterStructure);
change_flag=0;
}
}
break;
}
ReplyMsg(msg);
}
}
ModifyIDCMP(MyWindow,tmpIDCMP);
Hide_Title();
}
VOID Request_HighScores(Score) register ULONG Score;
{
register short loop;
register short pos=8;
register struct IntuiMessage *msg;
UBYTE tmp;
ULONG tmpIDCMP;
Show_Title();
for (loop=0;loop<8;loop++) if (Score>ScoreList[loop].score) { pos=loop; loop=8; }
if (pos<7) for (loop=6;loop>=pos;loop--)
{
ScoreList[loop+1].score=ScoreList[loop].score;
strcpy(ScoreList[loop+1].str,ScoreList[loop].str);
}
if (pos<8)
{
sprintf(ScoreList[pos].str," %9ld",Score);
ScoreList[pos].score=Score;
}
loop=0;
tmpIDCMP=MyWindow->IDCMPFlags;
ModifyIDCMP(MyWindow,GADGETUP | RAWKEY);
if (Request(&HighScoresRequesterStructure,MyWindow)) while (loop>=0)
{
WaitPort(MyWindow->UserPort);
while (msg=(struct IntuiMessage *)GetMsg(MyWindow->UserPort))
{
if (loop>=0)
{
tmp=(UBYTE)(msg->Code);
if ((msg->Class==RAWKEY)&&(tmp&0x80)) tmp=Convert_Key(tmp);
else if (msg->Class==GADGETUP) tmp=((struct Gadget *)(msg->IAddress))->GadgetID;
else tmp=0;
switch (tmp)
{
case 0: break;
case gESC: EndRequest(&HighScoresRequesterStructure,MyWindow);
case gACCEPT: if (pos<8) ScoreList[pos].str[loop]=' ';
loop=-1;
break;
case gCR: if (pos<8)
{
ScoreList[pos].str[loop]=' ';
RefreshGadgets(&HighScoresGadget111,MyWindow,&HighScoresRequesterStructure);
}
pos=9;
break;
case gBACKSPACE:
if ((loop>0)&&(pos<8))
{
ScoreList[pos].str[loop--]=' ';
ScoreList[pos].str[loop]='';
RefreshGadgets(&HighScoresGadget111,MyWindow,&HighScoresRequesterStructure);
}
break;
default: if (pos<8) if (ScoreList[pos].str[loop+1]==' ')
{
ScoreList[pos].str[loop++]=tmp;
ScoreList[pos].str[loop]='';
RefreshGadgets(&HighScoresGadget111,MyWindow,&HighScoresRequesterStructure);
}
break;
}
}
ReplyMsg(msg);
}
}
ModifyIDCMP(MyWindow,tmpIDCMP);
Hide_Title();
}
short Request_Pause()
{
register short typ=2;
register struct IntuiMessage *msg;
register ULONG tmpIDCMP;
Show_Title();
tmpIDCMP=MyWindow->IDCMPFlags;
ModifyIDCMP(MyWindow,GADGETUP | RAWKEY);
if (Request(&PauseRequesterStructure,MyWindow))
{
typ=0;
while (!typ)
{
WaitPort(MyWindow->UserPort);
while (msg=(struct IntuiMessage *)GetMsg(MyWindow->UserPort))
{
if (!typ)
{
if (msg->Class==GADGETUP) typ=((struct Gadget *)(msg->IAddress))->GadgetID-gCONTINUE+1;
else if (msg->Class==RAWKEY) switch ((UBYTE)(msg->Code))
{
case RAW_SP_UP:
case RAW_CR_UP:
case RAW_C_UP: typ=-1; break;
case RAW_A_UP: typ=-2; break;
case RAW_Q_UP: typ=-3; break;
}
}
ReplyMsg(msg);
}
}
if (typ<0)
{
typ=0-typ;
EndRequest(&PauseRequesterStructure,MyWindow);
}
}
ModifyIDCMP(MyWindow,tmpIDCMP);
Hide_Title();
return(typ);
}
VOID UpDate_Status(level,score,lives) short level;
ULONG score;
short lives;
{
static short o_level=-1;
static ULONG o_score=3000000000L;
static short o_lives=-1;
if (level!=o_level)
{
sprintf(Level_Text,"Level:%3d",level);
o_level=level;
}
if (score!=o_score)
{
sprintf(Score_Text,"Score:%9ld",score);
o_score=score;
}
if (lives!=o_lives)
{
sprintf(Lives_Text,"Lives:%3d",lives);
o_lives=lives;
}
PrintIText(MyWindow->RPort,&MainIntuiTextList,0L,0L);
}
/* This will fade out (or in) the snake screen... */
VOID Set_Color_Level(chg) register short chg;
{
register short x;
register USHORT y;
register USHORT z;
USHORT OldPalette[32];
chg&=15;
for(x=0;x<32;x++)
{
y=Palette[x];
z=(y & 0x0F00)>>8;
if (z>chg) z-=chg; else z=0;
OldPalette[x]=z<<8;
z=(y & 0x00F0)>>4;
if (z>chg) z-=chg; else z=0;
OldPalette[x]+=z<<4;
z=(y & 0x000F);
if (z>chg) z-=chg; else z=0;
OldPalette[x]+=z;
}
LoadRGB4(&(MyScreen->ViewPort),OldPalette,32L);
}
VOID Cycle_Colors() /* This cycles the snake's colors... */
{
register USHORT x;
x=Palette[20];
Palette[20]=Palette[21];
Palette[21]=x;
LoadRGB4(&(MyScreen->ViewPort),Palette,32L);
}