Changeset 7a648c6a38f039122ae03ea535db13e979a4b0e7
- Timestamp:
- 05/22/08 17:36:26 (3 months ago)
- git-parent:
- Files:
-
- src/net/driftingsouls/ds2/server/entities/Forschung.java (modified) (4 diffs)
- src/net/driftingsouls/ds2/server/modules/ForschinfoController.java (modified) (4 diffs)
- src/net/driftingsouls/ds2/server/modules/ItemInfoController.java (modified) (2 diffs)
- src/net/driftingsouls/ds2/server/modules/SchiffInfoController.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/modules/TechListeController.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/modules/admin/ResearchEdit.java (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
src/net/driftingsouls/ds2/server/entities/Forschung.java
r402c072 r7a648c6 33 33 import net.driftingsouls.ds2.server.framework.caches.ControllableCache; 34 34 35 import org.hibernate.annotations.Immutable; 35 import org.hibernate.annotations.Cache; 36 import org.hibernate.annotations.CacheConcurrencyStrategy; 36 37 import org.hibernate.annotations.Type; 37 38 … … 47 48 @Entity 48 49 @Table(name="forschungen") 49 @ Immutable50 @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 50 51 public class Forschung { 51 52 /** … … 65 66 } 66 67 ); 68 } 69 70 /** 71 * Sichtbarkeiten von einzelnen Forschungen 72 */ 73 public enum Visibility { 74 /** 75 * Erst sichtbar, wenn die Forschung auch erforschbar ist 76 */ 77 IF_RESEARCHABLE(0, "Sichtbar, wenn erforschbar"), 78 /** 79 * Immer sichtbar 80 */ 81 ALWAYS(1, "Sichtbar"), 82 /** 83 * Niemals sichtbar 84 */ 85 NEVER(2, "Unsichtbar"); 86 87 88 private int bit; 89 private String description; 90 91 private Visibility(int bit, String description) { 92 this.bit = bit; 93 this.description = description; 94 } 95 96 /** 97 * Gibt das zum Flag gehoerende Bitmuster zurueck 98 * @return Das Bitmuster 99 */ 100 public int getBits() { 101 return this.bit; 102 } 103 104 @Override 105 public String toString() { 106 return description; 107 } 67 108 } 68 109 … … 191 232 192 233 /** 193 * Prueft, ob die Forschung allgemein sichtbar ist oder erst sichtbar wird, 194 * wenn alle benoetigten Forschungen erforscht sind 195 * @return <code>true</code>, falls die Forschung allgemein sichtbar ist 196 */ 197 public boolean isVisibile() { 198 return ( this.visibility > 0 ? true : false ); 199 } 200 234 * Gibt zurueck, ob die Forschung die angegebene Sichtbarkeit hat 235 * @param visibility Die Sichtbarkeit 236 * @return <code>true</code>, falls die Sichtbarkeit gegeben ist 237 */ 238 public boolean hasVisibility(Forschung.Visibility visibility) { 239 return (this.visibility & visibility.getBits()) != 0; 240 } 241 242 /** 243 * Prueft, ob die Forschung fuer den Spieler sichtbar ist. 244 * Es werden nur die Werte von Forschung.Visibility beruecksichtigt. 245 * @param user Der Spieler 246 * 247 * @return <code>true</code>, falls die Forschung sichtbar ist 248 */ 249 public boolean isVisibile(User user) { 250 if(hasVisibility(Forschung.Visibility.ALWAYS)) { 251 return true; 252 } 253 254 if(hasVisibility(Forschung.Visibility.NEVER)) { 255 return false; 256 } 257 258 for(int i = 1; i <= 3; i++) { 259 if(!user.hasResearched(getRequiredResearch(i))) { 260 return false; 261 } 262 } 263 264 return true; 265 } 266 267 /** 268 * Setzte die Beschreibung der Forschung. 269 * 270 * @param description Die neue Beschreibung. 271 */ 272 public void setDescription(String description) { 273 this.description = description; 274 } 275 276 /** 277 * Setzt den Namen der Forschung. 278 * 279 * @param name Der neue Name. 280 */ 281 public void setName(String name) { 282 this.name = name; 283 } 284 285 /** 286 * Setzt die Rasse der Forschung. 287 * 288 * @param race vergleiche <code>Rassen</code> 289 */ 290 public void setRace(int race) { 291 this.race = race; 292 } 293 294 /** 295 * Setzt die erste benoetigte Forschung 296 * @param req1 Die ID der Forschung. 297 */ 298 public void setReq1(int req1) { 299 this.req1 = req1; 300 } 301 302 /** 303 * Setzt die zweite benoetigte Forschung 304 * @param req2 Die ID der Forschung. 305 */ 306 public void setReq2(int req2) { 307 this.req2 = req2; 308 } 309 310 /** 311 * Setzt die zweite benoetigte Forschung 312 * @param req3 Die ID der Forschung. 313 */ 314 public void setReq3(int req3) { 315 this.req3 = req3; 316 } 317 318 /** 319 * Setzt die Dauer in Ticks die notwendig ist um die Forschung 320 * zu erforschen 321 * @param time Die Dauer 322 */ 323 public void setTime(int time) { 324 this.time = time; 325 } 326 327 /** 328 * Setzt die Sichtbarkeit auf den angegebenen Wert. 329 * 330 * @param visibility Die neue Sichtbarkeitsstufe. 331 */ 332 public void setVisibility(int visibility) { 333 this.visibility = visibility; 334 } 335 201 336 /** 202 337 * Prueft, ob die Forschung ein bestimmtes Flag hat src/net/driftingsouls/ds2/server/modules/ForschinfoController.java
r953ed23 r7a648c6 81 81 } 82 82 83 if( !data.isVisibile( ) &&83 if( !data.isVisibile(user) && 84 84 !((user.hasResearched(data.getRequiredResearch(1)) && user.hasResearched(data.getRequiredResearch(2)) && user.hasResearched(data.getRequiredResearch(3))) || 85 85 user.hasResearched(researchid) ) && (user.getAccessLevel() < 20) ) { … … 173 173 Forschung res = (Forschung)iter.next(); 174 174 175 if( res.isVisibile( ) ||176 (!res.isVisibile( ) && user.hasResearched(res.getRequiredResearch(1)) && user.hasResearched(res.getRequiredResearch(2)) && user.hasResearched(res.getRequiredResearch(3))) ) {175 if( res.isVisibile(user) || 176 (!res.isVisibile(user) && user.hasResearched(res.getRequiredResearch(1)) && user.hasResearched(res.getRequiredResearch(2)) && user.hasResearched(res.getRequiredResearch(3))) ) { 177 177 t.setVar( "tech.allows.item.break", entry, 178 178 "tech.allows.item.id", res.getID(), … … 183 183 t.parse("tech.allows.list","tech.allows.listitem",true); 184 184 } 185 else if( (user.getAccessLevel() > 20) && !res.isVisibile( ) ) {185 else if( (user.getAccessLevel() > 20) && !res.isVisibile(user) ) { 186 186 t.setVar( "tech.allows.item.break", entry, 187 187 "tech.allows.item.id", res.getID(), … … 342 342 if( ship.getRes(i) > 0 ) { 343 343 Forschung tmpres = Forschung.getInstance(ship.getRes(i)); 344 if( !tmpres.isVisibile( ) &&344 if( !tmpres.isVisibile(user) && 345 345 (!user.hasResearched(ship.getRes(i)) || !user.hasResearched(tmpres.getRequiredResearch(1)) || 346 346 !user.hasResearched(tmpres.getRequiredResearch(2)) || !user.hasResearched(tmpres.getRequiredResearch(3)) src/net/driftingsouls/ds2/server/modules/ItemInfoController.java
r0047196 r7a648c6 374 374 if( effect.getTechReq(i) != 0 ) { 375 375 Forschung dat = Forschung.getInstance(effect.getTechReq(i)); 376 if( !dat.isVisibile( ) && (!user.hasResearched(dat.getRequiredResearch(1)) || !user.hasResearched(dat.getRequiredResearch(2)) || !user.hasResearched(dat.getRequiredResearch(3))) ) {376 if( !dat.isVisibile(user) && (!user.hasResearched(dat.getRequiredResearch(1)) || !user.hasResearched(dat.getRequiredResearch(2)) || !user.hasResearched(dat.getRequiredResearch(3))) ) { 377 377 data.append("Unbekannt"); 378 378 if( user.getAccessLevel() > 20 ) { … … 565 565 Forschung dat = Forschung.getInstance(ammo.getRes(i)); 566 566 if( (ammo.getRes(i) == -1) || 567 (!dat.isVisibile( ) && (!user.hasResearched(dat.getRequiredResearch(1)) || !user.hasResearched(dat.getRequiredResearch(2)) || !user.hasResearched(dat.getRequiredResearch(3)))) ) {567 (!dat.isVisibile(user) && (!user.hasResearched(dat.getRequiredResearch(1)) || !user.hasResearched(dat.getRequiredResearch(2)) || !user.hasResearched(dat.getRequiredResearch(3)))) ) { 568 568 569 569 data.append("Unbekannte Technologie"); src/net/driftingsouls/ds2/server/modules/SchiffInfoController.java
re409332 r7a648c6 206 206 Forschung research = Forschung.getInstance(shipBuildData.getRes(i)); 207 207 208 if( !research.isVisibile( ) &&208 if( !research.isVisibile(user) && 209 209 (user == null || !user.hasResearched(research.getRequiredResearch(1)) || 210 210 !user.hasResearched(research.getRequiredResearch(2)) || src/net/driftingsouls/ds2/server/modules/TechListeController.java
r327b751 r7a648c6 129 129 researchable.put(f.getID(), f); 130 130 } 131 else if( !f.isVisibile( ) ) {131 else if( !f.isVisibile(user) ) { 132 132 if( user.getAccessLevel() >= 20 ) { 133 133 invisible.put(f.getID(), f); src/net/driftingsouls/ds2/server/modules/admin/ResearchEdit.java
rafbce20 r7a648c6 19 19 package net.driftingsouls.ds2.server.modules.admin; 20 20 21 import java.util.Iterator; 22 import java.util.List; 23 21 24 import net.driftingsouls.ds2.server.cargo.Cargo; 22 25 import net.driftingsouls.ds2.server.cargo.ResourceEntry; … … 24 27 import net.driftingsouls.ds2.server.config.Rasse; 25 28 import net.driftingsouls.ds2.server.config.Rassen; 29 import net.driftingsouls.ds2.server.entities.Forschung; 26 30 import net.driftingsouls.ds2.server.framework.Common; 27 31 import net.driftingsouls.ds2.server.framework.Configuration; 28 32 import net.driftingsouls.ds2.server.framework.Context; 29 33 import net.driftingsouls.ds2.server.framework.ContextMap; 30 import net.driftingsouls.ds2.server.framework.db.Database;31 import net.driftingsouls.ds2.server.framework.db.SQLQuery;32 import net.driftingsouls.ds2.server.framework.db.SQLResultRow;33 34 import net.driftingsouls.ds2.server.modules.AdminController; 34 import net.driftingsouls.ds2.server.modules.admin.AdminMenuEntry;35 import net.driftingsouls.ds2.server.modules.admin.AdminPlugin;36 35 37 36 /** … … 50 49 int changedata = context.getRequest().getParameterInt("changedata"); 51 50 52 Database db = context.getDatabase(); 53 54 if( (changedata != 0) && (techid != 0) ) { 55 // Name 56 db.prepare("UPDATE forschungen SET name=? WHERE id= ?") 57 .update(context.getRequest().getParameterString("name"), techid); 58 59 // Voraussetzungen 60 int req1 = context.getRequest().getParameterInt("req1"); 61 int req2 = context.getRequest().getParameterInt("req2"); 62 int req3 = context.getRequest().getParameterInt("req3"); 63 int race = context.getRequest().getParameterInt("race"); 64 db.update("UPDATE forschungen SET req1="+req1+",req2="+req2+",req3="+req3+",race="+race+" WHERE id="+techid); 65 66 // Sonstiges (BeschreibungSichtbarkeit u.a.) 67 int visibility = context.getRequest().getParameterInt("visibility"); 68 String descip = context.getRequest().getParameterString("descrip"); 69 db.prepare("UPDATE forschungen SET descrip= ? ,visibility= ? WHERE id= ? ") 70 .update(descip, visibility, techid); 51 //Database db = context.getDatabase(); 52 org.hibernate.Session db = context.getDB(); 53 54 if( (changedata != 0) && (techid > 0) ) { 55 Forschung research = (Forschung)db.get(Forschung.class, techid); 56 research.setRace(context.getRequest().getParameterInt("race")); 57 research.setReq1(context.getRequest().getParameterInt("req1")); 58 research.setReq2(context.getRequest().getParameterInt("req2")); 59 research.setReq3(context.getRequest().getParameterInt("req3")); 60 research.setVisibility( context.getRequest().getParameterInt("visibility")); 61 research.setName(context.getRequest().getParameterString("name")); 62 research.setDescription(context.getRequest().getParameterString("descrip")); 63 71 64 } 72 65 73 if( techid == 0 ) { 66 //Spezialforschungen ignorieren 67 if( techid <= 0 ) { 74 68 echo.append(Common.tableBegin( 450, "left" )); 75 69 … … 80 74 echo.append("<input type=\"hidden\" name=\"module\" value=\"admin\" />\n"); 81 75 echo.append("Tech: <select name=\"techid\" size=\"1\" style=\"width:250px\">\n"); 82 83 SQLQuery forschung = db.query("SELECT id,name,visibility FROM forschungen ORDER BY name");84 while( forschung.next()) {85 echo.append("<option value=\""+forschung.getInt("id")+"\">"+(forschung.getInt("visibility") != 0 ? "" : "# ")+forschung.getString("name")+"</option>\n");86 }87 forschung.free();76 77 List researches = db.createQuery("from Forschung").list(); 78 for( Iterator iter=researches.iterator(); iter.hasNext(); ) { 79 Forschung research = (Forschung)iter.next(); 80 echo.append("<option value=\""+research.getID()+"\""+(research.getID() == techid ? " selected=\"selected\"" : "")+">"+research.getName()+"</option>\n"); 81 } 88 82 89 83 echo.append("</select>\n"); … … 94 88 } 95 89 else { 96 SQLResultRow data = db.first("SELECT * FROM forschungen WHERE id="+techid);90 Forschung research = (Forschung)db.get(Forschung.class, techid); 97 91 98 92 echo.append(Common.tableBegin( 900, "left" )); … … 101 95 102 96 echo.append("<tr><td width=\"200\" colspan=\"2\" class=\"noBorderX\">"); 103 echo.append("<input type=\"text\" name=\"name\" value=\""+Common._plaintitle( data.getString("name"))+"\" size=\"20\" />\n");97 echo.append("<input type=\"text\" name=\"name\" value=\""+Common._plaintitle(research.getName())+"\" size=\"20\" />\n"); 104 98 echo.append(" ("+techid+")</td>\n");; 105 99 … … 115 109 116 110 echo.append("<select name=\"race\" size=\"1\" style=\"width:100px\">\n"); 117 echo.append("<option value=\"-1\" "+( data.getInt("race") == -1 ? "selected=\"selected\"" : "")+">Alle</option>\n");111 echo.append("<option value=\"-1\" "+(research.getRace() == -1 ? "selected=\"selected\"" : "")+">Alle</option>\n"); 118 112 for( Rasse rasse : Rassen.get() ) { 119 echo.append("<option value=\""+rasse.getID()+"\" "+( data.getInt("race") == rasse.getID() ? "selected=\"selected\"" : "")+">"+rasse.getName()+"</option>\n");113 echo.append("<option value=\""+rasse.getID()+"\" "+(research.getRace() == rasse.getID() ? "selected=\"selected\"" : "")+">"+rasse.getName()+"</option>\n"); 120 114 } 121 115 echo.append("</select>\n"); … … 129 123 130 124 echo.append("<select name=\"req"+i+"\" size=\"1\" style=\"width:200px\">\n"); 131 echo.append("<option value=\"-1\" "+(data.getInt("req"+i) == -1 ? "selected=\"selected\"" : "")+">### Nicht erfülbar ###</option>\n"); 132 echo.append("<option value=\"0\" "+(data.getInt("req"+i) == 0 ? "selected=\"selected\"" : "")+">Keine Voraussetzung</option>\n"); 133 SQLQuery forschung = db.query("SELECT id,name FROM forschungen ORDER BY name"); 134 while( forschung.next() ) { 135 echo.append("<option value=\""+forschung.getInt("id")+"\" "+(data.getInt("req"+i) == forschung.getInt("id") ? "selected=\"selected\"" : "")+">"+forschung.getString("name")+"</option>\n"); 136 } 137 forschung.free(); 125 List researches = db.createQuery("from Forschung").list(); 126 for( Iterator iter=researches.iterator(); iter.hasNext(); ) { 127 Forschung requirement = (Forschung)iter.next(); 128 echo.append("<option value=\""+research.getID()+" "+(requirement.getID() == techid ? "selected=\"selected\"" : "")+" \">"+requirement.getName()+"</option>\n"); 129 } 138 130 echo.append("</select>\n"); 139 131 } … … 146 138 // 147 139 148 echo.append("<img style=\"vertical-align:middle\" src=\""+Configuration.getSetting("URL")+"data/interface/time.gif\" alt=\"Dauer\" />"+ data.getInt("time"));149 150 Cargo costs = new Cargo( Cargo.Type.STRING, data.getString("costs"));140 echo.append("<img style=\"vertical-align:middle\" src=\""+Configuration.getSetting("URL")+"data/interface/time.gif\" alt=\"Dauer\" />"+research.getTime()); 141 142 Cargo costs = new Cargo(research.getCosts()); 151 143 costs.setOption( Cargo.Option.SHOWMASS, false ); 152 144 … … 159 151 160 152 boolean entry = false; 161 SQLQuery result = db.query( "SELECT id,name,req1,req2,req3,visibility FROM forschungen WHERE req1="+techid+" OR req2="+techid+" OR req3="+techid); 162 while( result.next() ) { 163 if( result.getInt("visibility") != 0 ) { 164 if( entry ) { 165 echo.append(",<br />\n"); 166 } 167 echo.append("<a class=\"forschinfo\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&techid="+result.getInt("id")+"\">"+Common._title(result.getString("name"))+"</a>\n"); 153 List requirements = db.createQuery("from Forschung where id=? or id=? or id=?") 154 .setInteger(0, research.getRequiredResearch(1)) 155 .setInteger(1, research.getRequiredResearch(2)) 156 .setInteger(2, research.getRequiredResearch(3)) 157 .list(); 158 for( Iterator iter=requirements.iterator(); iter.hasNext(); ) { 159 Forschung requirement = (Forschung)iter.next(); 160 161 if(entry) { 162 echo.append(",<br />\n"); 163 } 164 165 if(requirement.hasVisibility(Forschung.Visibility.NEVER)) { 166 echo.append("<span class=\"smallfont\"><a class=\"error\" style=\"font-style:italic\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&techid="+requirement.getID()+"\">["+Common._title(requirement.getName())+"]</a></span>\n"); 168 167 entry = true; 169 168 } 170 169 else { 171 if( entry ) { 172 echo.append(",<br />\n"); 173 } 174 echo.append("<span class=\"smallfont\"><a class=\"error\" style=\"font-style:italic\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&techid="+result.getInt("id")+"\">["+Common._title(result.getString("name"))+"]</a></span>\n"); 170 echo.append("<a class=\"forschinfo\" href=\"./ds?module=admin&sess="+context.getSession()+"&page="+page+"&act="+action+"&techid="+requirement.getID()+"\">"+Common._title(requirement.getName())+"</a>\n"); 175 171 entry = true; 176 172 } 177 173 } 178 result.free();179 174 180 175 if( !entry ) { … … 186 181 echo.append("<tr><td class=\"noBorderX\" colspan=\"5\">"); 187 182 echo.append("<hr noshade=\noshade\" size=\"1\" style=\"color:#cccccc\" />"); 188 echo.append("<textarea rows=\"5\" cols=\"90\" name=\" form[descrip]\">\n");189 echo.append(Common._plaintitle( data.getString("descrip"))+"</textarea>");183 echo.append("<textarea rows=\"5\" cols=\"90\" name=\"descrip\">\n"); 184 echo.append(Common._plaintitle(research.getDescription())+"</textarea>"); 190 185 echo.append("</td></tr>"); 191 186 … … 193 188 echo.append("<tr><td class=\"noBorderX\" colspan=\"5\">\n"); 194 189 echo.append("<hr noshade=\"noshade\" size=\"1\" style=\"color:#cccccc\" />\n"); 195 echo.append("<input type=\"checkbox\" name=\"visible\" id=\"visible\" value=\"1\" "+(data.getInt("visibility") != 0 ? "checked=\"checked\"" : "")+" /><label for=\"visible\">Sichtbare Forschung</label><br />\n"); 190 echo.append("<select name=\"visibility\" size=\"1\" style=\"width:200px\">\n"); 191 for(Forschung.Visibility visibility: Forschung.Visibility.values()) { 192 echo.append("<option value=\""+visibility.getBits()+" "+(research.hasVisibility(visibility) ? "selected=\"selected\"" : "")+" \">"+visibility.toString()+"</option>\n"); 193 } 194 echo.append("</select>"); 196 195 echo.append("<input type=\"hidden\" name=\"changedata\" value=\"1\" />\n"); 197 196 echo.append("<input type=\"hidden\" name=\"page\" value=\""+page+"\" />\n");
