/************************************************************ * * FUNCTION: ErrThrow * * DESCRIPTION: A Throw causes a jump to the nearest Catch block. * * PARAMETERS: error code * * RETURNS: never returns * * CREATED: 3/2/95 * * BY: Ron Marianetti * *************************************************************/ void ErrThrow(Int32 err) { ErrExceptionType* tryP; tryP = (ErrExceptionPtr)*ErrExceptionList(); if (tryP) { tryP->err = err; ErrLongJump(tryP->state, 1); } else { ErrDisplay("ErrThrow called without a pending ErrTry"); } }
void removeAI(UInt8 aiNum) { PlayerStruct playerTemp[game.numPlayersOnScreen - 1]; UInt16 i; Err err; if(game.numPlayersOnScreen < 1) { ErrDisplay("In removeAI(), there are no players to remove"); } //move all player data to temp var: for(i = 0; i < aiNum; i++) { //move each player until one to delete appears playerTemp[i] = player[i]; } for(i = aiNum + 1; i < game.numPlayersOnScreen; i++) { //move each player until end playerTemp[i - 1] = player[i]; } //players are in place and top player is useless, can now resize game.numPlayersOnScreen--; //resize to the number of players err = MemHandleResize(playerH, sizeof(PlayerStruct) * (game.numPlayersOnScreen)); if(err == memErrChunkLocked) { //unlock MemHandleUnlock(playerH); if(err = MemHandleResize(playerH, sizeof(PlayerStruct) * game.numPlayersOnScreen)) { ErrFatalDisplay("In removeAI, couldn't resize player stack"); } player = (PlayerStruct *)MemHandleLock(playerH); } else if(err != errNone) { //some other error ErrFatalDisplay("In removeAI, couldn't resize player stack"); } //copy orginal back to stack MemMove(player, (PlayerStruct *)&playerTemp, sizeof(PlayerStruct) * game.numPlayersOnScreen); }
static Int16 LoadSMF(SndMidiListItemType midi, NoteListPtr list) { Err err = false; DmOpenRef dbP; UInt16 recIndex; MemHandle midiH; debugPrintf("LoadSMF: open db cardNo=%d dbID=%d for readOnly\n", midi.cardNo, midi.dbID); dbP = DmOpenDatabase (midi.cardNo, midi.dbID, dmModeReadOnly); if (!dbP) err = true; if (!err) err = DmFindRecordByID(dbP, midi.uniqueRecID, &recIndex); debugPrintf("LoadSMF: find record with uniqueRecID=%ld\n", midi.uniqueRecID); if (!err) { midiH = DmQueryRecord (dbP, recIndex); if (!midiH) err = true; } debugPrintf("LoadSMF: midiH=%lx size=%ld\n", midiH, MemHandleSize(midiH)); if (!err) smfutils_load(midiH, list); if (dbP) DmCloseDatabase (dbP); if (err) ErrDisplay ("LoadSMF(): error occure in function."); return true; }
void DialogOK ( Word frmname, Short p1, Short p2 ) { FormPtr prevForm, frm; Word hitButton; Char msg[(MaxName * 2) + 128]; Word fieldname = 0; switch ( frmname ) { case frmNextPlayer: fieldname = fldNextPlayer; if( (stor.numplayers + stor.numcomputers) > 1 ) { StrPrintF( msg, NextPlayerString, stor.player[p1].name, stor.player[p2].name, NULL); } else { StrPrintF( msg, "%s", NextSoloPlayerString, NULL ); } break; case frmSuspend: if( (stor.numplayers + stor.numcomputers) == 1 ) { return; } fieldname = fldSuspend; StrPrintF( msg, SuspendString, stor.player[p1].name, stor.player[p2].name, NULL); break; case frmLost: fieldname = fldLost; StrPrintF( msg, LostString, stor.player[p1].name, NULL ); break; case frmLeader: fieldname = fldLeader; StrPrintF( msg, LeaderString, stor.player[p1].name, NULL ); break; case frmWinner: fieldname = fldWinner; StrPrintF( msg, WinnerString, stor.player[p1].name, NULL ); break; case frmNobodyWon: fieldname = fldNobodyWon; StrPrintF( msg, NobodyWonString, NULL ); break; case frmBump: fieldname = fldBump; StrPrintF( msg, BumpString, stor.player[p2].name, stor.player[p1].name, stor.player[p2].score, stor.player[p1].score, NULL ); break; case frmSampler: fieldname = fldSampler; StrPrintF( msg, SamplerString, stor.player[p1].name, NULL ); break; case frmTrainWreck: fieldname = fldTrainWreck; StrPrintF( msg, TrainWreckString, stor.player[p1].name, stor.player[p1].TWcount, stor.nTrainWrecks, NULL ); break; default: ErrDisplay( "DialogOK: fall through: Programmer sucks." ); return; } // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmname ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Fill it... ErrFatalDisplayIf( fieldname == 0, "DialogOK: ZeroField: Programmer sucks." ); SetFieldTextFromStr( fieldname, msg ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } // We don't care about which button, there is only one. }
void addAI(PlayerType type, PointType firstPos) { /* adds a member to be controlled by computer. * needs revision*/ PlayerStruct stack[game.numPlayersOnScreen]; PlayerStruct temp; //set type for info temp.type = type; //set position temp.health = aInfo[type].orgHealth; temp.oldpos = firstPos; temp.nextpos = firstPos; temp.dirSpeed[left]= 0; temp.dirSpeed[right]= 0; temp.dirSpeed[down]= 0; temp.dirSpeed[up]= 0; temp.dirSpeed[select]= 0; //if there is at least one ai if(playerH) { //resize player variable to +1 sizeof(player structure) Err err = true; //move data from stack to temp MemMove(&stack, player, sizeof(PlayerStruct) * game.numPlayersOnScreen); err = MemHandleResize(playerH, sizeof(PlayerStruct) * (game.numPlayersOnScreen + 1)); if(err == memErrChunkLocked) { //needs to be unlocked first MemHandleUnlock(playerH); err = MemHandleResize(playerH, sizeof(PlayerStruct) * (game.numPlayersOnScreen + 1)); ErrFatalDisplayIf(err, "In addAI(), error resizing player stack"); player = (PlayerStruct *)MemHandleLock(playerH); } else { //resizing didnt work ErrDisplay("In addAI(), Couldn't resize player stack"); } //didn't need to unlock MemMove(player, &stack, sizeof(PlayerStruct) * game.numPlayersOnScreen); game.numPlayersOnScreen++; //set that player data to temp player[game.numPlayersOnScreen-1] = temp; } else { //there is no players at all //make new memhandle to a player which is size of one player playerH = MemHandleNew(sizeof(PlayerStruct)); ErrFatalDisplayIf(!playerH, "In addAI(), Couldn't make new handle to PlayerStruct"); player = (PlayerStruct *)MemHandleLock(playerH); game.numPlayersOnScreen = 1; //set that player data to temp player[0] = temp; } }
void addObjective(ObjectiveType type, PointType pos) { /* adds a member to be controlled by computer. * needs revision*/ ObjStruct stack[game.numObjsOnScreen]; ObjStruct temp; temp.type = type; temp.pos = pos; switch(type) { case munitionsObj: temp.bmp = munitionsBmp; temp.health = OBJ_HEALTH_MAJOR; break; case coalplantObj: temp.bmp = coalplantBmp; temp.health = OBJ_HEALTH_MAJOR; break; case v2Obj: temp.bmp = v2Bmp; temp.health = OBJ_HEALTH_MAJOR; break; case aagunObj: temp.bmp = aagunBmp; temp.health = OBJ_HEALTH_MINOR; break; case art88mmObj: temp.bmp = art88mmBmp; temp.health = OBJ_HEALTH_MEDIUM; break; case howitzersObj: temp.bmp = howitzersBmp; temp.health = OBJ_HEALTH_MINOR; break; case radarstationObj: temp.bmp = radarstationBmp; temp.health = OBJ_HEALTH_MEDIUM; break; case panzersObj: temp.bmp = panzersBmp; temp.health = OBJ_HEALTH_MINOR; break; case kingtigersObj: temp.bmp = kingtigersBmp; temp.health = OBJ_HEALTH_MEDIUM; break; case bunkerObj: temp.bmp = bunkerBmp; temp.health = OBJ_HEALTH_MINOR; break; } //if there is at least one ai if(objH) { //resize player variable to +1 sizeof(player structure) Err err = true; //move data from stack to temp MemMove(&stack, obj, sizeof(ObjStruct) * game.numObjsOnScreen); err = MemHandleResize(objH, sizeof(ObjStruct) * (game.numObjsOnScreen + 1)); if(err == memErrChunkLocked) { //needs to be unlocked first MemHandleUnlock(objH); err = MemHandleResize(objH, sizeof(ObjStruct) * (game.numObjsOnScreen + 1)); ErrFatalDisplayIf(err, "In addAI(), error resizing player stack"); obj = (ObjStruct *)MemHandleLock(objH); } else { //resizing didnt work ErrDisplay("In addAI(), Couldn't resize player stack"); } //didn't need to unlock MemMove(obj, &stack, sizeof(ObjStruct) * game.numObjsOnScreen); game.numObjsOnScreen++; //set that player data to temp obj[game.numObjsOnScreen-1] = temp; } else { //there is no players at all //make new memhandle to a player which is size of one player objH = MemHandleNew(sizeof(ObjStruct)); ErrFatalDisplayIf(!objH, "In addAI(), Couldn't make new handle to PlayerStruct"); obj = (ObjStruct *)MemHandleLock(objH); game.numObjsOnScreen = 1; //set that player data to temp obj[0] = temp; } }