Changeset 8f1cbbd3a4dfc39ae2615a19ca9132fd7c06bc60

Show
Ignore:
Timestamp:
03/24/07 15:04:00 (2 years ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1174745040 +0100
git-parent:

[a8c7a5744c9378c3a594174320715e82927776f9]

git-author:
Christopher Jung <bktheg@web.de> 1174745040 +0100
Message:

Zwei Berechungsprobleme in der Werft gefixt

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/net/driftingsouls/ds2/server/bases/Waffenfabrik.java

    r31f53b6 r8f1cbbd  
    271271         
    272272                        if( usedcapacity.compareTo(new BigDecimal(wf.getInt("count")-1)) > 0 ) { 
     273                                BigDecimal targetCapacity = new BigDecimal(wf.getInt("count")-1); 
     274                                 
    273275                                for( int i=0; i < plist.length; i++ ) { 
    274276                                        String[] tmp = StringUtils.split(plist[i], '='); 
     
    276278                                        int ammoCount = Integer.parseInt(tmp[1]); 
    277279                                         
    278                                         if( usedcapacity.subtract(new BigDecimal(ammoCount).multiply(new BigDecimal(ammolist.get(aid).getString("dauer")))).compareTo(new BigDecimal(wf.getInt("count")-1)) < 0 ) { 
    279                                                 plist[i] = aid+"="+ 
    280                                                         (usedcapacity.subtract(new BigDecimal(wf.getInt("count")-1)).divide(new BigDecimal(ammolist.get(aid).getString("dauer")))); 
     280                                        BigDecimal capUsedByAmmo = new BigDecimal(ammoCount).multiply(new BigDecimal(ammolist.get(aid).getString("dauer"))); 
     281                                         
     282                                        if( usedcapacity.subtract(capUsedByAmmo).compareTo(targetCapacity) < 0 ) { 
     283                                                BigDecimal capLeftForAmmo = capUsedByAmmo.subtract(usedcapacity.subtract(targetCapacity)); 
     284                                                plist[i] = aid+"=" + capLeftForAmmo.divide(new BigDecimal(ammolist.get(aid).getString("dauer")), BigDecimal.ROUND_HALF_EVEN).intValue(); 
    281285                                                break; 
    282286                                        } 
    283287                                        plist[i] = aid+"=0"; 
    284                                         usedcapacity = usedcapacity.subtract(new BigDecimal(ammoCount).multiply(new BigDecimal(ammolist.get(aid).getString("dauer")))); 
     288                                        usedcapacity = usedcapacity.subtract(capUsedByAmmo); 
    285289                                                 
    286                                         if( usedcapacity.compareTo(new BigDecimal(wf.getInt("count")-1)) <= 0 ) break; 
     290                                        if( usedcapacity.compareTo(targetCapacity) <= 0 ) break; 
    287291                                } 
    288292                                wf.put("produces", Common.implode(";",plist)); 
     
    485489                                } 
    486490                                if( usedcapacity.add(new BigDecimal(count*ammo.getDouble("dauer"))).doubleValue() > wf.getInt("count") ) { 
    487                                         count = usedcapacity.multiply(new BigDecimal(-1)).add(new BigDecimal(wf.getInt("count"))).divide(new BigDecimal(ammo.getString("dauer"))).intValue(); 
     491                                        BigDecimal availableCap = usedcapacity.multiply(new BigDecimal(-1)).add(new BigDecimal(wf.getInt("count"))); 
     492                                        count = availableCap.divide(new BigDecimal(ammo.getString("dauer")), BigDecimal.ROUND_HALF_EVEN).intValue(); 
    488493                                } 
    489494