mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-05 20:50:43 +00:00
d23300d58b
The result isn't perfect, but it cleans up the whitespace and makes the code more consistent with the rest of the project.
341 lines
6.1 KiB
Objective-C
341 lines
6.1 KiB
Objective-C
|
|
#include "Preferences.h"
|
|
#include "Map.h"
|
|
#include "QuakeEd.h"
|
|
#include "Project.h"
|
|
|
|
id preferences_i;
|
|
|
|
#define DEFOWNER "QuakeEd2"
|
|
|
|
float lightaxis[3] = { 1, 0.6, 0.75 };
|
|
|
|
@implementation Preferences
|
|
|
|
-init
|
|
{
|
|
[super init];
|
|
preferences_i = self;
|
|
return self;
|
|
}
|
|
|
|
int
|
|
_atoi (char *c)
|
|
{
|
|
if (!c)
|
|
return 0;
|
|
return atoi (c);
|
|
}
|
|
|
|
int
|
|
_atof (char *c)
|
|
{
|
|
if (!c)
|
|
return 0;
|
|
return atof (c);
|
|
}
|
|
|
|
void
|
|
WriteNumericDefault (char *name, float value)
|
|
{
|
|
char str[128];
|
|
|
|
sprintf (str, "%f", value);
|
|
// XXX NSWriteDefault (DEFOWNER, name, str);
|
|
}
|
|
|
|
void
|
|
WriteStringDefault (char *name, char *value)
|
|
{
|
|
// XXX NSWriteDefault (DEFOWNER, name, value);
|
|
}
|
|
|
|
//
|
|
// Read in at start of program
|
|
//
|
|
-readDefaults
|
|
{
|
|
char *string = "";
|
|
float value = 0;
|
|
|
|
// XXX string = (char *)NSGetDefaultValue(DEFOWNER,"ProjectPath");
|
|
[self setProjectPath:string];
|
|
|
|
// XXX string = (char *)NSGetDefaultValue(DEFOWNER,"BspSoundPath");
|
|
[self setBspSoundPath:string];
|
|
|
|
// XXX value = _atoi((char *)NSGetDefaultValue(DEFOWNER,"ShowBSPOutput"));
|
|
[self setShowBSP:value];
|
|
|
|
// XXX value = _atoi((char
|
|
// *)NSGetDefaultValue(DEFOWNER,"OffsetBrushCopy"));
|
|
[self setBrushOffset:value];
|
|
|
|
// XXX value = _atoi((char *)NSGetDefaultValue(DEFOWNER,"StartWad"));
|
|
[self setStartWad:value];
|
|
|
|
// XXX value = _atof((char *)NSGetDefaultValue(DEFOWNER,"Xlight"));
|
|
[self setXlight:value];
|
|
|
|
// XXX value = _atof((char *)NSGetDefaultValue(DEFOWNER,"Ylight"));
|
|
[self setYlight:value];
|
|
|
|
// XXX value = _atof((char *)NSGetDefaultValue(DEFOWNER,"Zlight"));
|
|
[self setZlight:value];
|
|
|
|
return self;
|
|
}
|
|
|
|
|
|
-setProjectPath:(char *) path
|
|
{
|
|
if (!path)
|
|
path = "";
|
|
strcpy (projectpath, path);
|
|
[startproject_i setStringValue: [NSString stringWithCString:path]];
|
|
WriteStringDefault ("ProjectPath", path);
|
|
return self;
|
|
}
|
|
|
|
-setCurrentProject:sender
|
|
{
|
|
[startproject_i setStringValue: [NSString stringWithCString:[project_i
|
|
currentProjectFile]]];
|
|
[self UIChanged:self];
|
|
return self;
|
|
}
|
|
|
|
-(char *) getProjectPath
|
|
{
|
|
return projectpath;
|
|
}
|
|
|
|
|
|
//
|
|
//===============================================
|
|
// BSP sound stuff
|
|
//===============================================
|
|
//
|
|
// Set the BSP sound using an OpenPanel
|
|
//
|
|
-setBspSound:sender
|
|
{
|
|
id panel;
|
|
NSString *types[] = { @"snd" };
|
|
int rtn;
|
|
NSArray *filenames;
|
|
char path[1024], file[64];
|
|
|
|
panel =[NSOpenPanel new];
|
|
|
|
// XXX ExtractFilePath (bspSound, path);
|
|
// XXX ExtractFileBase (bspSound, file);
|
|
|
|
rtn =[panel runModalForDirectory: [NSString stringWithCString:path]
|
|
file: [NSString stringWithCString:file]
|
|
types: [NSArray arrayWithObjects: types count:1]];
|
|
|
|
if (rtn) {
|
|
filenames =[panel filenames];
|
|
strcpy (bspSound,[[panel directory] cString]);
|
|
strcat (bspSound, "/");
|
|
strcat (bspSound,[[filenames objectAtIndex:0] cString]);
|
|
[self setBspSoundPath:bspSound];
|
|
[self playBspSound];
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
|
|
//
|
|
// Play the BSP sound
|
|
//
|
|
-playBspSound
|
|
{
|
|
[bspSound_i play];
|
|
return self;
|
|
}
|
|
|
|
|
|
//
|
|
// Set the bspSound path
|
|
//
|
|
-setBspSoundPath:(char *) path
|
|
{
|
|
if (!path)
|
|
path = "";
|
|
strcpy (bspSound, path);
|
|
|
|
if (bspSound_i)
|
|
[bspSound_i release];
|
|
bspSound_i =[[NSSound alloc] initWithContentsOfFile: [NSString stringWithCString:bspSound]];
|
|
if (!bspSound_i) {
|
|
strcpy (bspSound, "/NextLibrary/Sounds/Funk.snd");
|
|
bspSound_i =[[NSSound alloc] initWithContentsOfFile: [NSString stringWithCString:bspSound]];
|
|
}
|
|
|
|
[bspSoundField_i setStringValue: [NSString stringWithCString:bspSound]];
|
|
|
|
WriteStringDefault ("BspSoundPath", bspSound);
|
|
|
|
return self;
|
|
}
|
|
|
|
//===============================================
|
|
// Show BSP Output management
|
|
//===============================================
|
|
|
|
//
|
|
// Set the state
|
|
//
|
|
-setShowBSP:(int) state
|
|
{
|
|
showBSP = state;
|
|
[showBSP_i setIntValue:state];
|
|
WriteNumericDefault ("ShowBSPOutput", showBSP);
|
|
|
|
return self;
|
|
}
|
|
|
|
//
|
|
// Get the state
|
|
//
|
|
-(int) getShowBSP
|
|
{
|
|
return showBSP;
|
|
}
|
|
|
|
|
|
//===============================================
|
|
// "Offset Brush ..." management
|
|
//===============================================
|
|
|
|
//
|
|
// Set the state
|
|
//
|
|
-setBrushOffset:(int) state
|
|
{
|
|
brushOffset = state;
|
|
[brushOffset_i setIntValue:state];
|
|
WriteNumericDefault ("OffsetBrushCopy", state);
|
|
return self;
|
|
}
|
|
|
|
//
|
|
// Get the state
|
|
//
|
|
-(int) getBrushOffset
|
|
{
|
|
return brushOffset;
|
|
}
|
|
|
|
//===============================================
|
|
// StartWad
|
|
//===============================================
|
|
|
|
-setStartWad:(int) value // set start wad (0-2)
|
|
{
|
|
startwad = value;
|
|
if (startwad < 0 || startwad > 2)
|
|
startwad = 0;
|
|
|
|
[startwad_i selectCellAtRow: startwad column:0];
|
|
|
|
WriteNumericDefault ("StartWad", value);
|
|
return self;
|
|
}
|
|
|
|
-(int) getStartWad
|
|
{
|
|
return startwad;
|
|
}
|
|
|
|
|
|
//===============================================
|
|
// X,Y,Z light values
|
|
//===============================================
|
|
//
|
|
// Set the state
|
|
//
|
|
-setXlight:(float) value
|
|
{
|
|
xlight = value;
|
|
if (xlight < 0.25 || xlight > 1)
|
|
xlight = 0.6;
|
|
lightaxis[1] = xlight;
|
|
[xlight_i setFloatValue:xlight];
|
|
WriteNumericDefault ("Xlight", xlight);
|
|
return self;
|
|
}
|
|
|
|
-setYlight:(float) value
|
|
{
|
|
ylight = value;
|
|
if (ylight < 0.25 || ylight > 1)
|
|
ylight = 0.75;
|
|
lightaxis[2] = ylight;
|
|
[ylight_i setFloatValue:ylight];
|
|
WriteNumericDefault ("Ylight", ylight);
|
|
return self;
|
|
}
|
|
|
|
-setZlight:(float) value
|
|
{
|
|
zlight = value;
|
|
if (zlight < 0.25 || zlight > 1)
|
|
zlight = 1;
|
|
lightaxis[0] = zlight;
|
|
[zlight_i setFloatValue:zlight];
|
|
WriteNumericDefault ("Zlight", zlight);
|
|
return self;
|
|
}
|
|
|
|
//
|
|
// Get the state
|
|
//
|
|
-(float) getXlight
|
|
{
|
|
return[xlight_i floatValue];
|
|
}
|
|
|
|
-(float) getYlight
|
|
{
|
|
return[ylight_i floatValue];
|
|
}
|
|
|
|
-(float) getZlight
|
|
{
|
|
return[zlight_i floatValue];
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
============
|
|
UIChanged
|
|
|
|
Grab all the current UI state
|
|
============
|
|
*/
|
|
-UIChanged:sender
|
|
{
|
|
qprintf ("defaults updated");
|
|
|
|
[self setProjectPath:(char *)[startproject_i stringValue]];
|
|
[self setBspSoundPath:(char *)[bspSoundField_i stringValue]];
|
|
[self setShowBSP:[showBSP_i intValue]];
|
|
[self setBrushOffset:[brushOffset_i intValue]];
|
|
[self setStartWad:[startwad_i selectedRow]];
|
|
[self setXlight:[xlight_i floatValue]];
|
|
[self setYlight:[ylight_i floatValue]];
|
|
[self setZlight:[zlight_i floatValue]];
|
|
|
|
[map_i makeGlobalPerform:@selector (flushTextures)];
|
|
[quakeed_i updateAll];
|
|
|
|
return self;
|
|
}
|
|
|
|
|
|
@end
|