home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / main / kcurve.c < prev    next >
C/C++ Source or Header  |  1998-06-08  |  5KB  |  190 lines

  1. /*
  2.  * $Source: f:/miner/source/main/editor/rcs/kcurve.c $
  3.  * $Revision: 2.0 $
  4.  * $Author: john $
  5.  * $Date: 1995/02/27 11:35:29 $
  6.  *
  7.  * Functions for curve stuff.
  8.  *
  9.  * $Log: kcurve.c $
  10.  * Revision 2.0  1995/02/27  11:35:29  john
  11.  * Version 2.0! No anonymous unions, Watcom 10.0, with no need
  12.  * for bitmaps.tbl.
  13.  * 
  14.  * Revision 1.17  1994/08/25  21:56:43  mike
  15.  * IS_CHILD stuff.
  16.  * 
  17.  * Revision 1.16  1994/05/14  17:17:54  matt
  18.  * Got rid of externs in source (non-header) files
  19.  * 
  20.  * Revision 1.15  1994/01/28  10:52:24  mike
  21.  * Bind set_average_light_on_curside to DeleteCurve
  22.  * 
  23.  * Revision 1.14  1994/01/25  17:34:47  mike
  24.  * Stupidly bound fix_bogus_uvs_all to delete curve.
  25.  * 
  26.  * Revision 1.13  1993/12/06  19:34:15  yuan
  27.  * Fixed autosave so that undo restores Cursegp
  28.  * and Markedsegp
  29.  * 
  30.  * Revision 1.12  1993/12/02  12:39:28  matt
  31.  * Removed extra includes
  32.  * 
  33.  * Revision 1.11  1993/11/12  13:08:38  yuan
  34.  * Fixed warning for concave segment so it appears after any
  35.  * "less important" diagnostic messages.
  36.  * 
  37.  * Revision 1.10  1993/11/11  17:03:25  yuan
  38.  * Fixed undo-status display
  39.  * 
  40.  * Revision 1.9  1993/11/11  15:55:11  yuan
  41.  * Added undo messages.
  42.  * 
  43.  * Revision 1.8  1993/11/08  19:13:30  yuan
  44.  * Added Undo command (not working yet)
  45.  * 
  46.  * Revision 1.7  1993/11/05  17:32:51  john
  47.  * added funcs
  48.  * .,
  49.  * 
  50.  * Revision 1.6  1993/10/29  19:12:41  yuan
  51.  * Added diagnostic messages
  52.  * 
  53.  * Revision 1.5  1993/10/29  16:26:30  yuan
  54.  * Added diagnostic messages for curve generation
  55.  * 
  56.  * Revision 1.4  1993/10/22  19:47:30  yuan
  57.  * Can't build curve if Marked Seg has a segment attached.
  58.  * 
  59.  * Revision 1.3  1993/10/19  20:54:50  matt
  60.  * Changed/cleaned up window updates
  61.  * 
  62.  * Revision 1.2  1993/10/14  13:52:17  mike
  63.  * Add return value to AssignTexture
  64.  * 
  65.  * Revision 1.1  1993/10/13  18:53:11  john
  66.  * Initial revision
  67.  * 
  68.  *
  69.  */
  70.  
  71. #pragma off (unreferenced)
  72. static char rcsid[] = "$Id: kcurve.c 2.0 1995/02/27 11:35:29 john Exp $";
  73. #pragma on (unreferenced)
  74.  
  75. #include <string.h>
  76.  
  77. #include "inferno.h"
  78. #include "editor.h"
  79. #include "kdefs.h"
  80.  
  81. static fix         r1scale, r4scale;
  82. static int         curve;
  83.  
  84. int InitCurve()
  85. {
  86.     curve = 0;
  87.     return 1;
  88. }
  89.  
  90. int GenerateCurve()
  91. {
  92.     if ( (Markedsegp != 0) && !IS_CHILD(Markedsegp->children[Markedside])) {
  93.         r1scale = r4scale = F1_0*20;
  94.       autosave_mine( mine_filename );
  95.       diagnostic_message("Curve Generated.");
  96.         Update_flags |= UF_WORLD_CHANGED;
  97.       curve = generate_curve(r1scale, r4scale);
  98.         mine_changed = 1;
  99.         if (curve == 1) {
  100.             strcpy(undo_status[Autosave_count], "Curve Generation UNDONE.\n");
  101.         }
  102.         if (curve == 0) diagnostic_message("Cannot generate curve -- check Current segment.");
  103.     }
  104.     else diagnostic_message("Cannot generate curve -- check Marked segment.");
  105.     warn_if_concave_segments();
  106.  
  107.     return 1;
  108. }
  109.  
  110. int DecreaseR4()
  111. {
  112.     if (curve) {
  113.        Update_flags |= UF_WORLD_CHANGED;
  114.        delete_curve();
  115.        r4scale -= F1_0;
  116.        generate_curve(r1scale, r4scale);
  117.       diagnostic_message("R4 vector decreased.");
  118.        mine_changed = 1;
  119.         warn_if_concave_segments();
  120.     }
  121.     return 1;
  122. }
  123.  
  124. int IncreaseR4()
  125. {
  126.     if (curve) {
  127.        Update_flags |= UF_WORLD_CHANGED;
  128.        delete_curve();
  129.        r4scale += F1_0;
  130.        generate_curve(r1scale, r4scale);
  131.       diagnostic_message("R4 vector increased.");
  132.        mine_changed = 1;
  133.         warn_if_concave_segments();
  134.     }
  135.     return 1;
  136. }
  137.  
  138. int DecreaseR1()
  139. {
  140.     if (curve) {
  141.        Update_flags |= UF_WORLD_CHANGED;
  142.        delete_curve();
  143.        r1scale -= F1_0;
  144.        generate_curve(r1scale, r4scale);
  145.       diagnostic_message("R1 vector decreased.");
  146.        mine_changed = 1;
  147.         warn_if_concave_segments();
  148.     }
  149.     return 1;
  150. }
  151.  
  152. int IncreaseR1()
  153. {
  154.     if (curve) {
  155.        Update_flags |= UF_WORLD_CHANGED;
  156.        delete_curve();
  157.        r1scale += F1_0;
  158.        generate_curve(r1scale, r4scale);
  159.       diagnostic_message("R1 vector increased.");
  160.        mine_changed = 1;
  161.         warn_if_concave_segments();
  162.     }
  163.     return 1;
  164. }
  165.  
  166. int DeleteCurve()
  167. {
  168. // fix_bogus_uvs_all();
  169. set_average_light_on_curside();
  170.  
  171.     if (curve) {
  172.        Update_flags |= UF_WORLD_CHANGED;
  173.        delete_curve();
  174.        curve = 0;
  175.        mine_changed = 1;
  176.       diagnostic_message("Curve Deleted.");
  177.         warn_if_concave_segments();
  178.     }
  179.     return 1;
  180. }
  181.  
  182. int SetCurve()
  183. {
  184.     if (curve) curve = 0;
  185.    //autosave_mine( mine_filename );
  186.    //strcpy(undo_status[Autosave_count], "Curve Generation UNDONE.\n");
  187.    return 1;
  188. }
  189.  
  190.