ftp.nice.ch/pub/next/tools/screen/backspace/Explode.NIHS.bs.tar.gz#/ExplodeView.BackModule/ExplodeView.m

This is ExplodeView.m in view mode; [Download] [Up]

#import "ExplodeView.h"
#import "Explosion.h"

#define	DEFAULT_EXPLOSIONS	 4
#define DEFAULT_PLOTS				30

@implementation ExplodeView


- initFrame:(NXRect *)frameRect
{
	const char	*aDefault;

	aDefault = NXReadDefault( "BackSpace", "ExplodeMax" );
  if( !aDefault )
		newMaxExplosions = maxExplosions = DEFAULT_EXPLOSIONS;
	else
		newMaxExplosions = maxExplosions = atoi( aDefault );

	aDefault = NXReadDefault( "BackSpace", "ExplodeMaxPlot" );
  if( !aDefault )
		newMaxPlot = maxPlot = DEFAULT_PLOTS;
	else
		newMaxPlot = maxPlot = atoi( aDefault );

	aDefault = NXReadDefault( "BackSpace", "ExplodeBuffered" );
  if( !aDefault )
		bufferedWindow = YES;
	else
		bufferedWindow = ( BOOL )atoi( aDefault );
	
	initDone = NO;

	return self;
}


- drawSelf:( const NXRect * )rects :( int )rectCount
{
	int		loop;
	char	aDefault[ 50 ];

	[ self getFrame: &theRect ];

	if( maxPlot != newMaxPlot || maxExplosions != newMaxExplosions || initDone == NO )
	{
		initDone = YES;

		maxPlot = newMaxPlot;
		maxExplosions = newMaxExplosions;

		sprintf( aDefault, "%d", maxExplosions );
		NXWriteDefault( "BackSpace", "ExplodeMax", aDefault );
		sprintf( aDefault, "%d", maxPlot );
		NXWriteDefault( "BackSpace", "ExplodeMaxPlot", aDefault );
		sprintf( aDefault, "%d", ( int )bufferedWindow );
		NXWriteDefault( "BackSpace", "ExplodeBuffered", aDefault );

		loop = 0;
		while( myExplosions[ loop ] != nil )
		{
			[ myExplosions[ loop ] free ];
			myExplosions[ loop++ ] = nil;
		}

		for( loop = 0; loop < maxExplosions; loop++ )
		{
			myExplosions[ loop ] = [ [ Explosion alloc ] init ];
			[ myExplosions[ loop ] initStart: &theRect withPlots: maxPlot 
														 mode: [ self shouldDrawColor ] ];
		}
	}

	if( !rects || !rectCount )
		return self;

	PSsetgray( 0 );
	NXRectFill( rects );

	return self;
}


- oneStep
{
	int	loop;

	for( loop = 0; loop < maxExplosions; loop++ )
	{
		[ myExplosions[ loop ] clearSim ];
		[ myExplosions[ loop ] doSim ];
	}

	for( loop = 0; loop < maxExplosions; loop++ )
		[ myExplosions[ loop ] showSim ];

	return self;
}


- ( BOOL )useBufferedWindow
{
	return( bufferedWindow );
}


- inspector: sender
{
  char buf[ MAXPATHLEN ];

  if( !inspector )
  {
  	[ NXBundle getPath: buf 
               forResource:"ExplodeView" 
               ofType:"nib" 
               inDirectory:[ sender moduleDirectory:"Explode" ] 
               withVersion:0 ];
    [ NXApp loadNibFile:buf owner:self withNames:NO ];
  }

  return( inspector );
}


- inspectorInstalled
{
	[ plots setIntValue: maxPlot ];
	[ numPlotsSlider setIntValue: maxPlot ];

	[ explosions setIntValue: maxExplosions ];
	[ numExplodesSlider setIntValue: maxExplosions ];

	[ useBufferedWindow setState:( int )bufferedWindow ];

	return self;
}


- sizeTo:( NXCoord )theWidth: ( NXCoord )theHeight
{
	initDone = NO;
	return( [super sizeTo:theWidth :theHeight] );
}


- setNumExplodes: sender
{
	newMaxExplosions = [ sender intValue ];
	[ explosions setIntValue: newMaxExplosions ];

	return self;
}


- setNumPlots: sender;
{
	newMaxPlot = [ sender intValue ];
	[ plots setIntValue: newMaxPlot ];

	return self;
}


- toggleBuffered: sender;
{
	bufferedWindow = bufferedWindow ? NO : YES;

	return self;
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.