Changeset 5b00c95df34de1961334d80b3c9c80b9fd4371c8

Show
Ignore:
Timestamp:
07/11/07 17:53:32 (1 year ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1184169212 +0200
git-parent:

[89d279c3cd5e9c1635b8bae910ca1a9365cba062]

git-author:
Christopher Jung <bktheg@web.de> 1184169212 +0200
Message:

Werftlayout weiter an die Werftslots angepasst

Files:

Legend:

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

    r89d279c r5b00c95  
    180180                 
    181181                werft.setBaseField(field); 
    182                  
    183                 response.append("<div>Werft auf "+base.getName()+"<br /><br /></div>\n"); 
    184                  
     182                                 
    185183                WerftGUI werftgui = new WerftGUI( context, t ); 
    186184                response.append(werftgui.execute( werft )); 
    187185                 
    188                 response.append("<div><br /></div>\n"); 
     186                response.append("<br /></div>\n"); 
    189187                return response.toString(); 
    190188        } 
  • src/net/driftingsouls/ds2/server/modules/WerftController.java

    r9965374 r5b00c95  
    125125                } 
    126126 
    127                 echo.append("Werft "+Common._plaintitle(ship.getName())+"<br /><br />\n"); 
    128  
    129127                WerftGUI werftgui = new WerftGUI( getContext(), getTemplateEngine() ); 
    130128                echo.append(werftgui.execute( werft )); 
  • src/net/driftingsouls/ds2/server/werften/BaseWerft.java

    rbed664f r5b00c95  
    2828import net.driftingsouls.ds2.server.Offizier; 
    2929import net.driftingsouls.ds2.server.bases.Base; 
     30import net.driftingsouls.ds2.server.bases.Building; 
     31import net.driftingsouls.ds2.server.bases.Werft; 
    3032import net.driftingsouls.ds2.server.cargo.Cargo; 
    3133import net.driftingsouls.ds2.server.entities.User; 
     34import net.driftingsouls.ds2.server.framework.ContextMap; 
    3235 
    3336/** 
     
    8790                this.fieldid = field; 
    8891        } 
    89  
    90         @Override 
    91         public int getWerftType() { 
    92                 return WerftObject.BUILDING; 
    93         } 
    9492         
    9593        @Override 
     
    169167        @Override 
    170168        public int getWerftSlots() { 
    171                 return 5
     169                return 6
    172170        } 
    173171 
     
    201199                return base.getSize(); 
    202200        } 
     201 
     202        @Override 
     203        public String getWerftPicture() { 
     204                if( fieldid != -1 ) { 
     205                        Building building = Building.getBuilding(base.getBebauung()[fieldid]); 
     206                        return building.getPicture(); 
     207                } 
     208                 
     209                org.hibernate.Session db = ContextMap.getContext().getDB(); 
     210                Werft building = (Werft)db.createQuery("from WerftBuilding") 
     211                        .setMaxResults(1) 
     212                        .uniqueResult(); 
     213                 
     214                return building.getPicture(); 
     215        } 
     216 
     217        @Override 
     218        public String getWerftName() { 
     219                return base.getName(); 
     220        } 
    203221} 
  • src/net/driftingsouls/ds2/server/werften/ShipWerft.java

    r89d279c r5b00c95  
    122122                return this.ship; 
    123123        } 
    124          
    125         @Override 
    126         public int getWerftType() { 
    127                 return WerftObject.SHIP; 
    128         } 
    129          
     124 
    130125        @Override 
    131126        public Cargo getCargo(boolean localonly) { 
     
    404399                return result; 
    405400        } 
     401 
     402        @Override 
     403        public String getWerftPicture() { 
     404                return this.ship.getTypeData().getPicture(); 
     405        } 
     406 
     407        @Override 
     408        public String getWerftName() { 
     409                return this.ship.getName(); 
     410        } 
    406411} 
  • src/net/driftingsouls/ds2/server/werften/WerftGUI.java

    r89d279c r5b00c95  
    110110                        t.set_var("werftgui.main", 1); 
    111111                         
     112                        WerftQueueEntry[] queue = werft.getBuildQueue(); 
     113                        t.set_var( 
     114                                        "werftgui.name",        werft.getWerftName(), 
     115                                        "werftgui.picture",     werft.getWerftPicture(), 
     116                                        "werftgui.crew",        werft.getCrew(), 
     117                                        "werftgui.werftslots",  werft.getWerftSlots(), 
     118                                        "werftgui.totalqueueentries",   queue.length 
     119                                        ); 
     120                         
     121                        // Resourcenliste 
    112122                        SQLResultRow[] shipdata = werft.getBuildShipList(); 
    113123                         
    114                         // Resourcenliste 
    115124                        Cargo costs = new Cargo(); 
    116125                        for( int i=0; i < shipdata.length; i++ ) { 
     
    159168                                } 
    160169                                 
    161                                 out_queueShipList(werft, werft.getBuildQueue()); 
     170                                out_queueShipList(werft, queue); 
    162171                        } 
    163172                        else if( "options".equals(show) ) { 
     
    165174                                 
    166175                                // Verbindung Base <-> Werft 
    167                                 if( werft.getWerftType() == WerftObject.SHIP ) { 
     176                                if( werft instanceof ShipWerft ) { 
    168177                                        int shipid = ((ShipWerft)werft).getShipID(); 
    169178                                        Base linkedbase = ((ShipWerft)werft).getLinkedBase(); 
     
    223232                        Ship ship = (Ship)iter.next(); 
    224233                         
    225                         if( (werft.getWerftType() == WerftObject.SHIP) && (((ShipWerft)werft).getShip() == ship) ) { 
     234                        if( (werft instanceof ShipWerft) && (((ShipWerft)werft).getShip() == ship) ) { 
    226235                                continue;        
    227236                        } 
     
    251260                t.set_block("queueshiplist.listitem", "queueship.buildcosts.listitem", "queueship.buildcosts.list"); 
    252261                 
    253                 int remaining = 0; 
    254262                for( int i=0; i < queue.length; i++ ) { 
    255263                        t.start_record(); 
    256264                        WerftQueueEntry entry = queue[i]; 
    257265 
    258                         remaining += entry.getRemainingTime(); 
    259                          
    260266                        t.set_var( 
    261267                                        "queueship.buildcosts.list",    "", 
     
    264270                                        "queueship.type.id",    entry.getBuildShipType().getTypeId(), 
    265271                                        "queueship.type.name",  entry.getBuildShipType().getNickname(), 
    266                                         "queueship.remainingtotal",     remaining, 
     272                                        "queueship.remainingtotal",     werft.getTicksTillFinished(entry), 
     273                                        "queueship.slots",      entry.getSlots(), 
    267274                                        "queueship.building",   entry.isScheduled(), 
    268275                                        "queueship.uppossible", i > 0, 
     
    412419                        return; 
    413420                } 
    414                 if( (werft.getWerftType() == WerftObject.SHIP) && (((ShipWerft)werft).getShipID() == ws) ) { 
     421                if( (werft instanceof ShipWerft) && (((ShipWerft)werft).getShipID() == ws) ) { 
    415422                        context.addError("Sie k&ouml;nnen sich nicht selbst reparieren", werft.getUrlBase()+"&amp;sess="+sess);                  
    416423                        return; 
     
    766773 
    767774                // Crew 
    768                 int frei = werft.getCrew(); 
     775                final int frei = werft.getCrew(); 
    769776                 
    770777                t.set_var(      "res.image",                    Configuration.getSetting("URL")+"data/interface/arbeitslos.gif", 
     
    776783                t.parse("build.othercosts.list", "build.res.listitem", true); 
    777784                 
     785                // Werftslots 
     786                t.set_var(      "res.image",                    Configuration.getSetting("URL")+"data/interface/schiffinfo/werftslots.png", 
     787                                        "res.plainname",                "Werftslots", 
     788                                        "res.cargo.pertick",    "", 
     789                                        "res.cargo.available",  werft.getWerftSlots(), 
     790                                        "res.cargo.needed",             shipdata.getInt("werftslots"), 
     791                                        "res.cargo.mangel",             false); 
     792                t.parse("build.othercosts.list", "build.res.listitem", true); 
     793                 
     794                // Dauer 
     795                t.set_var(      "res.image",                    Configuration.getSetting("URL")+"data/interface/time.gif", 
     796                                        "res.plainname",                "Dauer", 
     797                                        "res.cargo.pertick",    "", 
     798                                        "res.cargo.available",  "", 
     799                                        "res.cargo.needed",             shipdata.getInt("dauer"), 
     800                                        "res.cargo.mangel",             false); 
     801                t.parse("build.othercosts.list", "build.res.listitem", true); 
     802                 
    778803                // Testen ob Bau moeglich 
    779804                if( !conf.equals("ok") ) { 
  • src/net/driftingsouls/ds2/server/werften/WerftObject.java

    r89d279c r5b00c95  
    2020 
    2121import java.util.ArrayList; 
     22import java.util.Arrays; 
    2223import java.util.HashMap; 
    2324import java.util.Iterator; 
    2425import java.util.List; 
    2526import java.util.Map; 
     27import java.util.SortedMap; 
     28import java.util.TreeMap; 
    2629 
    2730import javax.persistence.Column; 
     
    3235import javax.persistence.InheritanceType; 
    3336import javax.persistence.Table; 
     37import javax.persistence.Transient; 
    3438 
    3539import net.driftingsouls.ds2.server.ContextCommon; 
     
    8084@DiscriminatorFormula("case when col is not null then 'base' else 'ship' end") 
    8185public abstract class WerftObject extends DSObject implements Locatable { 
    82         protected static final int BUILDING = 0; 
    83         protected static final int SHIP = 1; 
    84          
    8586        @Id @GeneratedValue 
    8687        private int id = 0; 
     
    147148         * @return Die Anzahl der belegten Slots 
    148149         */ 
    149         public int getUsedSlots() { 
     150        public final int getUsedSlots() { 
    150151                org.hibernate.Session db = ContextMap.getContext().getDB(); 
    151152                 
     
    156157         
    157158        /** 
     159         * Gibt den Zeitpunkt zurueck, an dem ein Bauauftrag voraussichtlich fertig sein wird 
     160         * @param searched Der Bauauftrag 
     161         * @return Die Zeit in Ticks bis zur Fertigstellung 
     162         */ 
     163        public final int getTicksTillFinished(WerftQueueEntry searched) { 
     164                List<WerftQueueEntry> entries = new ArrayList<WerftQueueEntry>(); 
     165                entries.addAll(Arrays.asList(getBuildQueue())); 
     166                 
     167                int slots = this.getWerftSlots(); 
     168                int time = 0; 
     169                boolean first = true; 
     170                 
     171                SortedMap<Integer,List<WerftQueueEntry>> scheduled = new TreeMap<Integer,List<WerftQueueEntry>>(); 
     172                 
     173                while( !entries.isEmpty() ) { 
     174                        for( int i=0; i < entries.size(); i++ ) { 
     175                                WerftQueueEntry entry = entries.get(i); 
     176                                 
     177                                if( (first && entry.isScheduled()) || (!first && entry.getSlots() <= slots) ) { 
     178                                        if( entry == searched ) { 
     179                                                return time+entry.getRemainingTime(); 
     180                                        } 
     181                                         
     182                                        slots -= entries.get(i).getSlots(); 
     183                                         
     184                                        if( !scheduled.containsKey(time+entry.getRemainingTime()) ) { 
     185                                                scheduled.put(time+entry.getRemainingTime(), new ArrayList<WerftQueueEntry>()); 
     186                                        } 
     187                                        scheduled.get(time+entry.getRemainingTime()).add(entry); 
     188                                        entries.remove(i--); 
     189                                         
     190                                        if( slots == 0 ) { 
     191                                                continue; 
     192                                        } 
     193                                } 
     194                        } 
     195                         
     196                        first = false; 
     197                         
     198                        time = scheduled.firstKey(); 
     199                        List<WerftQueueEntry> remove = scheduled.remove(time); 
     200                        for( WerftQueueEntry entry : remove ) { 
     201                                slots += entry.getSlots(); 
     202                        } 
     203                } 
     204                 
     205                return -1; 
     206        } 
     207         
     208        /** 
    158209         * Gibt den Typ der Werft zurueck 
    159210         * @return Typ der Werft 
     
    183234                        final WerftQueueEntry entry = entries[i]; 
    184235                         
    185                         if( (entry.getSlots() <= freeSlots) && entry.isBuildContPossible() ) { 
     236                        if( entry.getSlots() <= freeSlots ) { 
    186237                                entry.setScheduled(true); 
    187238                                 
     
    207258                 
    208259                this.buildFlagschiff = false; 
     260                this.entries = null; 
    209261        } 
    210262 
     
    224276                return id; 
    225277        } 
     278         
     279        /** 
     280         * Gibt den Namen der Werft zurueck 
     281         * @return Der Name 
     282         */ 
     283        public abstract String getWerftName(); 
     284         
     285        /** 
     286         * Gibt das Bild der Werft zurueck 
     287         * @return Das Bild 
     288         */ 
     289        public abstract String getWerftPicture(); 
    226290 
    227291        /** 
     
    237301        public abstract User getOwner(); 
    238302         
    239         /** 
    240          * Gibt den Werfttyp (Basis,Schiff) zurueck 
    241          * @return Der Werfttyp 
    242          */ 
    243         public abstract int getWerftType(); 
    244  
    245303        /** 
    246304         * Gibt den Cargo der Werft zurueck 
     
    12791337                else { 
    12801338                        if( this.getOneWayFlag() == 0 ) { 
    1281                                 this.setCargo(cargo, false); 
    1282                                 this.setEnergy(e); 
     1339                                if( !costsPerTick ) { 
     1340                                        this.setCargo(cargo, false); 
     1341                                        this.setEnergy(e); 
     1342                                } 
    12831343                                this.setCrew(frei); 
    12841344         
    12851345                        }  
    12861346                        // TODO: Ab nach ShipWerft... 
    1287                         else if( this.getWerftType() == SHIP ) { 
     1347                        else if( this instanceof ShipWerft ) { 
    12881348                                // Einweg-Werft-Code 
    12891349                                 
     
    13291389                        db.persist(entry); 
    13301390                         
     1391                        this.entries = null; 
     1392                         
    13311393                        rescheduleQueue(); 
    13321394                         
     
    13341396                } 
    13351397        } 
     1398         
     1399        @Transient 
     1400        private WerftQueueEntry[] entries = null; 
    13361401         
    13371402        /** 
     
    13401405         */ 
    13411406        public WerftQueueEntry[] getBuildQueue() { 
     1407                if( entries != null ) { 
     1408                        return entries.clone(); 
     1409                } 
     1410                 
    13421411                org.hibernate.Session db = ContextMap.getContext().getDB(); 
    13431412                 
     
    13521421                } 
    13531422 
     1423                this.entries = list; 
     1424                 
    13541425                return list; 
    13551426        } 
  • src/net/driftingsouls/ds2/server/werften/WerftQueueEntry.java

    r89d279c r5b00c95  
    506506                if( !this.getCostsPerTick().isEmpty() ) { 
    507507                        Cargo cargo = werft.getCargo(false); 
    508                         ResourceList reslist = this.getCostsPerTick().compare(cargo, false); 
     508                        ResourceList reslist = this.costsPerTick.compare(cargo, false); 
    509509                        for( ResourceEntry res : reslist ) { 
    510510                                if( res.getDiff() > 0 ) { 
  • templates/werft.werftgui.html

    re2ca6c9 r5b00c95  
    245245{if werftgui.main} 
    246246        {!table_begin 810} 
     247                <h3>Werft: {werftgui.name}</h3> 
     248                <div style="text-align:left"> 
     249                        <table class="noBorderX" cellpadding="2" cellspacing="1"> 
     250                        <tr> 
     251                                <td class="noBorderX" style="vertical-align:top"> 
     252                                        <img style="width:64px" src="{werftgui.picture}" alt="" /> 
     253                                </td> 
     254                                <td class="noBorderX" width="50"></td> 
     255                                <td class="noBorderX" style="vertical-align:top"> 
     256                                        Freies Personal: <img style="vertical-align:middle" src="{URL}data/interface/arbeitslos.gif" alt="" /> {werftgui.crew}<br /> 
     257                                        Werftkapazit&auml;t: <img style="vertical-align:middle" src="{URL}data/interface/schiffinfo/werftslots.png" alt="" /> {werftgui.werftslots} 
     258                                </td> 
     259                            <td class="noBorderX" width="50"></td> 
     260                                <td class="noBorderX" style="vertical-align:top"> 
     261                                        Auslastung: {werftgui.totalqueueentries} Schiffe</a> 
     262                                </td> 
     263                        </table> 
     264                </div> 
     265                <br /> 
    247266                <h3>Vorhandene Rohstoffe</h3> 
    248267                <table class="noBorderX" style="width:90%; margin-left:auto; margin-right:auto"> 
     
    278297                <hr noshade="noshade" size="1" style="color:#cccccc" /> 
    279298                <br /> 
     299                <script type="text/javascript"> 
     300                <!-- 
     301                //<![CDATA[ 
     302                        function highlightRow(row, highlight) { 
     303                                if( highlight ) { 
     304                                        row.style.backgroundColor = '#36413A'; 
     305                                } 
     306                                else { 
     307                                        row.style.backgroundColor = 'transparent'; 
     308                                } 
     309                        } 
     310                //]]> 
     311                --> 
     312                </script> 
    280313                {if werftgui.main.build} 
    281                         <script type="text/javascript"> 
    282                         <!-- 
    283                         //<![CDATA[ 
    284                                 function highlightRow(row, highlight) { 
    285                                         if( highlight ) { 
    286                                                 row.style.backgroundColor = '#36413A'; 
    287                                         } 
    288                                         else { 
    289                                                 row.style.backgroundColor = 'transparent'; 
    290                                         } 
    291                                 } 
    292                         //]]> 
    293                         --> 
    294                         </script> 
    295314                        {if werftgui.buildshiplist} 
    296315                                <div style="height:400px; overflow:auto;"> 
     
    383402                                                        </td> 
    384403                                                        <td class="noBorderX"> 
    385                                                                 Fertigstellung in: <img vertical-align="middle" src="{URL}data/interface/time.gif" alt="Dauer" title="Dauer" />{queueship.remainingtotal} 
     404                                                                Fertigstellung in: <img vertical-align="middle" src="{URL}data/interface/time.gif" alt="Dauer" title="Dauer" />{queueship.remainingtotal}<br /> 
     405                                                                Ben&ouml;tigte Slots: <img vertical-align="middle" src="{URL}data/interface/schiffinfo/werftslots.png" alt="Werftslots" title="Werftslots" />{queueship.slots} 
    386406                                                                {if queueship.reqitem} 
    387407                                                                        <br />Ben&ouml;tigt: <img style="vertical-align:middle" src="{URL}data/items/{queueship.item.picture}" alt="{queueship.item.name}" />{queueship.item.name}