예제 #1
0
/************************************************************
 *
 *  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");
		}

}
예제 #2
0
파일: ai.c 프로젝트: geoffmacd/Allied-Ace
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);	
}
예제 #3
0
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;
}
예제 #4
0
파일: draw.c 프로젝트: docwhat/cwimp
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.
}
예제 #5
0
파일: ai.c 프로젝트: geoffmacd/Allied-Ace
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;
	}	
}
예제 #6
0
파일: ai.c 프로젝트: geoffmacd/Allied-Ace
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;
	}	
}