PageRenderTime 64ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/source/tools/java/UnitEditor.java

https://bitbucket.org/gcubar/asc
Java | 2118 lines | 1599 code | 356 blank | 163 comment | 291 complexity | c2802e6afcdd3756e9dd32d1197220b1 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0
  1. // $Id: UnitEditor.java,v 1.13 2009-04-18 13:48:40 mbickel Exp $
  2. //
  3. // $Log: not supported by cvs2svn $
  4. // Revision 1.12 2001/07/14 19:13:16 mbickel
  5. // Rewrote sound system
  6. // Moveing units make sounds
  7. // Added sound files to data
  8. //
  9. // Revision 1.11 2001/05/10 16:24:03 mbickel
  10. // Fixed crash in Java-Uniteditor when palette not available
  11. //
  12. // Revision 1.10 2000/11/08 19:37:41 mbickel
  13. // Changed the terrain types (again): "lava" now replaces "small trench"
  14. //
  15. // Revision 1.9 2000/11/07 22:14:33 mbickel
  16. // Added terrain type "Lava"
  17. //
  18. // Revision 1.8 2000/11/07 16:19:40 schelli
  19. // Minor Memory-Functions & Problems changed
  20. // Picture Support partly enabled
  21. // New Funktion partly implemented
  22. // Buildings partly implemented
  23. //
  24. // Revision 1.7 2000/11/01 11:41:05 mbickel
  25. // Fixed: Selection in MainWindow-List not being evaluated, the first list
  26. // entry was always edited.
  27. //
  28. // Revision 1.6 2000/10/31 18:06:46 mbickel
  29. // Fileselector now displays files too
  30. //
  31. // Revision 1.5 2000/10/29 21:06:04 mbickel
  32. // Modified filename construction to run under Linux
  33. // Started implementing a better directory choosing dialog
  34. //
  35. // Revision 1.4 2000/10/17 17:28:27 schelli
  36. // minor bugs fixed in lots of sources
  37. // add & remove weapon works now
  38. // revert to save button removed
  39. // class-handling bugs fixed
  40. // load & save routines fully implemented
  41. // terrainacces added
  42. //
  43. // Revision 1.3 2000/10/14 22:40:02 schelli
  44. // AutoRepairRate added
  45. // version will be updated to actual version when saved
  46. // "vehicle must category" added
  47. // Weapon pannel restructured + can.NOT.hit added
  48. // data-arrays updated
  49. //
  50. // Revision 1.2 2000/10/13 13:15:47 schelli
  51. // Load&Save routines finished
  52. //
  53. /*
  54. * UnitEditor.java
  55. *
  56. * Created on 23. November 1999, 16:59
  57. This file is part of Advanced Strategic Command; http://www.asc-hq.de
  58. Copyright (C) 1994-2000 Martin Bickel and Marc Schellenberger
  59. This program is free software; you can redistribute it and/or modify
  60. it under the terms of the GNU General Public License as published by
  61. the Free Software Foundation; either version 2 of the License, or
  62. (at your option) any later version.
  63. This program is distributed in the hope that it will be useful,
  64. but WITHOUT ANY WARRANTY; without even the implied warranty of
  65. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  66. GNU General Public License for more details.
  67. You should have received a copy of the GNU General Public License
  68. along with this program; see the file COPYING. If not, write to the
  69. Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  70. Boston, MA 02111-1307 USA
  71. */
  72. public class UnitEditor extends javax.swing.JFrame {
  73. public static int DISPOSE = 1;
  74. public static int EXIT = 0;
  75. public int initDone;
  76. public String errorMessage;
  77. public SgStream s;
  78. private Unit tUnit;
  79. private ErrorMessage errMsg;
  80. private int exitAction;
  81. //*Variable-Definitions*
  82. //Main-Table
  83. private MakeCheckIntRangeField jIntFieldID;
  84. private MakeCheckIntRangeField jIntFieldArmor;
  85. private MakeCheckIntRangeField jIntFieldWeight;
  86. private MakeCheckIntRangeField jIntFieldEnergyTank;
  87. private MakeCheckIntRangeField jIntFieldMaterialTank;
  88. private MakeCheckIntRangeField jIntFieldProductionEnergy;
  89. private MakeCheckIntRangeField jIntFieldProductionMaterial;
  90. private MakeCheckIntRangeField jIntFieldView;
  91. private MakeCheckIntRangeField jIntFieldJamming;
  92. //Movement-Table
  93. private MakeCheckIntRangeField jIntFieldMovementTable[];
  94. private MakeCheckIntRangeField jIntFieldFuelconsumption;
  95. private MakeCheckIntRangeField jIntFieldTank;
  96. private MakeCheckIntRangeField jIntFieldDistanceHeightChange;
  97. private MakeCheckIntRangeField jIntFieldMaxWindspeed;
  98. private MakeCheckIntRangeField jIntFieldMaxLoad;
  99. private MakeCheckIntRangeField jIntFieldMaxUnitWeight;
  100. private javax.swing.JCheckBox movementTableCheckBox[];
  101. private javax.swing.JTextField movementTableTextField[];
  102. //Load-Table
  103. private javax.swing.JCheckBox loadOnHeightTableCheckBox[];
  104. private javax.swing.JCheckBox loadAbleHeightTableCheckBox[];
  105. private javax.swing.JCheckBox loadNotHeightTableCheckBox[];
  106. private javax.swing.JCheckBox loadMustCategoryCheckBox[];
  107. //Functions-Table
  108. private MakeCheckIntRangeField jIntFieldResourceRadius;
  109. private MakeCheckIntRangeField jIntFieldAutoRepairRate;
  110. private javax.swing.JCheckBox functionSelectCheckBox[];
  111. //Class-Table
  112. private String classNames[];
  113. private int classLastIndex = 0;
  114. private javax.swing.JCheckBox classFunctionSelectCheckBox[];
  115. private static int CLASS_STANDARD = 0;
  116. private static int CLASS_ORIGINAL = 1;
  117. private javax.swing.JTextField classWeaponImprovementTextField[];
  118. private MakeCheckIntRangeField jIntFieldClassWeaponImprovement[];
  119. private javax.swing.JTextField classTechnologyIDTextField[];
  120. private MakeCheckIntRangeField jIntFieldClassTechnologyID[];
  121. private MakeCheckIntRangeField jIntFieldClassTechLevel;
  122. //Weapon-Table
  123. private int weaponLastIndex = 0;
  124. private static int WEAPON_NOSAVE = 0;
  125. private static int WEAPON_SAVE = 1;
  126. private javax.swing.JCheckBox weaponTypeSelectCheckBox[];
  127. private javax.swing.JCheckBox weaponAimSelectCheckBox[];
  128. private javax.swing.JCheckBox weaponSourceSelectCheckBox[];
  129. private javax.swing.JCheckBox weaponCanNotHitSelectCheckBox[];
  130. private MakeCheckIntRangeField jIntFieldMinDistance;
  131. private MakeCheckIntRangeField jIntFieldMaxDistance;
  132. private MakeCheckIntRangeField jIntFieldMinDistanceStrength;
  133. private MakeCheckIntRangeField jIntFieldMaxDistanceStrength;
  134. private MakeCheckIntRangeField jIntFieldAmmo;
  135. private javax.swing.JTextField jTextFieldEfficiencies[];
  136. private MakeCheckIntRangeField jIntFieldEfficiencies[];
  137. //TerrainAccess-Table
  138. private javax.swing.JLabel jLabelAccessAbleHeightTable;
  139. private javax.swing.JLabel jLabelaccessNecessaryHeightTable;
  140. private javax.swing.JLabel jLabelAccessNoneHeightTable;
  141. private javax.swing.JLabel jLabelAccessDiesHeightTable;
  142. private javax.swing.JCheckBox accessAbleHeightTableCheckBox[];
  143. private javax.swing.JCheckBox accessNecessaryHeightTableTableCheckBox[];
  144. private javax.swing.JCheckBox accessNoneHeightTableCheckBox[];
  145. private javax.swing.JCheckBox accessDiesHeightTableCheckBox[];
  146. //Image-Table
  147. private ImgCanvas canvas;
  148. private boolean pictureAvail;
  149. private ImageProcess imgProcess;
  150. /** Creates new form UnitWindow */
  151. public UnitEditor(String unitPath, String unitFileName, int action,int exitAct){
  152. // action new / load;
  153. //exitAct exit / dispose
  154. initDone = 0;
  155. pictureAvail = false;
  156. if (unitPath.length() == 0) return;
  157. exitAction = exitAct;
  158. initComponents ();
  159. if ( unitPath.endsWith(java.io.File.separator ) == false ) unitPath = unitPath.concat(java.io.File.separator);
  160. String unitAbsoluteFileName = unitPath.concat(unitFileName);
  161. tUnit = new Unit(unitAbsoluteFileName);
  162. if (action == tUnit.NEW) tUnit.createNew();
  163. else tUnit.load();
  164. setTitle(unitFileName+" - "+tUnit.name+" - "+tUnit.description);
  165. errMsg = new ErrorMessage(jLabelErrorMessage);
  166. //*Int-Field-Settings*
  167. jLabelVersion.setText ("Version "+tUnit.version+".0");
  168. // Main-Panel
  169. jIntFieldID = new MakeCheckIntRangeField(jTextFieldID,errMsg,0,65534);
  170. jIntFieldArmor = new MakeCheckIntRangeField(jTextFieldArmor,errMsg,0,65535);
  171. jIntFieldWeight = new MakeCheckIntRangeField(jTextFieldWeight,errMsg,0,32000);
  172. jIntFieldEnergyTank = new MakeCheckIntRangeField(jTextFieldEnergyTank,errMsg,0,2147483646);
  173. jIntFieldMaterialTank = new MakeCheckIntRangeField(jTextFieldMaterialTank,errMsg,0,2147483646);
  174. jIntFieldProductionEnergy = new MakeCheckIntRangeField(jTextFieldProductionEnergy,errMsg,0,65535);
  175. jIntFieldProductionMaterial = new MakeCheckIntRangeField(jTextFieldProductionMaterial,errMsg,0,65535);
  176. jIntFieldView = new MakeCheckIntRangeField(jTextFieldView,errMsg,0,255);
  177. jIntFieldJamming = new MakeCheckIntRangeField(jTextFieldJamming,errMsg,0,255);
  178. // Movement-Panel
  179. jIntFieldFuelconsumption = new MakeCheckIntRangeField(jTextFieldFuelconsumption,
  180. errMsg,0,65534);
  181. jIntFieldTank = new MakeCheckIntRangeField(jTextFieldTank,
  182. errMsg,0,2147483646);
  183. jIntFieldDistanceHeightChange = new MakeCheckIntRangeField(jTextFieldDistanceHeightChange,
  184. errMsg,0,255);
  185. jIntFieldMaxWindspeed = new MakeCheckIntRangeField(jTextFieldMaxWindspeed,
  186. errMsg,0,255);
  187. // Load-Panel
  188. jIntFieldMaxLoad = new MakeCheckIntRangeField(jTextFieldMaxLoad,
  189. errMsg,0,32000);
  190. jIntFieldMaxUnitWeight = new MakeCheckIntRangeField(jTextFieldMaxUnitWeight,
  191. errMsg,0,32000);
  192. // Functions-Panel
  193. jIntFieldResourceRadius = new MakeCheckIntRangeField(jTextFieldResourceRadius,
  194. errMsg,0,255);
  195. jIntFieldAutoRepairRate = new MakeCheckIntRangeField(jTextFieldAutoRepairRate,
  196. errMsg,0,100);
  197. // Class-Panel
  198. jIntFieldClassTechLevel = new MakeCheckIntRangeField(jTextFieldTechLevel,
  199. errMsg,0,255);
  200. // Weapon-Panel
  201. jIntFieldMinDistance = new MakeCheckIntRangeField(jTextFieldWeaponMinDistance,
  202. errMsg,0,255);
  203. jIntFieldMaxDistance = new MakeCheckIntRangeField(jTextFieldWeaponMaxDistance,
  204. errMsg,0,255);
  205. jIntFieldMinDistanceStrength = new MakeCheckIntRangeField(jTextFieldWeaponMinStrength,
  206. errMsg,1,2147483646);
  207. jIntFieldMaxDistanceStrength = new MakeCheckIntRangeField(jTextFieldWeaponMaxStrength,
  208. errMsg,1,2147483646);
  209. jIntFieldAmmo = new MakeCheckIntRangeField(jTextFieldWeaponAmmo,
  210. errMsg,0,255);
  211. //*Field-Value-Initialisations*
  212. // Main-Panel
  213. if ((tUnit.name != null) && (action == tUnit.LOAD)) jTxtFieldName.setText (tUnit.name);
  214. else jTxtFieldName.setText ("");
  215. if (tUnit.description != null)
  216. jTxtFieldDescription.setText (tUnit.description);
  217. else jTxtFieldDescription.setText ("");
  218. jIntFieldID.setInt(tUnit.id);
  219. jIntFieldArmor.setInt(tUnit.armor);
  220. jIntFieldWeight.setInt(tUnit.weight);
  221. jIntFieldEnergyTank.setInt(tUnit.energy);
  222. jIntFieldMaterialTank.setInt(tUnit.material);
  223. jIntFieldProductionEnergy.setInt(tUnit.production.energy);
  224. jIntFieldProductionMaterial.setInt(tUnit.production.material);
  225. jIntFieldView.setInt(tUnit.view);
  226. jIntFieldJamming.setInt(tUnit.jamming);
  227. // InfoText-Panel
  228. if (tUnit.infotext != null)
  229. jTextPaneInfoText.setText (tUnit.infotext);
  230. else
  231. jTextPaneInfoText.setText ("");
  232. // Movement-Panel
  233. jIntFieldFuelconsumption.setInt(tUnit.fuelconsumption);
  234. jIntFieldTank.setInt(tUnit.tank);
  235. jIntFieldDistanceHeightChange.setInt(tUnit.steigung);
  236. jIntFieldMaxWindspeed.setInt(tUnit.maxwindspeedonwater);
  237. // Load-Panel
  238. jIntFieldMaxLoad.setInt(tUnit.loadcapacity);
  239. if (tUnit.maxunitweight <=0 ) tUnit.maxunitweight = tUnit.loadcapacity;
  240. jIntFieldMaxUnitWeight.setInt(tUnit.maxunitweight);
  241. // Functions-Panel
  242. jIntFieldResourceRadius.setInt(tUnit.digrange);
  243. jIntFieldAutoRepairRate.setInt(tUnit.autorepairrate);
  244. //*Variable-Layout-Design*
  245. // Movement-Panel
  246. jPanelMovementTable.setLayout ( new java.awt.GridLayout (cHeightLevel.length, 2));
  247. movementTableCheckBox = new javax.swing.JCheckBox[cHeightLevel.length];
  248. movementTableTextField = new javax.swing.JTextField[cHeightLevel.length];
  249. jIntFieldMovementTable = new MakeCheckIntRangeField[cHeightLevel.length];
  250. for (int i=0; i < cHeightLevel.length;i++) {
  251. movementTableCheckBox[i] = new javax.swing.JCheckBox();
  252. movementTableCheckBox[i].setText (cHeightLevel[i]);
  253. movementTableCheckBox[i].setName(new java.lang.Integer(i).toString());
  254. jPanelMovementTable.add (movementTableCheckBox[i]);
  255. movementTableTextField[i] = new javax.swing.JTextField();
  256. movementTableTextField[i].setBorder (
  257. new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(),cHeightLevel[i]
  258. .concat(".Movement (0-255)"), 1, 2, new java.awt.Font ("Arial", 0, 10)));
  259. movementTableTextField[i].setText ("0");
  260. movementTableTextField[i].setEnabled (false);
  261. jIntFieldMovementTable[i] = new MakeCheckIntRangeField
  262. (movementTableTextField[i],errMsg,0,255);
  263. if ( (tUnit.height & (1 << i)) > 0 ) {
  264. movementTableCheckBox[i].setSelected(true);
  265. movementTableTextField[i].setEnabled (true);
  266. jIntFieldMovementTable[i].setInt(tUnit.movement[i]);
  267. }
  268. jPanelMovementTable.add (movementTableTextField[i]);
  269. movementTableCheckBox[i].addActionListener (new java.awt.event.ActionListener () {
  270. public void actionPerformed (java.awt.event.ActionEvent evt) {
  271. movementTableActionPerformed(evt);
  272. }
  273. }
  274. );
  275. }
  276. for (int i = 0; i < cMovemaliType.length;i++)
  277. jComboBoxCategory.addItem(cMovemaliType[i]);
  278. jComboBoxCategory.setSelectedIndex(tUnit.movemalustyp);
  279. if (tUnit.wait > 0 ) jCheckBoxWaitAfterMove.setSelected(true);
  280. else jCheckBoxWaitAfterMove.setSelected(false);
  281. heightChangeCheck(); //check, if at least 2 heights r selected
  282. //Load-Table
  283. jPanelLoadTable.setLayout (new java.awt.GridLayout (cHeightLevel.length, 3));
  284. loadOnHeightTableCheckBox = new javax.swing.JCheckBox[cHeightLevel.length];
  285. loadAbleHeightTableCheckBox = new javax.swing.JCheckBox[cHeightLevel.length];
  286. loadNotHeightTableCheckBox = new javax.swing.JCheckBox[cHeightLevel.length];
  287. for (int i=0; i < cHeightLevel.length;i++) {
  288. loadOnHeightTableCheckBox[i] = new javax.swing.JCheckBox();
  289. loadOnHeightTableCheckBox[i].setText (cHeightLevel[i]);
  290. loadAbleHeightTableCheckBox[i] = new javax.swing.JCheckBox();
  291. loadAbleHeightTableCheckBox[i].setText (cHeightLevel[i]);
  292. loadNotHeightTableCheckBox[i] = new javax.swing.JCheckBox();
  293. loadNotHeightTableCheckBox[i].setText (cHeightLevel[i]);
  294. jPanelLoadTable.add (loadOnHeightTableCheckBox[i]);
  295. jPanelLoadTable.add (loadAbleHeightTableCheckBox[i]);
  296. jPanelLoadTable.add (loadNotHeightTableCheckBox[i]);
  297. if ( (tUnit.loadcapability & (1 << i)) > 0 )
  298. loadOnHeightTableCheckBox[i].setSelected(true);
  299. if ( (tUnit.loadcapabilityreq & (1 << i)) > 0 )
  300. loadAbleHeightTableCheckBox[i].setSelected(true);
  301. if ( (tUnit.loadcapabilitynot & (1 << i)) > 0 )
  302. loadNotHeightTableCheckBox[i].setSelected(true);
  303. }
  304. jPanelMustCategory.setLayout (new java.awt.GridLayout (cMovemaliType.length, 1));
  305. loadMustCategoryCheckBox = new javax.swing.JCheckBox[cMovemaliType.length];
  306. for (int i=0; i < cMovemaliType.length;i++) {
  307. loadMustCategoryCheckBox[i] = new javax.swing.JCheckBox();
  308. loadMustCategoryCheckBox[i].setText (cMovemaliType[i]);
  309. jPanelMustCategory.add (loadMustCategoryCheckBox[i]);
  310. if ( (tUnit.vehicleCategoriesLoadable & (1 << i)) > 0 )
  311. loadMustCategoryCheckBox[i].setSelected(true);
  312. }
  313. jTextFieldMaxLoad.addActionListener (new java.awt.event.ActionListener () {
  314. public void actionPerformed (java.awt.event.ActionEvent evt) {
  315. maxLoadCheck();
  316. }
  317. }
  318. );
  319. jTextFieldMaxLoad.addFocusListener (new java.awt.event.FocusAdapter () {
  320. public void focusLost (java.awt.event.FocusEvent evt) {
  321. maxLoadCheck();
  322. }
  323. }
  324. );
  325. maxLoadCheck();
  326. //Functions-Table
  327. jPanelFunctionSelect.setLayout
  328. (new java.awt.GridLayout (cVehicleFunctions.length, 3));
  329. functionSelectCheckBox = new javax.swing.JCheckBox[cVehicleFunctions.length];
  330. for (int i=0; i < cVehicleFunctions.length;i++) {
  331. functionSelectCheckBox[i] = new javax.swing.JCheckBox();
  332. functionSelectCheckBox[i].setText (cVehicleFunctions[i]);
  333. jPanelFunctionSelect.add (functionSelectCheckBox[i]);
  334. if ( (tUnit.functions & (1 << i)) > 0 )
  335. functionSelectCheckBox[i].setSelected(true);
  336. if (((1 << i) & (cfautodigger | cfmanualdigger)) > 0) {
  337. functionSelectCheckBox[i].addActionListener (new java.awt.event.ActionListener () {
  338. public void actionPerformed (java.awt.event.ActionEvent evt) {
  339. digCheck();
  340. }
  341. }
  342. );
  343. functionSelectCheckBox[i].addFocusListener (new java.awt.event.FocusAdapter () {
  344. public void focusLost (java.awt.event.FocusEvent evt) {
  345. digCheck();
  346. }
  347. }
  348. );
  349. }
  350. }
  351. digCheck();
  352. //Class-Table
  353. classNames = new String[9]; //Einer mehr als Classes, damit man auch hinter der letzten Class einfuegen kann
  354. for (int i=0; i<8;i++) {
  355. if (tUnit.classnames[i] != null) classNames[i] = tUnit.classnames[i];
  356. }
  357. jListClasses.setListData(classNames);
  358. jListClasses.setSelectionMode
  359. (new javax.swing.DefaultListSelectionModel().SINGLE_SELECTION);
  360. jPanelClassFunctionSelect.setLayout
  361. (new java.awt.GridLayout (cVehicleFunctions.length, 1));
  362. classFunctionSelectCheckBox = new javax.swing.JCheckBox[cVehicleFunctions.length];
  363. for (int i=0; i < cVehicleFunctions.length;i++) {
  364. classFunctionSelectCheckBox[i] = new javax.swing.JCheckBox();
  365. classFunctionSelectCheckBox[i].setText (cVehicleFunctions[i]);
  366. jPanelClassFunctionSelect.add (classFunctionSelectCheckBox[i]);
  367. }
  368. jPanelClassWeaponImprovement.setLayout
  369. (new java.awt.GridLayout (tUnit.classbound[0].weaponcount + 1, 1));
  370. classWeaponImprovementTextField =
  371. new javax.swing.JTextField[tUnit.classbound[0].weaponcount +1];
  372. jIntFieldClassWeaponImprovement =
  373. new MakeCheckIntRangeField[tUnit.classbound[0].weaponcount +1];
  374. for (int i=0; i < tUnit.classbound[0].weaponcount;i++) {
  375. classWeaponImprovementTextField[i] = new javax.swing.JTextField();
  376. classWeaponImprovementTextField[i].setBorder (new javax.swing.border
  377. .TitledBorder(new javax.swing.border.EtchedBorder(),cWeaponType[i]
  378. .concat(".Improvement (1024-65530)"), 1, 2, new java.awt.Font ("Arial", 0, 10)));
  379. jIntFieldClassWeaponImprovement[i] = new MakeCheckIntRangeField
  380. (classWeaponImprovementTextField[i],errMsg,1024,65530);
  381. jIntFieldClassWeaponImprovement[i].setInt(0);
  382. jPanelClassWeaponImprovement.add (classWeaponImprovementTextField[i]);
  383. }
  384. classWeaponImprovementTextField[tUnit.classbound[0].weaponcount] = new javax.swing.JTextField();
  385. classWeaponImprovementTextField[tUnit.classbound[0].weaponcount].setBorder
  386. (new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(),
  387. "armor.Improvement (1024-65530)", 1, 2, new java.awt.Font ("Arial", 0, 10)));
  388. classWeaponImprovementTextField[tUnit.classbound[0].weaponcount].setEnabled(true);
  389. jIntFieldClassWeaponImprovement[tUnit.classbound[0].weaponcount] = new MakeCheckIntRangeField
  390. (classWeaponImprovementTextField[tUnit.classbound[0].weaponcount],errMsg,1024,65530);
  391. jPanelClassWeaponImprovement.add (classWeaponImprovementTextField[tUnit.classbound[0].weaponcount]);
  392. // Armor improvement ist einfach an Weapon angehängt
  393. classTechnologyIDTextField = new javax.swing.JTextField[4];
  394. jIntFieldClassTechnologyID = new MakeCheckIntRangeField[4];
  395. for (int i=0; i < 4;i++) {
  396. classTechnologyIDTextField[i] = new javax.swing.JTextField();
  397. classTechnologyIDTextField[i].setBorder (new javax.swing.border
  398. .TitledBorder(new javax.swing.border.EtchedBorder(),"Technology required ID "
  399. .concat(new java.lang.Integer(i+1).toString()).concat(" (0-65500)")
  400. , 1, 2, new java.awt.Font ("Arial", 0, 10)));
  401. classTechnologyIDTextField[i].setText ("0");
  402. classTechnologyIDTextField[i].setEnabled (false);
  403. classTechnologyIDTextField[i].setName(new java.lang.Integer(i).toString());
  404. jIntFieldClassTechnologyID[i] = new MakeCheckIntRangeField
  405. (classTechnologyIDTextField[i],errMsg,0,65500);
  406. jPanelClassTechnologyIDs.add (classTechnologyIDTextField[i]);
  407. classTechnologyIDTextField[i].addActionListener (new java.awt.event.ActionListener () {
  408. public void actionPerformed (java.awt.event.ActionEvent evt) {
  409. technologyIDCheck();
  410. }
  411. }
  412. );
  413. classTechnologyIDTextField[i].addFocusListener (new java.awt.event.FocusAdapter () {
  414. public void focusLost (java.awt.event.FocusEvent evt) {
  415. technologyIDCheck();
  416. }
  417. }
  418. );
  419. }
  420. classTechnologyIDTextField[0].setEnabled (true);
  421. showClassValues(0);
  422. //Weapon-Table
  423. jPanelWeaponType.setLayout
  424. (new java.awt.GridLayout (cWeaponType.length, 1));
  425. weaponTypeSelectCheckBox = new javax.swing.JCheckBox[cWeaponType.length];
  426. for (int i=0; i < cWeaponType.length;i++) {
  427. weaponTypeSelectCheckBox[i] = new javax.swing.JCheckBox();
  428. weaponTypeSelectCheckBox[i].setText (cWeaponType[i]);
  429. jPanelWeaponType.add (weaponTypeSelectCheckBox[i]);
  430. }
  431. jPanelWeaponAim.setLayout
  432. (new java.awt.GridLayout (cHeightLevel.length, 1));
  433. weaponAimSelectCheckBox = new javax.swing.JCheckBox[cHeightLevel.length];
  434. for (int i=0; i < cHeightLevel.length;i++) {
  435. weaponAimSelectCheckBox[i] = new javax.swing.JCheckBox();
  436. weaponAimSelectCheckBox[i].setText (cHeightLevel[i]);
  437. jPanelWeaponAim.add (weaponAimSelectCheckBox[i]);
  438. }
  439. jPanelWeaponSource.setLayout
  440. (new java.awt.GridLayout (cHeightLevel.length, 1));
  441. weaponSourceSelectCheckBox = new javax.swing.JCheckBox[cHeightLevel.length];
  442. for (int i=0; i < cHeightLevel.length;i++) {
  443. weaponSourceSelectCheckBox[i] = new javax.swing.JCheckBox();
  444. weaponSourceSelectCheckBox[i].setText (cHeightLevel[i]);
  445. jPanelWeaponSource.add (weaponSourceSelectCheckBox[i]);
  446. }
  447. jPanelWeaponCanNotHit.setLayout
  448. (new java.awt.GridLayout (cMovemaliType.length, 1));
  449. weaponCanNotHitSelectCheckBox = new javax.swing.JCheckBox[cMovemaliType.length];
  450. for (int i=0; i < cMovemaliType.length;i++) {
  451. weaponCanNotHitSelectCheckBox[i] = new javax.swing.JCheckBox();
  452. weaponCanNotHitSelectCheckBox[i].setText (cMovemaliType[i]);
  453. jPanelWeaponCanNotHit.add (weaponCanNotHitSelectCheckBox[i]);
  454. }
  455. jPanelEfficiencies.setLayout
  456. (new java.awt.GridLayout (13, 1));
  457. jTextFieldEfficiencies = new javax.swing.JTextField[13];
  458. jIntFieldEfficiencies = new MakeCheckIntRangeField[13];
  459. for (int i=0; i < 13;i++) {
  460. jTextFieldEfficiencies[i] = new javax.swing.JTextField();
  461. jTextFieldEfficiencies[i].setBorder (new javax.swing.border
  462. .TitledBorder(new javax.swing.border.EtchedBorder(),"height "
  463. .concat(new java.lang.Integer(i-6).toString()).concat(" (0-100)"), 1, 2,
  464. new java.awt.Font ("Arial", 0, 10)));
  465. jIntFieldEfficiencies[i] = new MakeCheckIntRangeField
  466. (jTextFieldEfficiencies[i],errMsg,0,100);
  467. jIntFieldEfficiencies[i].setInt(100);
  468. jPanelEfficiencies.add (jTextFieldEfficiencies[i]);
  469. }
  470. jTextFieldWeaponMaxDistance.addActionListener (new java.awt.event.ActionListener () {
  471. public void actionPerformed (java.awt.event.ActionEvent evt) {
  472. weaponMaxDistanceCheck();
  473. }
  474. }
  475. );
  476. jTextFieldWeaponMaxDistance.addFocusListener (new java.awt.event.FocusAdapter () {
  477. public void focusLost (java.awt.event.FocusEvent evt) {
  478. weaponMaxDistanceCheck();
  479. }
  480. }
  481. );
  482. if (tUnit.weapons.count > 0) {
  483. for (int i = 0 ; i < tUnit.weapons.count; i++)
  484. jComboBoxWeapons.addItem("Weapon ".concat(new java.lang.Integer(i+1).toString()));
  485. } else {
  486. jComboBoxWeapons.addItem("No weapons");
  487. }
  488. setUnitWeaponComboBox();
  489. showWeaponValues(0,WEAPON_NOSAVE);
  490. weaponMaxDistanceCheck();
  491. jTextFieldMaxLoad.addActionListener (new java.awt.event.ActionListener () {
  492. public void actionPerformed (java.awt.event.ActionEvent evt) {
  493. maxLoadCheck();
  494. }
  495. }
  496. );
  497. jTextFieldMaxLoad.addFocusListener (new java.awt.event.FocusAdapter () {
  498. public void focusLost (java.awt.event.FocusEvent evt) {
  499. maxLoadCheck();
  500. }
  501. }
  502. );
  503. maxLoadCheck();
  504. //TerrainAccess-Table
  505. jPanelTerrainAccess.setLayout (new java.awt.GridLayout (cTerrainType.length+1, 4));
  506. jLabelAccessAbleHeightTable = new javax.swing.JLabel ();
  507. jLabelaccessNecessaryHeightTable = new javax.swing.JLabel ();
  508. jLabelAccessNoneHeightTable = new javax.swing.JLabel ();
  509. jLabelAccessDiesHeightTable = new javax.swing.JLabel ();
  510. jPanelTerrainAccess.add ( jLabelAccessAbleHeightTable );
  511. jPanelTerrainAccess.add ( jLabelaccessNecessaryHeightTable );
  512. jPanelTerrainAccess.add ( jLabelAccessNoneHeightTable );
  513. jPanelTerrainAccess.add ( jLabelAccessDiesHeightTable );
  514. jLabelAccessAbleHeightTable.setText("Terrain unit can drive on");
  515. jLabelaccessNecessaryHeightTable.setText("ALL bits are necessary to drive on");
  516. jLabelAccessNoneHeightTable.setText("NONE bits are necessary to drive on");
  517. jLabelAccessDiesHeightTable.setText("Unit is destroyed on");
  518. accessAbleHeightTableCheckBox = new javax.swing.JCheckBox[cTerrainType.length];
  519. accessNecessaryHeightTableTableCheckBox = new javax.swing.JCheckBox[cTerrainType.length];
  520. accessNoneHeightTableCheckBox = new javax.swing.JCheckBox[cTerrainType.length];
  521. accessDiesHeightTableCheckBox = new javax.swing.JCheckBox[cTerrainType.length];
  522. for (int i=0; i < cTerrainType.length;i++) {
  523. accessAbleHeightTableCheckBox[i] = new javax.swing.JCheckBox();
  524. accessAbleHeightTableCheckBox[i].setText (cTerrainType[i]);
  525. accessNecessaryHeightTableTableCheckBox[i] = new javax.swing.JCheckBox();
  526. accessNecessaryHeightTableTableCheckBox[i].setText (cTerrainType[i]);
  527. accessNoneHeightTableCheckBox[i] = new javax.swing.JCheckBox();
  528. accessNoneHeightTableCheckBox[i].setText (cTerrainType[i]);
  529. accessDiesHeightTableCheckBox[i] = new javax.swing.JCheckBox();
  530. accessDiesHeightTableCheckBox[i].setText (cTerrainType[i]);
  531. jPanelTerrainAccess.add (accessAbleHeightTableCheckBox[i]);
  532. jPanelTerrainAccess.add (accessNecessaryHeightTableTableCheckBox[i]);
  533. jPanelTerrainAccess.add (accessNoneHeightTableCheckBox[i]);
  534. jPanelTerrainAccess.add (accessDiesHeightTableCheckBox[i]);
  535. if ( (tUnit._terrain & (1 << i)) > 0 )
  536. accessAbleHeightTableCheckBox[i].setSelected(true);
  537. if ( (tUnit._terrainreq & (1 << i)) > 0 )
  538. accessNecessaryHeightTableTableCheckBox[i].setSelected(true);
  539. if ( (tUnit._terrainnot & (1 << i)) > 0 )
  540. accessNoneHeightTableCheckBox[i].setSelected(true);
  541. if ( (tUnit._terrainkill & (1 << i)) > 0 )
  542. accessDiesHeightTableCheckBox[i].setSelected(true);
  543. }
  544. /*
  545. canvas = new ImgCanvas();
  546. s = new SgStream("E:\\Demount\\palette.pal",s.STREAM_READ);
  547. if ( s.error == 0 ) canvas.palette = s.readPalette();
  548. s.close();
  549. canvas.setVisible(false);
  550. jPanelPicture.add (canvas, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 110, 110));
  551. imgProcess = new ImageProcess(tUnit.picPackage[0],canvas);
  552. */
  553. initDone = 1;
  554. pack ();
  555. }
  556. /** This method is called from within the constructor to
  557. * initialize the form.
  558. * WARNING: Do NOT modify this code. The content of this method is
  559. * always regenerated by the FormEditor.
  560. */
  561. private void initComponents () {//GEN-BEGIN:initComponents
  562. jTabbedPaneMain = new javax.swing.JTabbedPane ();
  563. jPanelMain = new javax.swing.JPanel ();
  564. jTxtFieldName = new javax.swing.JTextField ();
  565. jTxtFieldDescription = new javax.swing.JTextField ();
  566. jTextFieldID = new javax.swing.JTextField ();
  567. jTextFieldArmor = new javax.swing.JTextField ();
  568. jTextFieldProductionMaterial = new javax.swing.JTextField ();
  569. jTextFieldProductionEnergy = new javax.swing.JTextField ();
  570. jTextFieldWeight = new javax.swing.JTextField ();
  571. jTextFieldView = new javax.swing.JTextField ();
  572. jTextFieldJamming = new javax.swing.JTextField ();
  573. jTextFieldEnergyTank = new javax.swing.JTextField ();
  574. jTextFieldMaterialTank = new javax.swing.JTextField ();
  575. jLabelProductionBorder = new javax.swing.JLabel ();
  576. jLabelNameDescriptionBorder = new javax.swing.JLabel ();
  577. jLabelIDArmorWeightBorder = new javax.swing.JLabel ();
  578. jLabelViewJammingBorder = new javax.swing.JLabel ();
  579. jLabelEnergyMaterialTankBorder = new javax.swing.JLabel ();
  580. jLabelEnergyTankWarning = new javax.swing.JLabel ();
  581. jButtonSave = new javax.swing.JButton ();
  582. jLabelVersion = new javax.swing.JLabel ();
  583. jPanelMovement = new javax.swing.JPanel ();
  584. jPanelMovementTable = new javax.swing.JPanel ();
  585. jComboBoxCategory = new javax.swing.JComboBox ();
  586. jCheckBoxWaitAfterMove = new javax.swing.JCheckBox ();
  587. jTextFieldFuelconsumption = new javax.swing.JTextField ();
  588. jTextFieldTank = new javax.swing.JTextField ();
  589. jLabelFuelconsumptionTankBorder = new javax.swing.JLabel ();
  590. jTextFieldDistanceHeightChange = new javax.swing.JTextField ();
  591. jTextFieldMaxWindspeed = new javax.swing.JTextField ();
  592. jLabelMaxWindspeed = new javax.swing.JLabel ();
  593. jLabelWindspeedBorder = new javax.swing.JLabel ();
  594. jPanelLoad = new javax.swing.JPanel ();
  595. jTextFieldMaxLoad = new javax.swing.JTextField ();
  596. jTextFieldMaxUnitWeight = new javax.swing.JTextField ();
  597. jPanelLoadTable = new javax.swing.JPanel ();
  598. jPanelLoadTabelTitle = new javax.swing.JPanel ();
  599. jLabelOnHeight = new javax.swing.JLabel ();
  600. jLabelAbleHeight = new javax.swing.JLabel ();
  601. jLabelNotHeight = new javax.swing.JLabel ();
  602. jLabelMustCategory = new javax.swing.JLabel ();
  603. jPanelMustCategory = new javax.swing.JPanel ();
  604. jPanelWeapons = new javax.swing.JPanel ();
  605. jComboBoxWeapons = new javax.swing.JComboBox ();
  606. jPanelEfficiencies = new javax.swing.JPanel ();
  607. jButtonAddWeapon = new javax.swing.JButton ();
  608. jButtonRemoveWeapon = new javax.swing.JButton ();
  609. jTabbedPaneWeapons = new javax.swing.JTabbedPane ();
  610. jPaneWeaponslMisc = new javax.swing.JPanel ();
  611. jTextFieldWeaponMaxDistance = new javax.swing.JTextField ();
  612. jTextFieldWeaponMinDistance = new javax.swing.JTextField ();
  613. jTextFieldWeaponMinStrength = new javax.swing.JTextField ();
  614. jTextFieldWeaponMaxStrength = new javax.swing.JTextField ();
  615. jTextFieldWeaponAmmo = new javax.swing.JTextField ();
  616. jPaneWeaponslWeaponAimHeights = new javax.swing.JPanel ();
  617. jPanelWeaponAim = new javax.swing.JPanel ();
  618. jPanelWeaponsWeaponSourceHeights = new javax.swing.JPanel ();
  619. jPanelWeaponSource = new javax.swing.JPanel ();
  620. jPanelWeaponsWeaponType = new javax.swing.JPanel ();
  621. jPanelWeaponType = new javax.swing.JPanel ();
  622. jPanelWeaponsWeaponCanNotHit = new javax.swing.JPanel ();
  623. jPanelWeaponCanNotHit = new javax.swing.JPanel ();
  624. jPanelFunctions = new javax.swing.JPanel ();
  625. jPanelFunctionSelect = new javax.swing.JPanel ();
  626. jTextFieldResourceRadius = new javax.swing.JTextField ();
  627. jTextFieldAutoRepairRate = new javax.swing.JTextField ();
  628. jPanelClass = new javax.swing.JPanel ();
  629. jPanelClassFunctionSelect = new javax.swing.JPanel ();
  630. jListClasses = new javax.swing.JList ();
  631. jTextFieldClassName = new javax.swing.JTextField ();
  632. jButtonNewClass = new javax.swing.JButton ();
  633. jButtonSetClassName = new javax.swing.JButton ();
  634. jButtonDeleteClass = new javax.swing.JButton ();
  635. jButtonSetClassStandard = new javax.swing.JButton ();
  636. jPanelClassWeaponImprovement = new javax.swing.JPanel ();
  637. jPanelClassTechnologyIDs = new javax.swing.JPanel ();
  638. jTextFieldTechLevel = new javax.swing.JTextField ();
  639. jPanelInfoText = new javax.swing.JPanel ();
  640. jScrollPaneInfoText = new javax.swing.JScrollPane ();
  641. jTextPaneInfoText = new javax.swing.JTextPane ();
  642. jPanelTerrainAccess = new javax.swing.JPanel ();
  643. jPanelPicture = new javax.swing.JPanel ();
  644. jLabelErrorMessage = new javax.swing.JLabel ();
  645. getContentPane ().setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  646. addWindowListener (new java.awt.event.WindowAdapter () {
  647. public void windowClosing (java.awt.event.WindowEvent evt) {
  648. closeDialog (evt);
  649. }
  650. }
  651. );
  652. jTabbedPaneMain.addChangeListener (new javax.swing.event.ChangeListener () {
  653. public void stateChanged (javax.swing.event.ChangeEvent evt) {
  654. jTabbedPaneMainStateChanged (evt);
  655. }
  656. }
  657. );
  658. jPanelMain.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  659. jPanelMain.setBorder (new javax.swing.border.EmptyBorder(new java.awt.Insets(1, 1, 1, 1)));
  660. jTxtFieldName.setBorder (new javax.swing.border.TitledBorder(
  661. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  662. "Name", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  663. jTxtFieldName.setText ("Name");
  664. jPanelMain.add (jTxtFieldName, new org.netbeans.lib.awtextra.AbsoluteConstraints (20, 20, 590, 40));
  665. jTxtFieldDescription.setBorder (new javax.swing.border.TitledBorder(
  666. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  667. "Description", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  668. jTxtFieldDescription.setText ("Description");
  669. jPanelMain.add (jTxtFieldDescription, new org.netbeans.lib.awtextra.AbsoluteConstraints (20, 70, 590, 40));
  670. jTextFieldID.setBorder (new javax.swing.border.TitledBorder(
  671. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  672. "ID (0-65534)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  673. jTextFieldID.setText ("0");
  674. jPanelMain.add (jTextFieldID, new org.netbeans.lib.awtextra.AbsoluteConstraints (30, 160, 380, 40));
  675. jTextFieldArmor.setBorder (new javax.swing.border.TitledBorder(
  676. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  677. "Armor (0-65535)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  678. jTextFieldArmor.setText ("0");
  679. jPanelMain.add (jTextFieldArmor, new org.netbeans.lib.awtextra.AbsoluteConstraints (30, 210, 380, 40));
  680. jTextFieldProductionMaterial.setBorder (new javax.swing.border.TitledBorder(
  681. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  682. "Produktioncost.Material (0-65535)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  683. java.awt.Color.black));
  684. jTextFieldProductionMaterial.setText ("0");
  685. jPanelMain.add (jTextFieldProductionMaterial, new org.netbeans.lib.awtextra.AbsoluteConstraints (30, 350, 380, 40));
  686. jTextFieldProductionEnergy.setBorder (new javax.swing.border.TitledBorder(
  687. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  688. "Produktion.Energy (0-65535)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  689. java.awt.Color.black));
  690. jTextFieldProductionEnergy.setText ("0");
  691. jPanelMain.add (jTextFieldProductionEnergy, new org.netbeans.lib.awtextra.AbsoluteConstraints (30, 410, 380, 40));
  692. jTextFieldWeight.setBorder (new javax.swing.border.TitledBorder(
  693. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  694. "Weight (0-32000)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  695. jTextFieldWeight.setText ("0");
  696. jPanelMain.add (jTextFieldWeight, new org.netbeans.lib.awtextra.AbsoluteConstraints (30, 260, 380, 40));
  697. jTextFieldView.setBorder (new javax.swing.border.TitledBorder(
  698. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  699. "View (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  700. jTextFieldView.setText ("0");
  701. jPanelMain.add (jTextFieldView, new org.netbeans.lib.awtextra.AbsoluteConstraints (460, 150, 300, 40));
  702. jTextFieldJamming.setBorder (new javax.swing.border.TitledBorder(
  703. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  704. "Jamming (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  705. jTextFieldJamming.setText ("0");
  706. jPanelMain.add (jTextFieldJamming, new org.netbeans.lib.awtextra.AbsoluteConstraints (460, 210, 300, 40));
  707. jTextFieldEnergyTank.setBorder (new javax.swing.border.TitledBorder(
  708. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  709. "Energy.Tank (0-2147483646)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  710. java.awt.Color.black));
  711. jTextFieldEnergyTank.setText ("0");
  712. jPanelMain.add (jTextFieldEnergyTank, new org.netbeans.lib.awtextra.AbsoluteConstraints (460, 360, 300, 40));
  713. jTextFieldMaterialTank.setBorder (new javax.swing.border.TitledBorder(
  714. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  715. "Material.Tank (0-2147483646)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  716. java.awt.Color.black));
  717. jTextFieldMaterialTank.setText ("0");
  718. jPanelMain.add (jTextFieldMaterialTank, new org.netbeans.lib.awtextra.AbsoluteConstraints (460, 300, 300, 40));
  719. jLabelProductionBorder.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  720. jPanelMain.add (jLabelProductionBorder, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 330, 420, 140));
  721. jLabelNameDescriptionBorder.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  722. jPanelMain.add (jLabelNameDescriptionBorder, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 770, 110));
  723. jLabelIDArmorWeightBorder.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  724. jPanelMain.add (jLabelIDArmorWeightBorder, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 130, 420, 190));
  725. jLabelViewJammingBorder.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  726. jPanelMain.add (jLabelViewJammingBorder, new org.netbeans.lib.awtextra.AbsoluteConstraints (440, 130, 340, 140));
  727. jLabelEnergyMaterialTankBorder.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  728. jPanelMain.add (jLabelEnergyMaterialTankBorder, new org.netbeans.lib.awtextra.AbsoluteConstraints (440, 280, 340, 190));
  729. jLabelEnergyTankWarning.setBorder (new javax.swing.border.TitledBorder(
  730. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  731. "Energy.Tank.Note", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  732. jLabelEnergyTankWarning.setText ("Energy.Tank > 0 for generators ONLY !");
  733. jPanelMain.add (jLabelEnergyTankWarning, new org.netbeans.lib.awtextra.AbsoluteConstraints (460, 410, 300, 40));
  734. jButtonSave.setText ("Save");
  735. jButtonSave.addActionListener (new java.awt.event.ActionListener () {
  736. public void actionPerformed (java.awt.event.ActionEvent evt) {
  737. jButtonSaveActionPerformed (evt);
  738. }
  739. }
  740. );
  741. jPanelMain.add (jButtonSave, new org.netbeans.lib.awtextra.AbsoluteConstraints (620, 20, 140, 40));
  742. jLabelVersion.setText ("Version ???");
  743. jLabelVersion.setHorizontalAlignment (javax.swing.SwingConstants.CENTER);
  744. jPanelMain.add (jLabelVersion, new org.netbeans.lib.awtextra.AbsoluteConstraints (620, 70, 150, 40));
  745. jTabbedPaneMain.addTab ("Main", jPanelMain);
  746. jPanelMovement.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  747. jPanelMovementTable.setLayout (new java.awt.GridLayout (8, 2));
  748. jPanelMovement.add (jPanelMovementTable, new org.netbeans.lib.awtextra.AbsoluteConstraints (340, 10, 430, 360));
  749. jComboBoxCategory.setBorder (new javax.swing.border.TitledBorder(
  750. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  751. "Category", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  752. jPanelMovement.add (jComboBoxCategory, new org.netbeans.lib.awtextra.AbsoluteConstraints (20, 40, 290, 50));
  753. jCheckBoxWaitAfterMove.setText ("wait after movement (for attack)");
  754. jPanelMovement.add (jCheckBoxWaitAfterMove, new org.netbeans.lib.awtextra.AbsoluteConstraints (20, 130, 290, 40));
  755. jTextFieldFuelconsumption.setBorder (new javax.swing.border.TitledBorder(
  756. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  757. "Fuelconsumption (0-65534)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  758. java.awt.Color.black));
  759. jTextFieldFuelconsumption.setText ("0");
  760. jPanelMovement.add (jTextFieldFuelconsumption, new org.netbeans.lib.awtextra.AbsoluteConstraints (360, 410, 180, 40));
  761. jTextFieldTank.setBorder (new javax.swing.border.TitledBorder(
  762. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  763. "Tank (0-2147483646)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  764. jTextFieldTank.setText ("0");
  765. jPanelMovement.add (jTextFieldTank, new org.netbeans.lib.awtextra.AbsoluteConstraints (580, 410, 170, 40));
  766. jLabelFuelconsumptionTankBorder.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  767. jPanelMovement.add (jLabelFuelconsumptionTankBorder, new org.netbeans.lib.awtextra.AbsoluteConstraints (340, 390, 430, 80));
  768. jTextFieldDistanceHeightChange.setBorder (new javax.swing.border.TitledBorder(
  769. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  770. "Distance for height-change (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  771. java.awt.Color.black));
  772. jTextFieldDistanceHeightChange.setText ("0");
  773. jPanelMovement.add (jTextFieldDistanceHeightChange, new org.netbeans.lib.awtextra.AbsoluteConstraints (20, 210, 290, 40));
  774. jTextFieldMaxWindspeed.setBorder (new javax.swing.border.TitledBorder(
  775. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  776. "Maximum windspeed (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  777. java.awt.Color.black));
  778. jTextFieldMaxWindspeed.setText ("0");
  779. jPanelMovement.add (jTextFieldMaxWindspeed, new org.netbeans.lib.awtextra.AbsoluteConstraints (30, 310, 270, 40));
  780. jLabelMaxWindspeed.setBorder (new javax.swing.border.TitledBorder(
  781. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  782. "Maximum windspeed.Note", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  783. jLabelMaxWindspeed.setText ("maximum windspeed that can be survived");
  784. jLabelMaxWindspeed.setFont (new java.awt.Font ("Arial", 0, 10));
  785. jPanelMovement.add (jLabelMaxWindspeed, new org.netbeans.lib.awtextra.AbsoluteConstraints (30, 380, 270, 50));
  786. jLabelWindspeedBorder.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  787. jPanelMovement.add (jLabelWindspeedBorder, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 290, 310, 180));
  788. jTabbedPaneMain.addTab ("Movement", jPanelMovement);
  789. jPanelLoad.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  790. jTextFieldMaxLoad.setBorder (new javax.swing.border.TitledBorder(
  791. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  792. "Maximum total load (0-32000)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  793. java.awt.Color.black));
  794. jTextFieldMaxLoad.setText ("0");
  795. jPanelLoad.add (jTextFieldMaxLoad, new org.netbeans.lib.awtextra.AbsoluteConstraints (120, 10, 260, 40));
  796. jTextFieldMaxUnitWeight.setBorder (new javax.swing.border.TitledBorder(
  797. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  798. "Maximum weight of unit (0-32000)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  799. java.awt.Color.black));
  800. jTextFieldMaxUnitWeight.setText ("0");
  801. jPanelLoad.add (jTextFieldMaxUnitWeight, new org.netbeans.lib.awtextra.AbsoluteConstraints (390, 10, 240, 40));
  802. jPanelLoadTable.setLayout (new java.awt.GridLayout (8, 3));
  803. jPanelLoad.add (jPanelLoadTable, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 110, 570, 320));
  804. jPanelLoadTabelTitle.setLayout (new java.awt.GridLayout (1, 4));
  805. jLabelOnHeight.setText ("Unit must be on that height");
  806. jLabelOnHeight.setFont (new java.awt.Font ("Dialog", 0, 10));
  807. jPanelLoadTabelTitle.add (jLabelOnHeight);
  808. jLabelAbleHeight.setText ("Unit must be able to be on that height");
  809. jLabelAbleHeight.setFont (new java.awt.Font ("Dialog", 0, 10));
  810. jLabelAbleHeight.setHorizontalTextPosition (javax.swing.SwingConstants.LEFT);
  811. jPanelLoadTabelTitle.add (jLabelAbleHeight);
  812. jLabelNotHeight.setText ("Unit mustn\u00b4t be able to be on that height");
  813. jLabelNotHeight.setFont (new java.awt.Font ("Dialog", 0, 10));
  814. jPanelLoadTabelTitle.add (jLabelNotHeight);
  815. jLabelMustCategory.setText ("Unit must be of that category");
  816. jLabelMustCategory.setFont (new java.awt.Font ("Dialog", 0, 10));
  817. jPanelLoadTabelTitle.add (jLabelMustCategory);
  818. jPanelLoad.add (jPanelLoadTabelTitle, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 70, 760, 40));
  819. jPanelMustCategory.setLayout (new java.awt.GridLayout (15, 1));
  820. jPanelLoad.add (jPanelMustCategory, new org.netbeans.lib.awtextra.AbsoluteConstraints (580, 110, 190, 320));
  821. jTabbedPaneMain.addTab ("Load", jPanelLoad);
  822. jPanelWeapons.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  823. jComboBoxWeapons.addItemListener (new java.awt.event.ItemListener () {
  824. public void itemStateChanged (java.awt.event.ItemEvent evt) {
  825. jComboBoxWeaponsItemStateChanged (evt);
  826. }
  827. }
  828. );
  829. jPanelWeapons.add (jComboBoxWeapons, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 250, 30));
  830. jPanelEfficiencies.setLayout (new java.awt.GridLayout (13, 1));
  831. jPanelEfficiencies.setBorder (new javax.swing.border.TitledBorder(
  832. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  833. "Efficiencies", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  834. jPanelWeapons.add (jPanelEfficiencies, new org.netbeans.lib.awtextra.AbsoluteConstraints (570, 10, 200, 470));
  835. jButtonAddWeapon.setText ("Add");
  836. jButtonAddWeapon.addActionListener (new java.awt.event.ActionListener () {
  837. public void actionPerformed (java.awt.event.ActionEvent evt) {
  838. jButtonAddWeaponActionPerformed (evt);
  839. }
  840. }
  841. );
  842. jPanelWeapons.add (jButtonAddWeapon, new org.netbeans.lib.awtextra.AbsoluteConstraints (270, 10, 140, 30));
  843. jButtonRemoveWeapon.setText ("Remove");
  844. jButtonRemoveWeapon.addActionListener (new java.awt.event.ActionListener () {
  845. public void actionPerformed (java.awt.event.ActionEvent evt) {
  846. jButtonRemoveWeaponActionPerformed (evt);
  847. }
  848. }
  849. );
  850. jPanelWeapons.add (jButtonRemoveWeapon, new org.netbeans.lib.awtextra.AbsoluteConstraints (430, 10, 130, 30));
  851. jPaneWeaponslMisc.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  852. jTextFieldWeaponMaxDistance.setBorder (new javax.swing.border.TitledBorder(
  853. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  854. "Distance.max (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  855. jTextFieldWeaponMaxDistance.setText ("0");
  856. jPaneWeaponslMisc.add (jTextFieldWeaponMaxDistance, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 110, 300, 40));
  857. jTextFieldWeaponMinDistance.setBorder (new javax.swing.border.TitledBorder(
  858. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  859. "Distance.min (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  860. jTextFieldWeaponMinDistance.setText ("0");
  861. jPaneWeaponslMisc.add (jTextFieldWeaponMinDistance, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 300, 40));
  862. jTextFieldWeaponMinStrength.setBorder (new javax.swing.border.TitledBorder(
  863. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  864. "Strength.at.min.distance (1-2147483646)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  865. java.awt.Color.black));
  866. jTextFieldWeaponMinStrength.setText ("0");
  867. jPaneWeaponslMisc.add (jTextFieldWeaponMinStrength, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 60, 300, 40));
  868. jTextFieldWeaponMaxStrength.setBorder (new javax.swing.border.TitledBorder(
  869. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  870. "Strength.at.max.distance (1-2147483646)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  871. java.awt.Color.black));
  872. jTextFieldWeaponMaxStrength.setText ("0");
  873. jPaneWeaponslMisc.add (jTextFieldWeaponMaxStrength, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 160, 300, 40));
  874. jTextFieldWeaponAmmo.setBorder (new javax.swing.border.TitledBorder(
  875. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  876. "Ammo (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  877. jTextFieldWeaponAmmo.setText ("0");
  878. jPaneWeaponslMisc.add (jTextFieldWeaponAmmo, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 210, 300, 40));
  879. jTabbedPaneWeapons.addTab ("Misc", jPaneWeaponslMisc);
  880. jPaneWeaponslWeaponAimHeights.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  881. jPanelWeaponAim.setLayout (new java.awt.GridLayout (8, 1));
  882. jPaneWeaponslWeaponAimHeights.add (jPanelWeaponAim, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 300, 190));
  883. jTabbedPaneWeapons.addTab ("Weapon.aim.heights", jPaneWeaponslWeaponAimHeights);
  884. jPanelWeaponsWeaponSourceHeights.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  885. jPanelWeaponSource.setLayout (new java.awt.GridLayout (8, 1));
  886. jPanelWeaponsWeaponSourceHeights.add (jPanelWeaponSource, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 300, 190));
  887. jTabbedPaneWeapons.addTab ("Weapon.source.heights", jPanelWeaponsWeaponSourceHeights);
  888. jPanelWeaponsWeaponType.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  889. jPanelWeaponType.setLayout (new java.awt.GridLayout (12, 1));
  890. jPanelWeaponsWeaponType.add (jPanelWeaponType, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 20, 300, 220));
  891. jTabbedPaneWeapons.addTab ("Weapon.type", jPanelWeaponsWeaponType);
  892. jPanelWeaponsWeaponCanNotHit.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  893. jPanelWeaponCanNotHit.setLayout (new java.awt.GridLayout (15, 1));
  894. jPanelWeaponsWeaponCanNotHit.add (jPanelWeaponCanNotHit, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 300, 340));
  895. jTabbedPaneWeapons.addTab ("Weapon.can.NOT.hit", jPanelWeaponsWeaponCanNotHit);
  896. jPanelWeapons.add (jTabbedPaneWeapons, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 50, 560, 420));
  897. jTabbedPaneMain.addTab ("Weapons", jPanelWeapons);
  898. jPanelFunctions.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  899. jPanelFunctionSelect.setLayout (new java.awt.GridLayout (25, 1));
  900. jPanelFunctions.add (jPanelFunctionSelect, new org.netbeans.lib.awtextra.AbsoluteConstraints (10, 10, 410, 460));
  901. jTextFieldResourceRadius.setBorder (new javax.swing.border.TitledBorder(
  902. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  903. "Radius to check for resources (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10),
  904. java.awt.Color.black));
  905. jTextFieldResourceRadius.setText ("0");
  906. jPanelFunctions.add (jTextFieldResourceRadius, new org.netbeans.lib.awtextra.AbsoluteConstraints (440, 20, 330, 40));
  907. jTextFieldAutoRepairRate.setBorder (new javax.swing.border.TitledBorder(
  908. new javax.swing.border.EtchedBorder(), "AutoRepairRate (0-100)", 4, 2,
  909. new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  910. jTextFieldAutoRepairRate.setText ("0");
  911. jPanelFunctions.add (jTextFieldAutoRepairRate, new org.netbeans.lib.awtextra.AbsoluteConstraints (440, 70, 330, 40));
  912. jTabbedPaneMain.addTab ("Functions", jPanelFunctions);
  913. jPanelClass.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  914. jPanelClassFunctionSelect.setLayout (new java.awt.GridLayout (25, 1));
  915. jPanelClass.add (jPanelClassFunctionSelect, new org.netbeans.lib.awtextra.AbsoluteConstraints (530, 10, 250, 420));
  916. jListClasses.setBorder (new javax.swing.border.TitledBorder(
  917. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  918. "Classes", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  919. jListClasses.addListSelectionListener (new javax.swing.event.ListSelectionListener () {
  920. public void valueChanged (javax.swing.event.ListSelectionEvent evt) {
  921. jListClassesValueChanged (evt);
  922. }
  923. }
  924. );
  925. jPanelClass.add (jListClasses, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 60, 220, 180));
  926. jTextFieldClassName.setBorder (new javax.swing.border.TitledBorder(
  927. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  928. "Classname", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  929. jTextFieldClassName.setText ("Classname");
  930. jPanelClass.add (jTextFieldClassName, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 0, 220, 50));
  931. jButtonNewClass.setText ("New class");
  932. jButtonNewClass.addActionListener (new java.awt.event.ActionListener () {
  933. public void actionPerformed (java.awt.event.ActionEvent evt) {
  934. jButtonNewClassActionPerformed (evt);
  935. }
  936. }
  937. );
  938. jPanelClass.add (jButtonNewClass, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 250, 110, 30));
  939. jButtonSetClassName.setText ("Set name");
  940. jButtonSetClassName.addActionListener (new java.awt.event.ActionListener () {
  941. public void actionPerformed (java.awt.event.ActionEvent evt) {
  942. jButtonSetClassNameActionPerformed (evt);
  943. }
  944. }
  945. );
  946. jPanelClass.add (jButtonSetClassName, new org.netbeans.lib.awtextra.AbsoluteConstraints (110, 250, 110, 30));
  947. jButtonDeleteClass.setText ("Delete class");
  948. jButtonDeleteClass.addActionListener (new java.awt.event.ActionListener () {
  949. public void actionPerformed (java.awt.event.ActionEvent evt) {
  950. jButtonDeleteClassActionPerformed (evt);
  951. }
  952. }
  953. );
  954. jPanelClass.add (jButtonDeleteClass, new org.netbeans.lib.awtextra.AbsoluteConstraints (110, 280, 110, 30));
  955. jButtonSetClassStandard.setText ("Set standard");
  956. jButtonSetClassStandard.addActionListener (new java.awt.event.ActionListener () {
  957. public void actionPerformed (java.awt.event.ActionEvent evt) {
  958. jButtonSetClassStandardActionPerformed (evt);
  959. }
  960. }
  961. );
  962. jPanelClass.add (jButtonSetClassStandard, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 280, 110, 30));
  963. jPanelClassWeaponImprovement.setLayout (new java.awt.GridLayout (9, 1));
  964. jPanelClass.add (jPanelClassWeaponImprovement, new org.netbeans.lib.awtextra.AbsoluteConstraints (230, 10, 290, 470));
  965. jPanelClassTechnologyIDs.setLayout (new java.awt.GridLayout (4, 1));
  966. jPanelClass.add (jPanelClassTechnologyIDs, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 320, 220, 160));
  967. jTextFieldTechLevel.setBorder (new javax.swing.border.TitledBorder(
  968. new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)),
  969. "Techlevel (0-255)", 4, 2, new java.awt.Font ("Arial", 0, 10), java.awt.Color.black));
  970. jTextFieldTechLevel.setText ("0");
  971. jPanelClass.add (jTextFieldTechLevel, new org.netbeans.lib.awtextra.AbsoluteConstraints (530, 440, 250, 40));
  972. jTabbedPaneMain.addTab ("Class", jPanelClass);
  973. jPanelInfoText.setLayout (new java.awt.GridLayout (1, 1));
  974. jTextPaneInfoText.setText ("InfoText");
  975. jScrollPaneInfoText.setViewportView (jTextPaneInfoText);
  976. jPanelInfoText.add (jScrollPaneInfoText);
  977. jTabbedPaneMain.addTab ("InfoText", jPanelInfoText);
  978. jPanelTerrainAccess.setLayout (new java.awt.GridLayout (15, 4));
  979. jTabbedPaneMain.addTab ("TerrainAccess", jPanelTerrainAccess);
  980. jPanelPicture.setLayout (new org.netbeans.lib.awtextra.AbsoluteLayout ());
  981. jTabbedPaneMain.addTab ("Picture", jPanelPicture);
  982. getContentPane ().add (jTabbedPaneMain, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 0, 790, 510));
  983. jLabelErrorMessage.setBorder (new javax.swing.border.EtchedBorder(java.awt.Color.white, new java.awt.Color (134, 134, 134)));
  984. getContentPane ().add (jLabelErrorMessage, new org.netbeans.lib.awtextra.AbsoluteConstraints (0, 520, 790, 20));
  985. }//GEN-END:initComponents
  986. private void jButtonRemoveWeaponActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRemoveWeaponActionPerformed
  987. // Add your handling code here:
  988. if (initDone == 1) {
  989. if (tUnit.weapons.count == 0) return;
  990. int pos = jComboBoxWeapons.getSelectedIndex();
  991. for (int i = pos;i < tUnit.weapons.count-1;i++) {
  992. tUnit.weapons.weapon[i]=tUnit.weapons.weapon[i+1];
  993. }
  994. if (tUnit.weapons.count == 1) jComboBoxWeapons.addItem("No weapons");
  995. jComboBoxWeapons.removeItemAt(tUnit.weapons.count-1);
  996. errMsg.showMessage("Weapon removed from position "+(pos+1)+" !");
  997. tUnit.weapons.count--;
  998. setUnitWeaponComboBox();
  999. showWeaponValues(pos,WEAPON_NOSAVE);
  1000. }
  1001. }//GEN-LAST:event_jButtonRemoveWeaponActionPerformed
  1002. private void jButtonAddWeaponActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAddWeaponActionPerformed
  1003. // Add your handling code here:
  1004. if (initDone == 1) {
  1005. if (tUnit.weapons.count == 16) return;
  1006. int pos = jComboBoxWeapons.getSelectedIndex();
  1007. if (pos > -1) {
  1008. for (int i = tUnit.weapons.count-1;i >= pos;i--) {
  1009. tUnit.weapons.weapon[i+1]=tUnit.weapons.weapon[i];
  1010. }
  1011. tUnit.weapons.weapon[pos] = new SingleWeapon();
  1012. }
  1013. jComboBoxWeapons.addItem("Weapon ".concat(new java.lang.Integer(tUnit.weapons.count+1).toString()));
  1014. if (tUnit.weapons.count == 0 ) jComboBoxWeapons.removeItemAt(tUnit.weapons.count);
  1015. tUnit.weapons.count++;
  1016. errMsg.showMessage("Weapon added at position "+(pos+1)+" !");
  1017. setUnitWeaponComboBox();
  1018. showWeaponValues(pos,WEAPON_NOSAVE);
  1019. }
  1020. }//GEN-LAST:event_jButtonAddWeaponActionPerformed
  1021. private void jButtonSaveActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSaveActionPerformed
  1022. setVariablesForSave();
  1023. tUnit.write();
  1024. jLabelVersion.setText ("Version "+tUnit.version+".0");
  1025. }//GEN-LAST:event_jButtonSaveActionPerformed
  1026. private void jTabbedPaneMainStateChanged (javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jTabbedPaneMainStateChanged
  1027. // Add your handling code here:
  1028. //if Pane is changed, check these things
  1029. if (initDone == 1) {
  1030. for (int i=0; i < cHeightLevel.length;i++) {
  1031. if ( movementTableCheckBox[i].isSelected() == true ) {
  1032. weaponSourceSelectCheckBox[i].setEnabled(true);
  1033. } else weaponSourceSelectCheckBox[i].setEnabled(false);
  1034. //Check if Unit can move on this height !!
  1035. // if unit can move on this height it can fire from this height
  1036. // movement -> weapon panel
  1037. }
  1038. showWeaponValues(weaponLastIndex,WEAPON_SAVE); //save last Weapon vals before check
  1039. for (int i=0; i < tUnit.classbound[0].weaponcount; i++)
  1040. classWeaponImprovementTextField[i].setEnabled (false);
  1041. for (int i=0; i < tUnit.weapons.count;i++) {
  1042. for (int j=0; j < tUnit.classbound[0].weaponcount;j++) {
  1043. if ( (tUnit.weapons.weapon[i].typ & (1 << j)) > 0)
  1044. classWeaponImprovementTextField[j].setEnabled (true);
  1045. }
  1046. }
  1047. // check if weapon is available, then make Class-improvement possible
  1048. // weapon -> class panel
  1049. for (int i=0; i < cVehicleFunctions.length;i++)
  1050. if (functionSelectCheckBox[i].isSelected() == true)
  1051. classFunctionSelectCheckBox[i].setEnabled(true);
  1052. else classFunctionSelectCheckBox[i].setEnabled(false);
  1053. // check if functions are available on this unit, then they can be available at this class
  1054. // functions -> class panel
  1055. if ( pictureAvail ) {
  1056. canvas.setVisible(true);
  1057. canvas.showImage();
  1058. }
  1059. //showImage, if Image-Tab selected
  1060. }
  1061. }//GEN-LAST:event_jTabbedPaneMainStateChanged
  1062. private void jComboBoxWeaponsItemStateChanged (java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboBoxWeaponsItemStateChanged
  1063. // Add your handling code here: //Weapon-Panel
  1064. if (initDone == 1) {
  1065. int pos = jComboBoxWeapons.getSelectedIndex();
  1066. showWeaponValues(pos,WEAPON_SAVE);
  1067. }
  1068. }//GEN-LAST:event_jComboBoxWeaponsItemStateChanged
  1069. private void jButtonSetClassNameActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSetClassNameActionPerformed
  1070. // Add your handling code here: //Class-Panel
  1071. if (jListClasses.isSelectionEmpty() == true) return;
  1072. int selection = jListClasses.getSelectedIndex();
  1073. classNames[selection] = jTextFieldClassName.getText();
  1074. tUnit.classnames[selection] = classNames[selection];
  1075. jListClasses.setListData(classNames);
  1076. showClassValues(selection);
  1077. }//GEN-LAST:event_jButtonSetClassNameActionPerformed
  1078. private void jButtonSetClassStandardActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSetClassStandardActionPerformed
  1079. // Add your handling code here: //Class-Panel
  1080. if (jListClasses.isSelectionEmpty() == true) return;
  1081. int selection = jListClasses.getSelectedIndex();
  1082. setClassValues(CLASS_STANDARD,selection);
  1083. showClassValues(selection);
  1084. }//GEN-LAST:event_jButtonSetClassStandardActionPerformed
  1085. private void jListClassesValueChanged (javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jListClassesValueChanged
  1086. // Add your handling code here: //Class-Panel
  1087. checkClassButtonsAndIndex();
  1088. if (jListClasses.isSelectionEmpty() == true) return;
  1089. int selection = jListClasses.getSelectedIndex();
  1090. if (selection > 7) { //max 8 classes
  1091. jListClasses.setSelectedIndex(7);
  1092. selection = 7;
  1093. return;
  1094. }
  1095. setClassValues(CLASS_ORIGINAL,classLastIndex);
  1096. classLastIndex = selection;
  1097. showClassValues(selection);
  1098. }//GEN-LAST:event_jListClassesValueChanged
  1099. private void jButtonDeleteClassActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeleteClassActionPerformed
  1100. // Add your handling code here: //Class-Panel
  1101. if (jListClasses.isSelectionEmpty() == true) return;
  1102. int selection = jListClasses.getSelectedIndex();
  1103. tUnit.classnum--;
  1104. for (int i = selection;i < tUnit.classnum;i++) {
  1105. classNames[i] = classNames[i+1];
  1106. tUnit.classnames[i] = tUnit.classnames[i+1];
  1107. tUnit.classbound[i] = tUnit.classbound[i+1];
  1108. }
  1109. classNames[tUnit.classnum] = "";
  1110. tUnit.classnames[tUnit.classnum] = "";
  1111. jListClasses.setListData(classNames);
  1112. showClassValues(selection);
  1113. checkClassButtonsAndIndex();
  1114. }//GEN-LAST:event_jButtonDeleteClassActionPerformed
  1115. private void jButtonNewClassActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNewClassActionPerformed
  1116. // Add your handling code here: //Class-Panel
  1117. if (jListClasses.isSelectionEmpty() == true) return;
  1118. if (jTextFieldClassName.getText().length() <= 0) {
  1119. errMsg.showMessage("You must enter a classname !");
  1120. return;
  1121. }
  1122. int selection = jListClasses.getSelectedIndex();
  1123. setClassValues(CLASS_ORIGINAL,selection);
  1124. String selectedName = jTextFieldClassName.getText();
  1125. for (int i=0; i < tUnit.classnum;i++)
  1126. if (classNames[i].compareTo(selectedName) == 0 ) {
  1127. errMsg.showMessage("Name already exists !");
  1128. return;
  1129. }
  1130. for (int i=tUnit.classnum; i > selection;i--){
  1131. classNames[i] = classNames[i-1];
  1132. tUnit.classnames[i] = tUnit.classnames[i-1];
  1133. tUnit.classbound[i] = tUnit.classbound[i-1];
  1134. }
  1135. tUnit.classbound[selection] = new ClassBound();
  1136. classNames[selection] = selectedName;
  1137. tUnit.classnames[selection] = selectedName;
  1138. if (selection == tUnit.classnum) setClassValues(CLASS_STANDARD,selection);
  1139. else setClassValues(CLASS_ORIGINAL,selection);
  1140. tUnit.classnum++;
  1141. showClassValues(selection);
  1142. jListClasses.setListData(classNames);
  1143. checkClassButtonsAndIndex();
  1144. }//GEN-LAST:event_jButtonNewClassActionPerformed
  1145. public void showWeaponValues(int index,int save) { //Weapon-Panel
  1146. // -1 for no save
  1147. if (save == 1) {
  1148. tUnit.weapons.weapon[weaponLastIndex].minDistance = jIntFieldMinDistance.getInt();
  1149. tUnit.weapons.weapon[weaponLastIndex].maxDistance = jIntFieldMaxDistance.getInt();
  1150. tUnit.weapons.weapon[weaponLastIndex].minStrength = jIntFieldMinDistanceStrength.getInt();
  1151. tUnit.weapons.weapon[weaponLastIndex].maxStrength = jIntFieldMaxDistanceStrength.getInt();
  1152. tUnit.weapons.weapon[weaponLastIndex].count = jIntFieldAmmo.getInt();
  1153. for (int i=0; i < 13;i++) {
  1154. tUnit.weapons.weapon[weaponLastIndex].efficiency[i] = jIntFieldEfficiencies[i].getInt();
  1155. }
  1156. for (int i=0; i < cWeaponType.length;i++) {
  1157. if (weaponTypeSelectCheckBox[i].isSelected() == true )
  1158. tUnit.weapons.weapon[weaponLastIndex].typ |= (1 << i);
  1159. else tUnit.weapons.weapon[weaponLastIndex].typ &= ~(1 << i);
  1160. }
  1161. for (int i=0; i < cHeightLevel.length;i++) {
  1162. if ( weaponAimSelectCheckBox[i].isSelected() == true )
  1163. tUnit.weapons.weapon[weaponLastIndex].targ |= (1 << i);
  1164. else tUnit.weapons.weapon[weaponLastIndex].targ &= ~(1 << i);
  1165. if ( weaponSourceSelectCheckBox[i].isSelected() == true )
  1166. tUnit.weapons.weapon[weaponLastIndex].sourceHeight |= (1 << i);
  1167. else tUnit.weapons.weapon[weaponLastIndex].sourceHeight &= ~(1 << i);
  1168. }
  1169. for (int i=0; i < cMovemaliType.length;i++) {
  1170. if (weaponCanNotHitSelectCheckBox[i].isSelected() == true )
  1171. tUnit.weapons.weapon[weaponLastIndex].targets_not_hittable |= (1 << i);
  1172. else tUnit.weapons.weapon[weaponLastIndex].targets_not_hittable &= ~(1 << i);
  1173. }
  1174. }
  1175. for (int i=0; i < cWeaponType.length;i++) {
  1176. if ( (tUnit.weapons.weapon[index].typ & (1 << i)) > 0 )
  1177. weaponTypeSelectCheckBox[i].setSelected(true);
  1178. else weaponTypeSelectCheckBox[i].setSelected(false);
  1179. }
  1180. for (int i=0; i < cHeightLevel.length;i++) {
  1181. if ( (tUnit.weapons.weapon[index].targ & (1 << i)) > 0 )
  1182. weaponAimSelectCheckBox[i].setSelected(true);
  1183. else weaponAimSelectCheckBox[i].setSelected(false);
  1184. if ( (tUnit.weapons.weapon[index].sourceHeight & (1 << i)) > 0 )
  1185. weaponSourceSelectCheckBox[i].setSelected(true);
  1186. else weaponSourceSelectCheckBox[i].setSelected(false);
  1187. }
  1188. for (int i=0; i < cMovemaliType.length;i++) {
  1189. if ( (tUnit.weapons.weapon[index].targets_not_hittable & (1 << i)) > 0 )
  1190. weaponCanNotHitSelectCheckBox[i].setSelected(true);
  1191. else weaponCanNotHitSelectCheckBox[i].setSelected(false);
  1192. }
  1193. jIntFieldMinDistance.setInt(tUnit.weapons.weapon[index].minDistance);
  1194. jIntFieldMaxDistance.setInt(tUnit.weapons.weapon[index].maxDistance);
  1195. jIntFieldMinDistanceStrength.setInt(tUnit.weapons.weapon[index].minStrength);
  1196. jIntFieldMaxDistanceStrength.setInt(tUnit.weapons.weapon[index].maxStrength);
  1197. jIntFieldAmmo.setInt(tUnit.weapons.weapon[index].count);
  1198. for (int i=0; i < 13;i++) {
  1199. jIntFieldEfficiencies[i].setInt(tUnit.weapons.weapon[index].efficiency[i]);
  1200. }
  1201. weaponLastIndex = index;
  1202. }
  1203. private void setUnitWeaponComboBox() { // Weapon-Panel
  1204. if (tUnit.weapons.count > 0) {
  1205. jComboBoxWeapons.setEnabled(true);
  1206. for (int i =0;i < tUnit.weapons.count;i++)
  1207. if (tUnit.weapons.count == 16) jButtonAddWeapon.setEnabled(false);
  1208. else jButtonAddWeapon.setEnabled(true);
  1209. jButtonRemoveWeapon.setEnabled(true);
  1210. jTabbedPaneWeapons.setEnabled(true);
  1211. for (int i=0; i < 13;i++) jTextFieldEfficiencies[i].setEnabled(true);
  1212. jTextFieldWeaponMaxDistance.setEnabled(true);
  1213. jTextFieldWeaponMinDistance.setEnabled(true);
  1214. jTextFieldWeaponMaxStrength.setEnabled(true);
  1215. jTextFieldWeaponMinStrength.setEnabled(true);
  1216. jTextFieldWeaponAmmo.setEnabled(true);
  1217. for (int i=0; i < cWeaponType.length;i++) weaponTypeSelectCheckBox[i].setEnabled(true);
  1218. for (int i=0; i < cHeightLevel.length;i++) weaponAimSelectCheckBox[i].setEnabled(true);
  1219. for (int i=0; i < cHeightLevel.length;i++) weaponSourceSelectCheckBox[i].setEnabled(true);
  1220. for (int i=0; i < cMovemaliType.length;i++) weaponCanNotHitSelectCheckBox[i].setEnabled(true);
  1221. for (int i=0; i < cHeightLevel.length;i++) {
  1222. if ( movementTableCheckBox[i].isSelected() == true ) {
  1223. weaponSourceSelectCheckBox[i].setEnabled(true);
  1224. } else weaponSourceSelectCheckBox[i].setEnabled(false);
  1225. //Check if Unit can move on this height !!
  1226. // if unit can move on this height it can fire from this height
  1227. // movement -> weapon panel
  1228. }
  1229. } else {
  1230. jComboBoxWeapons.setEnabled(false);
  1231. jButtonRemoveWeapon.setEnabled(false);
  1232. jTabbedPaneWeapons.setEnabled(false);
  1233. for (int i=0; i < 13;i++) jTextFieldEfficiencies[i].setEnabled(false);
  1234. jTextFieldWeaponMaxDistance.setEnabled(false);
  1235. jTextFieldWeaponMinDistance.setEnabled(false);
  1236. jTextFieldWeaponMaxStrength.setEnabled(false);
  1237. jTextFieldWeaponMinStrength.setEnabled(false);
  1238. jTextFieldWeaponAmmo.setEnabled(false);
  1239. for (int i=0; i < cWeaponType.length;i++) weaponTypeSelectCheckBox[i].setEnabled(false);
  1240. for (int i=0; i < cHeightLevel.length;i++) weaponAimSelectCheckBox[i].setEnabled(false);
  1241. for (int i=0; i < cHeightLevel.length;i++) weaponSourceSelectCheckBox[i].setEnabled(false);
  1242. for (int i=0; i < cMovemaliType.length;i++) weaponCanNotHitSelectCheckBox[i].setEnabled(false);
  1243. }
  1244. }
  1245. private void weaponMaxDistanceCheck() { //Load-Panel
  1246. int maxDistance = jIntFieldMaxDistance.getInt();
  1247. if (jIntFieldMaxDistance.convertError != 0) return;
  1248. jTextFieldWeaponMinDistance.setBorder (new javax.swing.border.TitledBorder(
  1249. new javax.swing.border.EtchedBorder(), "Distance.min (0-".concat(new java.lang.Integer(maxDistance)
  1250. .toString()).concat(")"), 1, 2,
  1251. new java.awt.Font ("Arial", 0, 10)));
  1252. jIntFieldMinDistance.setMax(maxDistance);
  1253. }
  1254. private void checkClassButtonsAndIndex() { //Class-Panel
  1255. if (tUnit.classnum == 0) {
  1256. jButtonSetClassStandard.setEnabled(false);
  1257. jButtonSetClassName.setEnabled(false);
  1258. jButtonDeleteClass.setEnabled(false);
  1259. jListClasses.setSelectedIndex(0);
  1260. }
  1261. else {
  1262. jButtonSetClassStandard.setEnabled(true);
  1263. jButtonSetClassName.setEnabled(true);
  1264. jButtonDeleteClass.setEnabled(true);
  1265. }
  1266. if (tUnit.classnum == 8) jButtonNewClass.setEnabled(false);
  1267. else jButtonNewClass.setEnabled(true);
  1268. if (jListClasses.getSelectedIndex() > tUnit.classnum)
  1269. jListClasses.setSelectedIndex(tUnit.classnum);
  1270. }
  1271. private void showClassValues(int selection) { //Class-Panel
  1272. jTextFieldClassName.setText(tUnit.classnames[selection]);
  1273. for(int i = 0;i < tUnit.classbound[selection].weaponcount;i++)
  1274. jIntFieldClassWeaponImprovement[i].setInt(tUnit.classbound[selection].weapstrength[i]);
  1275. jIntFieldClassWeaponImprovement[tUnit.classbound[selection].weaponcount]
  1276. .setInt(tUnit.classbound[selection].armor);
  1277. for (int i=0; i < cVehicleFunctions.length;i++) {
  1278. if ( (tUnit.classbound[selection].vehiclefunctions & (1 << i)) > 0 )
  1279. classFunctionSelectCheckBox[i].setSelected(true);
  1280. else classFunctionSelectCheckBox[i].setSelected(false);
  1281. }
  1282. for(int i = 0;i < 4;i++) jIntFieldClassTechnologyID[i]
  1283. .setInt(tUnit.classbound[selection].techrequired[i]);
  1284. technologyIDCheck();
  1285. jIntFieldClassTechLevel.setInt(tUnit.classbound[selection].techlevel);
  1286. }
  1287. private void setClassValues(int val, int selection) { //Class-Panel
  1288. // setzt die Classvalues von selection auf Standard oder akt. Boxen
  1289. // ORIGINAL for original values, STANDARD for standard vals
  1290. if (val == CLASS_ORIGINAL) {
  1291. tUnit.classbound[selection].vehiclefunctions = 0;
  1292. for (int i=0; i < cVehicleFunctions.length;i++) {
  1293. if ( classFunctionSelectCheckBox[i].isSelected() == true )
  1294. tUnit.classbound[selection].vehiclefunctions |= (1 << i);
  1295. }
  1296. for(int i = 0;i < 4;i++)
  1297. tUnit.classbound[selection].techrequired[i] = jIntFieldClassTechnologyID[i].getInt();
  1298. for (int i=0; i< tUnit.classbound[selection].weaponcount ;i++ )
  1299. tUnit.classbound[selection].weapstrength[i] = jIntFieldClassWeaponImprovement[i].getInt();
  1300. tUnit.classbound[selection].armor =
  1301. jIntFieldClassWeaponImprovement[tUnit.classbound[selection].weaponcount].getInt();
  1302. tUnit.classbound[selection].techlevel =jIntFieldClassTechLevel.getInt();
  1303. } else {
  1304. for (int i=0; i< tUnit.classbound[selection].weaponcount ;i++ )
  1305. tUnit.classbound[selection].weapstrength[i] = 1024;
  1306. tUnit.classbound[selection].armor = 1024;
  1307. for (int i=0; i< 4; i++)
  1308. tUnit.classbound[selection].techrequired[i] = 0;
  1309. tUnit.classbound[selection].eventrequired = 0;
  1310. tUnit.classbound[selection].techlevel = 0;
  1311. tUnit.classbound[selection].vehiclefunctions = 0;
  1312. }
  1313. }
  1314. private int setVariablesForSave() {
  1315. int i = 0;
  1316. // Main-Panel
  1317. tUnit.name = jTxtFieldName.getText();
  1318. tUnit.description = jTxtFieldDescription.getText();
  1319. tUnit.id = jIntFieldID.getInt();
  1320. if (jIntFieldID.convertError != 0) i++;
  1321. tUnit.armor = jIntFieldArmor.getInt();
  1322. if (jIntFieldArmor.convertError != 0) i++;
  1323. tUnit.weight = jIntFieldWeight.getInt();
  1324. if (jIntFieldWeight.convertError != 0) i++;
  1325. tUnit.energy = jIntFieldEnergyTank.getInt();
  1326. if (jIntFieldEnergyTank.convertError != 0) i++;
  1327. tUnit.material = jIntFieldMaterialTank.getInt();
  1328. if (jIntFieldMaterialTank.convertError != 0) i++;
  1329. tUnit.production.energy = jIntFieldProductionEnergy.getInt();
  1330. if (jIntFieldProductionEnergy.convertError != 0) i++;
  1331. tUnit.production.material = jIntFieldProductionMaterial.getInt();
  1332. if (jIntFieldProductionMaterial.convertError != 0) i++;
  1333. tUnit.view = jIntFieldView.getInt();
  1334. if (jIntFieldView.convertError != 0) i++;
  1335. tUnit.jamming = jIntFieldJamming.getInt();
  1336. if (jIntFieldJamming.convertError != 0) i++;
  1337. //Info-Panel
  1338. tUnit.infotext =jTextPaneInfoText.getText();
  1339. // Movement-Panel
  1340. tUnit.height = 0;
  1341. for (int j=0; j < cHeightLevel.length;j++) {
  1342. if ( movementTableCheckBox[j].isSelected() == true ) {
  1343. tUnit.height |= (1 << j);
  1344. tUnit.movement[j] = jIntFieldMovementTable[j].getInt();
  1345. } else tUnit.movement[j] = 0;
  1346. }
  1347. tUnit.movemalustyp = jComboBoxCategory.getSelectedIndex();
  1348. if (jCheckBoxWaitAfterMove.isSelected() == true ) tUnit.wait = 1;
  1349. else tUnit.wait = 0;
  1350. tUnit.fuelconsumption = jIntFieldFuelconsumption.getInt();
  1351. if (jIntFieldFuelconsumption.convertError != 0) i++;
  1352. tUnit.tank = jIntFieldTank.getInt();
  1353. if (jIntFieldTank.convertError != 0) i++;
  1354. tUnit.steigung = jIntFieldDistanceHeightChange.getInt();
  1355. if (jIntFieldDistanceHeightChange.convertError != 0) i++;
  1356. tUnit.maxwindspeedonwater = jIntFieldMaxWindspeed.getInt();
  1357. if (jIntFieldMaxWindspeed.convertError != 0) i++;
  1358. //Load-Panel
  1359. tUnit.loadcapacity = jIntFieldMaxLoad.getInt();
  1360. if (jIntFieldMaxLoad.convertError != 0) i++;
  1361. tUnit.maxunitweight = jIntFieldMaxUnitWeight.getInt();
  1362. if (jIntFieldMaxUnitWeight.convertError != 0) i++;
  1363. tUnit.loadcapability = 0;
  1364. tUnit.loadcapabilityreq = 0;
  1365. tUnit.loadcapabilitynot = 0;
  1366. for (int j=0; j < cHeightLevel.length;j++) {
  1367. if ( loadOnHeightTableCheckBox[j].isSelected() == true )
  1368. tUnit.loadcapability |= (1 << j);
  1369. if ( loadAbleHeightTableCheckBox[j].isSelected() == true )
  1370. tUnit.loadcapabilityreq |= (1 << j);
  1371. if ( loadNotHeightTableCheckBox[j].isSelected() == true )
  1372. tUnit.loadcapabilitynot |= (1 << j);
  1373. }
  1374. tUnit.vehicleCategoriesLoadable = 0;
  1375. for (int j=0; j < cMovemaliType.length;j++) {
  1376. if ( loadMustCategoryCheckBox[j].isSelected() == true )
  1377. tUnit.vehicleCategoriesLoadable |= (1 << j);
  1378. }
  1379. //Functions-Panel
  1380. tUnit.functions = 0;
  1381. for (int j=0; j < cVehicleFunctions.length;j++) {
  1382. if ( functionSelectCheckBox[j].isSelected() == true )
  1383. tUnit.functions |= (1 << j);
  1384. }
  1385. tUnit.digrange = jIntFieldResourceRadius.getInt();
  1386. tUnit.autorepairrate = jIntFieldAutoRepairRate.getInt();
  1387. //Class-Panel
  1388. //Values will be directly written into tUnit ! except last values with ->
  1389. setClassValues(CLASS_ORIGINAL,classLastIndex);
  1390. //Weapon-Panel
  1391. //Values will be directly written into tUnit ! ; except last values with ->
  1392. showWeaponValues(weaponLastIndex,WEAPON_SAVE);
  1393. //TerrainAccess-Panel
  1394. tUnit._terrain = 0;
  1395. tUnit._terrainreq = 0;
  1396. tUnit._terrainnot = 0;
  1397. tUnit._terrainkill = 0;
  1398. for (int j=0; j < cTerrainType.length;j++) {
  1399. if ( accessAbleHeightTableCheckBox[j].isSelected() == true )
  1400. tUnit._terrain |= (1 << j);
  1401. if ( accessNecessaryHeightTableTableCheckBox[j].isSelected() == true )
  1402. tUnit._terrainreq |= (1 << j);
  1403. if ( accessNoneHeightTableCheckBox[j].isSelected() == true )
  1404. tUnit._terrainnot |= (1 << j);
  1405. if ( accessDiesHeightTableCheckBox[j].isSelected() == true )
  1406. tUnit._terrainkill |= (1 << j);
  1407. }
  1408. return i;
  1409. }
  1410. private void technologyIDCheck(){ //Class-Panel
  1411. int enabled = 0;
  1412. // errMsg.showMessage("Technology Handler Accessed !");
  1413. for(int i=1; i < 4;i++) {
  1414. if ( (jIntFieldClassTechnologyID[i-1].getInt() > 0) && (enabled == 0) )
  1415. classTechnologyIDTextField[i].setEnabled(true);
  1416. else {
  1417. classTechnologyIDTextField[i].setEnabled(false);
  1418. enabled++;
  1419. }
  1420. }
  1421. }
  1422. private void digCheck() {//Functions-Panel
  1423. int j = 0;
  1424. for (int i=0; i < cVehicleFunctions.length;i++)
  1425. if (((1 << i) & (cfautodigger | cfmanualdigger)) > 0)
  1426. if (functionSelectCheckBox[i].isSelected() == true) j++;
  1427. if ( j > 0 ) jTextFieldResourceRadius.setEnabled(true);
  1428. else jTextFieldResourceRadius.setEnabled(false);
  1429. }
  1430. private void maxLoadCheck() { //Load-Panel
  1431. int maxLoad = jIntFieldMaxLoad.getInt();
  1432. if (jIntFieldMaxLoad.convertError != 0) return;
  1433. if (maxLoad > 0) {
  1434. jTextFieldMaxUnitWeight.setEnabled(true);
  1435. jTextFieldMaxUnitWeight.setBorder (new javax.swing.border
  1436. .TitledBorder(new javax.swing.border.EtchedBorder(),
  1437. "Maximum weight of unit (0-".concat(new java.lang.Integer(maxLoad)
  1438. .toString()).concat(")"), 1, 2, new java.awt.Font ("Arial", 0, 10)));
  1439. jIntFieldMaxUnitWeight.setMax(maxLoad);
  1440. for (int j=0; j < cHeightLevel.length;j++) {
  1441. loadOnHeightTableCheckBox[j].setEnabled(true);
  1442. loadAbleHeightTableCheckBox[j].setEnabled(true);
  1443. loadNotHeightTableCheckBox[j].setEnabled(true);
  1444. }
  1445. for (int j=0; j < cMovemaliType.length;j++) {
  1446. loadMustCategoryCheckBox[j].setEnabled(true);
  1447. }
  1448. } else {
  1449. jTextFieldMaxUnitWeight.setEnabled(false);
  1450. for (int j=0; j < cHeightLevel.length;j++) {
  1451. loadOnHeightTableCheckBox[j].setEnabled(false);
  1452. loadAbleHeightTableCheckBox[j].setEnabled(false);
  1453. loadNotHeightTableCheckBox[j].setEnabled(false);
  1454. }
  1455. for (int j=0; j < cMovemaliType.length;j++) {
  1456. loadMustCategoryCheckBox[j].setEnabled(false);
  1457. }
  1458. }
  1459. }
  1460. private int borderCheck(int i) { //Movement-Panel
  1461. int j = 0;
  1462. if ( (i > 0) && ( movementTableCheckBox[i-1].isSelected() == true) ) j++;
  1463. if ( (i < cHeightLevel.length-1) &&
  1464. ( movementTableCheckBox[i+1].isSelected() == true) ) j++;
  1465. int l = 0;
  1466. for(int k = 0;k < cHeightLevel.length;k++) {
  1467. if ( movementTableCheckBox[k].isSelected() == true ) l++;
  1468. }
  1469. if (l <= 1) return 1;
  1470. //Nothing selected (one was just selected) => 1 to select at least one
  1471. if (j > 0) return j;
  1472. else {
  1473. errMsg.showMessage("No gaps allowed between height-levels !");
  1474. return 0;
  1475. }
  1476. }
  1477. private boolean heightChangeCheck() { //Movement-Panel
  1478. int l = 0;
  1479. for(int k = 0;k < cHeightLevel.length;k++) {
  1480. if ( movementTableCheckBox[k].isSelected() == true ) l++;
  1481. }
  1482. if ((movementTableCheckBox[2].isSelected() == true) || (movementTableCheckBox[3].isSelected() == true))
  1483. jTextFieldMaxWindspeed.setEnabled(true);
  1484. else jTextFieldMaxWindspeed.setEnabled(false);
  1485. //MaxwindspeedCheck : Filed only avail when driving or floating
  1486. if (l > 1) {
  1487. jTextFieldDistanceHeightChange.setEnabled(true);
  1488. return true; //Minimum 2 selcted to change height
  1489. } else {
  1490. jTextFieldDistanceHeightChange.setEnabled(false);
  1491. return false;
  1492. }
  1493. }
  1494. private void movementTableActionPerformed(java.awt.event.ActionEvent evt) { //Movement-Panel
  1495. javax.swing.JCheckBox CB = (javax.swing.JCheckBox) evt.getSource();
  1496. String boxNumberString = CB.getName();
  1497. int boxNumber = 0;
  1498. try {
  1499. boxNumber = new java.lang.Integer(boxNumberString).parseInt(boxNumberString);
  1500. } catch (java.lang.NumberFormatException e) {
  1501. errorMessage = e.getMessage();
  1502. errMsg.showMessage("Internal Error No 1");
  1503. return;
  1504. }
  1505. int i = borderCheck(boxNumber);
  1506. if ( movementTableCheckBox[boxNumber].isSelected() == true ) {
  1507. if (i > 0) movementTableTextField[boxNumber].setEnabled(true);
  1508. else movementTableCheckBox[boxNumber].setSelected(false);
  1509. }
  1510. else {
  1511. if (i == 2 ) {
  1512. errMsg.showMessage("No gaps allowed between height-levels !");
  1513. movementTableCheckBox[boxNumber].setSelected(true);
  1514. }
  1515. else movementTableTextField[boxNumber].setEnabled(false);
  1516. }
  1517. heightChangeCheck();
  1518. }
  1519. /** Closes the dialog */
  1520. private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
  1521. if (exitAction == DISPOSE ) {
  1522. setVisible (false);
  1523. dispose ();
  1524. } else System.exit (0);
  1525. }//GEN-LAST:event_closeDialog
  1526. /**
  1527. * @param args the command line arguments
  1528. */
  1529. public static void main (String args[]) {
  1530. new UnitEditor ("E:\\Demount\\","S_submar.veh",
  1531. new Unit("").LOAD,EXIT).show ();
  1532. }
  1533. // Variables declaration - do not modify//GEN-BEGIN:variables
  1534. private javax.swing.JTabbedPane jTabbedPaneMain;
  1535. private javax.swing.JPanel jPanelMain;
  1536. private javax.swing.JTextField jTxtFieldName;
  1537. private javax.swing.JTextField jTxtFieldDescription;
  1538. private javax.swing.JTextField jTextFieldID;
  1539. private javax.swing.JTextField jTextFieldArmor;
  1540. private javax.swing.JTextField jTextFieldProductionMaterial;
  1541. private javax.swing.JTextField jTextFieldProductionEnergy;
  1542. private javax.swing.JTextField jTextFieldWeight;
  1543. private javax.swing.JTextField jTextFieldView;
  1544. private javax.swing.JTextField jTextFieldJamming;
  1545. private javax.swing.JTextField jTextFieldEnergyTank;
  1546. private javax.swing.JTextField jTextFieldMaterialTank;
  1547. private javax.swing.JLabel jLabelProductionBorder;
  1548. private javax.swing.JLabel jLabelNameDescriptionBorder;
  1549. private javax.swing.JLabel jLabelIDArmorWeightBorder;
  1550. private javax.swing.JLabel jLabelViewJammingBorder;
  1551. private javax.swing.JLabel jLabelEnergyMaterialTankBorder;
  1552. private javax.swing.JLabel jLabelEnergyTankWarning;
  1553. private javax.swing.JButton jButtonSave;
  1554. private javax.swing.JLabel jLabelVersion;
  1555. private javax.swing.JPanel jPanelMovement;
  1556. private javax.swing.JPanel jPanelMovementTable;
  1557. private javax.swing.JComboBox jComboBoxCategory;
  1558. private javax.swing.JCheckBox jCheckBoxWaitAfterMove;
  1559. private javax.swing.JTextField jTextFieldFuelconsumption;
  1560. private javax.swing.JTextField jTextFieldTank;
  1561. private javax.swing.JLabel jLabelFuelconsumptionTankBorder;
  1562. private javax.swing.JTextField jTextFieldDistanceHeightChange;
  1563. private javax.swing.JTextField jTextFieldMaxWindspeed;
  1564. private javax.swing.JLabel jLabelMaxWindspeed;
  1565. private javax.swing.JLabel jLabelWindspeedBorder;
  1566. private javax.swing.JPanel jPanelLoad;
  1567. private javax.swing.JTextField jTextFieldMaxLoad;
  1568. private javax.swing.JTextField jTextFieldMaxUnitWeight;
  1569. private javax.swing.JPanel jPanelLoadTable;
  1570. private javax.swing.JPanel jPanelLoadTabelTitle;
  1571. private javax.swing.JLabel jLabelOnHeight;
  1572. private javax.swing.JLabel jLabelAbleHeight;
  1573. private javax.swing.JLabel jLabelNotHeight;
  1574. private javax.swing.JLabel jLabelMustCategory;
  1575. private javax.swing.JPanel jPanelMustCategory;
  1576. private javax.swing.JPanel jPanelWeapons;
  1577. private javax.swing.JComboBox jComboBoxWeapons;
  1578. private javax.swing.JPanel jPanelEfficiencies;
  1579. private javax.swing.JButton jButtonAddWeapon;
  1580. private javax.swing.JButton jButtonRemoveWeapon;
  1581. private javax.swing.JTabbedPane jTabbedPaneWeapons;
  1582. private javax.swing.JPanel jPaneWeaponslMisc;
  1583. private javax.swing.JTextField jTextFieldWeaponMaxDistance;
  1584. private javax.swing.JTextField jTextFieldWeaponMinDistance;
  1585. private javax.swing.JTextField jTextFieldWeaponMinStrength;
  1586. private javax.swing.JTextField jTextFieldWeaponMaxStrength;
  1587. private javax.swing.JTextField jTextFieldWeaponAmmo;
  1588. private javax.swing.JPanel jPaneWeaponslWeaponAimHeights;
  1589. private javax.swing.JPanel jPanelWeaponAim;
  1590. private javax.swing.JPanel jPanelWeaponsWeaponSourceHeights;
  1591. private javax.swing.JPanel jPanelWeaponSource;
  1592. private javax.swing.JPanel jPanelWeaponsWeaponType;
  1593. private javax.swing.JPanel jPanelWeaponType;
  1594. private javax.swing.JPanel jPanelWeaponsWeaponCanNotHit;
  1595. private javax.swing.JPanel jPanelWeaponCanNotHit;
  1596. private javax.swing.JPanel jPanelFunctions;
  1597. private javax.swing.JPanel jPanelFunctionSelect;
  1598. private javax.swing.JTextField jTextFieldResourceRadius;
  1599. private javax.swing.JTextField jTextFieldAutoRepairRate;
  1600. private javax.swing.JPanel jPanelClass;
  1601. private javax.swing.JPanel jPanelClassFunctionSelect;
  1602. private javax.swing.JList jListClasses;
  1603. private javax.swing.JTextField jTextFieldClassName;
  1604. private javax.swing.JButton jButtonNewClass;
  1605. private javax.swing.JButton jButtonSetClassName;
  1606. private javax.swing.JButton jButtonDeleteClass;
  1607. private javax.swing.JButton jButtonSetClassStandard;
  1608. private javax.swing.JPanel jPanelClassWeaponImprovement;
  1609. private javax.swing.JPanel jPanelClassTechnologyIDs;
  1610. private javax.swing.JTextField jTextFieldTechLevel;
  1611. private javax.swing.JPanel jPanelInfoText;
  1612. private javax.swing.JScrollPane jScrollPaneInfoText;
  1613. private javax.swing.JTextPane jTextPaneInfoText;
  1614. private javax.swing.JPanel jPanelTerrainAccess;
  1615. private javax.swing.JPanel jPanelPicture;
  1616. private javax.swing.JLabel jLabelErrorMessage;
  1617. // End of variables declaration//GEN-END:variables
  1618. static String cHeightLevel[] = {"deep submerged", "submerged", "floating", "ground level",
  1619. "low-level flight", "flight", "high-level flight", "orbit"};
  1620. static String cMovemaliType[] = { "default",
  1621. "light tracked vehicle", "medium tracked vehicle", "heavy tracked vehicle",
  1622. "light wheeled vehicle", "medium wheeled vehicle", "heavy wheeled vehicle",
  1623. "trooper", "rail vehicle", "medium aircraft",
  1624. "medium ship", "building / turret / object", "light aircraft",
  1625. "heavy aircraft", "light ship", "heavy ship", "helicopter"};
  1626. static String cVehicleFunctions[] = {"sonar",
  1627. "paratrooper",
  1628. "mine-layer",
  1629. "trooper",
  1630. "repair vehicle",
  1631. "conquer buildings",
  1632. "move after attack",
  1633. "view satellites",
  1634. "construct ALL buildings",
  1635. "view mines",
  1636. "construct vehicles",
  1637. "construct specific buildings",
  1638. "refuel units",
  1639. "icebreaker",
  1640. "cannot be refuelled in air",
  1641. "refuels material",
  1642. "! (unused) !",
  1643. "makes tracks",
  1644. "drill for mineral resources manually",
  1645. "sailing",
  1646. "auto repair",
  1647. "generator",
  1648. "search for mineral resources automatically",
  1649. "Kamikaze only",
  1650. "immune to mines",
  1651. "refuels energy" };
  1652. static String cWeaponType[] = {"cruise missile", "mine", "bomb", "air - missile", "ground - missile", "torpedo", "machine gun",
  1653. "cannon", "service", "ammunition refuel", "laser (not implemented yet!)", "shootable"};
  1654. static String cTerrainType[] = {"shallow water , coast" ,
  1655. "normal lowland",
  1656. "swamp thick",
  1657. "forest",
  1658. "high mountains",
  1659. "road",
  1660. "railroad",
  1661. "entry of building (not to be used for terrain)" ,
  1662. "harbour (safe for ships at storm)",
  1663. "runway" ,
  1664. "pipeline",
  1665. "buried pipeline",
  1666. "water",
  1667. "deep water",
  1668. "hard sand",
  1669. "soft sand",
  1670. "track possible",
  1671. "small rocks",
  1672. "mud",
  1673. "snow",
  1674. "deep snow",
  1675. "mountains",
  1676. "very shallow water",
  1677. "large rocks",
  1678. "lava",
  1679. "ditch",
  1680. "hillside",
  1681. "turret foundation",
  1682. "swamp thin",
  1683. "Installation",
  1684. "pack ice",
  1685. "river",
  1686. "frozen water" };
  1687. static int cfsonar = 1;
  1688. static int cfparatrooper = 2;
  1689. static int cfminenleger = 4;
  1690. static int cf_trooper = 8;
  1691. static int cfrepair = 16;
  1692. static int cf_conquer = 32;
  1693. static int cf_moveafterattack = 64;
  1694. static int cfsatellitenview = 128;
  1695. static int cfputbuilding = 256;
  1696. static int cfmineview = 512;
  1697. static int cfvehicleconstruction = 1024;
  1698. static int cfspecificbuildingconstruction = 2048;
  1699. static int cffuelref = 4096;
  1700. static int cficebreaker = 8192;
  1701. static int cfnoairrefuel = 16384;
  1702. static int cfmaterialref = 32768;
  1703. static int cffahrspur = ( 1 << 17 );
  1704. static int cfmanualdigger = ( 1 << 18 );
  1705. static int cfwindantrieb = ( 1 << 19 );
  1706. static int cfautorepair = ( 1 << 20 );
  1707. static int cfgenerator = ( 1 << 21 );
  1708. static int cfautodigger = ( 1 << 22 );
  1709. static int cfkamikaze = ( 1 << 23 );
  1710. static int cfmineimmune = ( 1 << 24 );
  1711. static int cfenergyref = ( 1 << 25 );
  1712. static int cwcruisemissilen = 0;
  1713. static int cwcruisemissileb = ( 1 << cwcruisemissilen );
  1714. static int cwminen = 1;
  1715. static int cwmineb = ( 1 << cwminen );
  1716. static int cwbombn = 2;
  1717. static int cwbombb = ( 1 << cwbombn );
  1718. static int cwairmissilen = 3;
  1719. static int cwairmissileb = ( 1 << cwairmissilen );
  1720. static int cwgroundmissilen = 4;
  1721. static int cwgroundmissileb = ( 1 << cwgroundmissilen );
  1722. static int cwtorpedon = 5;
  1723. static int cwtorpedob = ( 1 << cwtorpedon );
  1724. static int cwmachinegunn = 6;
  1725. static int cwmachinegunb = ( 1 << cwmachinegunn );
  1726. static int cwcannonn = 7;
  1727. static int cwcannonb = ( 1 << cwcannonn );
  1728. static int cwweapon = ( cwcruisemissileb | cwbombb | cwairmissileb
  1729. | cwgroundmissileb | cwtorpedob | cwmachinegunb | cwcannonb );
  1730. static int cwshootablen = 11;
  1731. static int cwshootableb = ( 1 << cwshootablen );
  1732. static int cwammunitionn = 9;
  1733. static int cwammunitionb = ( 1 << cwammunitionn );
  1734. static int cwservicen = 8;
  1735. static int cwserviceb = ( 1 << cwservicen );
  1736. static int chtiefgetaucht = 1;
  1737. static int chgetaucht = 2;
  1738. static int chschwimmend = 4;
  1739. static int chfahrend = 8;
  1740. static int chtieffliegend = 16;
  1741. static int chfliegend = 32;
  1742. static int chhochfliegend = 64;
  1743. static int chsatellit = 128;
  1744. static int autorepairdamagedecrease = 10;
  1745. }