home *** CD-ROM | disk | FTP | other *** search
/ Superpower (Alt) / SUPERPOWER.iso / q / source / preferen.m < prev    next >
Encoding:
Text File  |  1996-08-08  |  5.6 KB  |  331 lines

  1.  
  2. #import "qedefs.h"
  3.  
  4. id    preferences_i;
  5.  
  6. #define    DEFOWNER    "QuakeEd2"
  7.  
  8. float        lightaxis[3] = {1, 0.6, 0.75};
  9.  
  10. @implementation Preferences
  11.  
  12. - init
  13. {
  14.     [super init];
  15.     preferences_i = self;
  16.     return self;
  17. }
  18.  
  19. int _atoi (char *c)
  20. {
  21.     if (!c)
  22.         return 0;
  23.     return atoi(c);
  24. }
  25.  
  26. int _atof (char *c)
  27. {
  28.     if (!c)
  29.         return 0;
  30.     return atof(c);
  31. }
  32.  
  33. void WriteNumericDefault (char *name, float value)
  34. {
  35.     char    str[128];
  36.     
  37.     sprintf (str,"%f", value);
  38.     NXWriteDefault (DEFOWNER, name, str);
  39. }
  40. void WriteStringDefault (char *name, char *value)
  41. {
  42.     NXWriteDefault (DEFOWNER, name, value);
  43. }
  44.  
  45. //
  46. //    Read in at start of program
  47. //
  48. - readDefaults
  49. {
  50.     char *string;
  51.     float    value;
  52.     
  53.     string = (char *)NXGetDefaultValue(DEFOWNER,"ProjectPath");
  54.     [self setProjectPath: string];
  55.     
  56.     string = (char *)NXGetDefaultValue(DEFOWNER,"BspSoundPath");
  57.     [self setBspSoundPath:string];
  58.  
  59.     value = _atoi((char *)NXGetDefaultValue(DEFOWNER,"ShowBSPOutput"));
  60.     [self setShowBSP:value];
  61.  
  62.     value = _atoi((char *)NXGetDefaultValue(DEFOWNER,"OffsetBrushCopy"));
  63.     [self setBrushOffset:value];
  64.  
  65.     value = _atoi((char *)NXGetDefaultValue(DEFOWNER,"StartWad"));
  66.     [self setStartWad:value];
  67.  
  68.     value = _atof((char *)NXGetDefaultValue(DEFOWNER,"Xlight"));
  69.     [self setXlight:value];
  70.  
  71.     value = _atof((char *)NXGetDefaultValue(DEFOWNER,"Ylight"));
  72.     [self setYlight:value];
  73.  
  74.     value = _atof((char *)NXGetDefaultValue(DEFOWNER,"Zlight"));
  75.     [self setZlight:value];
  76.  
  77.     return self;
  78. }
  79.  
  80.  
  81. - setProjectPath:(char *)path
  82. {
  83.     if (!path)
  84.         path = "";
  85.     strcpy (projectpath, path);
  86.     [startproject_i setStringValue: path];
  87.     WriteStringDefault ("ProjectPath", path);
  88.     return self;
  89. }
  90.  
  91. - setCurrentProject:sender
  92. {
  93.     [startproject_i setStringValue: [project_i currentProjectFile]];
  94.     [self UIChanged: self];
  95.     return self;
  96. }
  97.  
  98. - (char *)getProjectPath
  99. {
  100.     return projectpath;
  101. }
  102.  
  103.  
  104. //
  105. //===============================================
  106. //    BSP sound stuff
  107. //===============================================
  108. //
  109. //    Set the BSP sound using an OpenPanel
  110. //
  111. - setBspSound:sender
  112. {
  113.     id    panel;
  114.     char    *types[]={"snd",NULL};
  115.     int    rtn;
  116.     char    **filename;
  117.     char    path[1024], file[64];
  118.     
  119.     panel = [OpenPanel new];
  120.  
  121.     ExtractFilePath (bspSound, path);
  122.     ExtractFileBase (bspSound, file);
  123.     
  124.     rtn = [panel 
  125.             runModalForDirectory:path 
  126.             file: file
  127.             types: types];
  128.  
  129.     if (rtn)
  130.     {
  131.         filename = (char **)[panel filenames];
  132.         strcpy(bspSound,[panel directory]);
  133.         strcat(bspSound,"/");
  134.         strcat(bspSound,filename[0]);
  135.         [self setBspSoundPath:bspSound];
  136.         [self playBspSound];
  137.     }
  138.  
  139.     return self;
  140. }
  141.  
  142.  
  143. //
  144. //    Play the BSP sound
  145. //
  146. - playBspSound
  147. {
  148.     [bspSound_i play];    
  149.     return self;
  150. }
  151.  
  152.  
  153. //
  154. //    Set the bspSound path
  155. //
  156. - setBspSoundPath:(char *)path
  157. {
  158.     if (!path)
  159.         path = "";
  160.     strcpy(bspSound,path);
  161.  
  162.     if (bspSound_i)
  163.         [bspSound_i free];
  164.     bspSound_i = [[Sound alloc] initFromSoundfile:bspSound];
  165.     if (!bspSound_i)
  166.     {
  167.         strcpy (bspSound, "/NextLibrary/Sounds/Funk.snd");
  168.         bspSound_i = [[Sound alloc] initFromSoundfile:bspSound];
  169.     }
  170.  
  171.     [bspSoundField_i setStringValue:bspSound];
  172.     
  173.     WriteStringDefault ("BspSoundPath", bspSound);
  174.     
  175.     return self;
  176. }
  177.  
  178. //===============================================
  179. //    Show BSP Output management
  180. //===============================================
  181.  
  182. //
  183. //    Set the state
  184. //
  185. - setShowBSP:(int)state
  186. {
  187.     showBSP = state;
  188.     [showBSP_i setIntValue:state];
  189.     WriteNumericDefault ("ShowBSPOutput", showBSP);
  190.  
  191.     return self;
  192. }
  193.  
  194. //
  195. //    Get the state
  196. //
  197. - (int)getShowBSP
  198. {
  199.     return showBSP;
  200. }
  201.  
  202.  
  203. //===============================================
  204. //    "Offset Brush ..." management
  205. //===============================================
  206.  
  207. //
  208. //    Set the state
  209. //
  210. - setBrushOffset:(int)state
  211. {
  212.     brushOffset = state;
  213.     [brushOffset_i setIntValue:state];
  214.     WriteNumericDefault ("OffsetBrushCopy", state);
  215.     return self;
  216. }
  217.  
  218. //
  219. //    Get the state
  220. //
  221. - (int)getBrushOffset
  222. {
  223.     return brushOffset;
  224. }
  225.  
  226. //===============================================
  227. //    StartWad
  228. //===============================================
  229.  
  230. - setStartWad:(int)value        // set start wad (0-2)
  231. {
  232.     startwad = value;
  233.     if (startwad<0 || startwad>2)
  234.         startwad = 0;
  235.     
  236.     [startwad_i selectCellAt:startwad : 0];
  237.  
  238.     WriteNumericDefault ("StartWad", value);
  239.     return self;
  240. }
  241.  
  242. - (int)getStartWad
  243. {
  244.     return startwad;
  245. }
  246.  
  247.  
  248. //===============================================
  249. //    X,Y,Z light values
  250. //===============================================
  251. //
  252. //    Set the state
  253. //
  254. - setXlight:(float)value
  255. {
  256.     xlight = value;
  257.     if (xlight < 0.25 || xlight > 1)
  258.         xlight = 0.6;
  259.     lightaxis[1] = xlight;
  260.     [xlight_i setFloatValue:xlight];
  261.     WriteNumericDefault ("Xlight", xlight);
  262.     return self;
  263. }
  264. - setYlight:(float)value
  265. {
  266.     ylight = value;
  267.     if (ylight < 0.25 || ylight > 1)
  268.         ylight = 0.75;
  269.     lightaxis[2] = ylight;
  270.     [ylight_i setFloatValue:ylight];
  271.     WriteNumericDefault ("Ylight", ylight);
  272.     return self;
  273. }
  274. - setZlight:(float)value
  275. {
  276.     zlight = value;
  277.     if (zlight < 0.25 || zlight > 1)
  278.         zlight = 1;
  279.     lightaxis[0] = zlight;
  280.     [zlight_i setFloatValue:zlight];
  281.     WriteNumericDefault ("Zlight", zlight);
  282.     return self;
  283. }
  284.  
  285. //
  286. //    Get the state
  287. //
  288. - (float)getXlight
  289. {
  290.     return [xlight_i floatValue];
  291. }
  292. - (float)getYlight
  293. {
  294.     return [ylight_i floatValue];
  295. }
  296. - (float)getZlight
  297. {
  298.     return [zlight_i floatValue];
  299. }
  300.  
  301.  
  302.  
  303. /*
  304. ============
  305. UIChanged
  306.  
  307. Grab all the current UI state
  308. ============
  309. */
  310. -UIChanged: sender
  311. {
  312.     qprintf ("defaults updated");
  313.     
  314.     [self setProjectPath: (char *)[startproject_i stringValue]];
  315.     [self setBspSoundPath: (char *)[bspSoundField_i stringValue]];
  316.     [self setShowBSP: [showBSP_i intValue]];
  317.     [self setBrushOffset: [brushOffset_i intValue]];
  318.     [self setStartWad: [startwad_i selectedRow]];
  319.     [self setXlight: [xlight_i floatValue]];
  320.     [self setYlight: [ylight_i floatValue]];
  321.     [self setZlight: [zlight_i floatValue]];
  322.  
  323.     [map_i makeGlobalPerform: @selector(flushTextures)];
  324.     [quakeed_i updateAll];
  325.         
  326.     return self;
  327. }
  328.  
  329.  
  330. @end
  331.