Class TroopMovementController
In: app/controllers/troop_movement_controller.rb
Parent: ApplicationController

Methods

Public Instance methods

Action, um Resourcen in einen Transporter in der Flotte zu laden Falls die Ressourcen nicht hinzugefügt werden konnten, wird eine xml-Datei mit Angabe des Grunds an das iPhone gesendet

@params: typ

troopmovement: TroopMovement
Flotte, auf die Resourcen geladen werden sollen
ore: Integer
Anzahl Erz, das eingeladen werden soll
crystal: Integer
Anzahl Kristall, das eingeladen werden soll
gas: Integer
Anzahl Gas, das eingeladen werden soll

[Source]

     # File app/controllers/troop_movement_controller.rb, line 179
179: def add_resources(troopmovement, ore, crystal, gas)
180: 
181:  @b = BackendTroopMovementController.new().add_resources(@troopmovement, @ore, @crystal, @gas)
182:   
183:   case @b
184:     when 0
185:       @result = 0
186:       @success = 'YES'
187:     when 1
188:       @result = 'kein Transporter in der Flotte'
189:     when 2
190:       @result = 'nicht genug Erz auf Planet vorhanden'
191:     when 3
192:       @result = 'nicht genug Kristall auf Planet vorhanden'
193:     when 4
194:       @result = 'nicht genug Gas auf Planet vorhanden'
195:     when 5
196:       @result = 'nicht genug Platz auf Transporter'
197:     else
198:       @result = 'klappt nicht'
199:   end
200:    return @result
201: end

Action, die Raumschiffe einer Flotte hinzufuegt @params: typ

troopmovement: TroopMovement
TroopMovement, dem Schiffe hinzugefuegt werden sollen
spaceship: Spaceship
Raumschifftyp, der hinzugefuegt werden soll
count: Integer
Anzahl der Raumschiffe, die hinzugefuegt werden sollen

[Source]

     # File app/controllers/troop_movement_controller.rb, line 161
161: def add_ships(troopmovement, spaceship, count)
162:   
163: # Aufruf im Backend liefert true oder false
164: return BackendTroopMovementController.new().add_ships(troopmovement, spaceship, count)
165: 
166: 
167: end

Action um ein TroopMovement zu erzeugen, die übergebenen Schiffe hinzuzufügen und das TroopMovement zu starten @params: typ

mission: Integer
AuftragsID
startplanet_id: Integer
ID des Planeten, an dem das TroopMovement startet
targetplanet_id: Integer
ID des Planeten, zu dem das TroopMovement fliegt
*ship[x]*: Integer
ID der Raumschiffe, die hinzugefügt werden sollen (an die ID ist das Level des Raumschiffes gebunden), x = 0, …, 39
*count[x]*: Integer
Anzahl der Raumschiffe, die in ship[x] übergeben werden, x = 0, …, 39
ore: Integer
Erz, welches transportiert werden soll (falls Transporter in Flotte vorhanden)
gas: Integer
Gas, welches transportiert werden soll (falls Transporter in Flotte vorhanden)
crystal: Integer
Kristall, welches transportiert werden soll (falls Transporter in Flotte vorhanden)

[Source]

     # File app/controllers/troop_movement_controller.rb, line 21
 21: def create_new_troop_movement
 22:   @user = current_user
 23:  if (params[:ship].kind_of?(Hash) && params[:count].kind_of?(Hash) && Planet.exists?(params[:startplanet_id]) && Planet.exists?(params[:targetplanet_id]))
 24:   @startplanet = Planet.find(params[:startplanet_id])
 25:   @destinationplanet = Planet.find(params[:targetplanet_id])
 26:   @mission = params[:mission].to_i
 27:   @ships = params[:ship]
 28:   @counts = params[:count] 
 29:   @boolean = false
 30: 
 31:   
 32:   # falls Erz transportiert werden soll
 33:   if !params[:ore].nil?
 34:     @ore = params[:ore].to_i
 35:   else
 36:     @ore = 0
 37:   end
 38:   # falls Gas transportiert werden soll  
 39:   if !params[:gas].nil?
 40:     @gas = params[:gas].to_i
 41:   else
 42:     @gas = 0
 43:   end
 44:   # falls Kristall transportiert werden soll  
 45:   if !params[:crystal].nil?
 46:     @crystal = params[:crystal].to_i
 47:   else
 48:     @crystal = 0
 49:   end
 50:  
 51:   # kreiere TroopMovement mit angegebenem Start- und Zielplaneten und der Mission
 52:    @troopmovement = self.create_troop_movement(@user, @startplanet, @destinationplanet, @mission)
 53:   
 54:   # falls das TroopMovement erfolgreich erstellt wurde
 55:   if !@troopmovement.kind_of?(String.new().class)
 56:    
 57:    # iteriere über alle Raumschiffe, um zu erfahren, wieviele von welchem Typ dem TroopMovement 
 58:    # hinzugefügt werden sollen und füge hinzu
 59:     @ships.each do |i, id|
 60:      if Spaceship.exists?(id.to_i)
 61:        ship = Spaceship.find(id.to_i)
 62:        count = @counts[i].to_i 
 63:        @boolean = self.add_ships(@troopmovement, ship, count)
 64:      end
 65:     end
 66:     
 67:     if @boolean == true
 68:        # füge dem erstellten TroopMovement die evtl angegebenen Ressourcen hinzu
 69:       if (@ore == 0 && @gas == 0 && @crystal == 0)
 70:          @result = 0
 71:       else
 72:          @result = self.add_resources(@troopmovement, @ore, @crystal, @gas)
 73:       end
 74:       
 75:       if  @result == 0
 76:        # letzendlich starte das TroopMovement
 77:          @result = self.starting(@troopmovement)
 78: 
 79:          if @result.kind_of?(String.new().class)
 80:             @success = 'NO'
 81:             self.delete_troop_movement(@troopmovement)
 82:  
 83:          else
 84:            @result = 'Flotte erfolgreich gestartet'
 85:            @success = 'YES'
 86:          end
 87:       else
 88:         @success = 'NO'
 89:         self.delete_troop_movement(@troopmovement)
 90:       end
 91:     else
 92:       @result = 'Schiffe konnten nicht hinzugefügt werden'
 93:       @success = 'NO'
 94:       self.delete_troop_movement(@troopmovement)
 95: 
 96:     end
 97: 
 98:   else
 99:     @success = 'NO'
100:     @result = @troopmovement
101:   end
102:   
103:   else
104:     @success = 'NO'
105:     @result = 'ungültige Angaben'
106:   end
107: 
108:    respond_to do |format|
109:      format.xml do 
110:        render :template => 'troop_movement/create_new_troop_movement.xml.erb'
111:      end
112:    end  
113: 
114: end

Action, die ein TroopMovement erstellt falls das TroopMovement nicht erstellt werden kann, wird eine xml-Datei mit Angabe des Grunds an das iPhone gesendet andernfalls wird das erzeugte TroopMovement zurückgeliefert

@params: typ

user: User
User, der das TroopMovement erzeugen will
startplanet: Planet
Startplanet des TroopMovements
destinationplanet: Planet
Zielplanet des TroopMovements
missionid: Integer
Auftragsnummer

[Source]

     # File app/controllers/troop_movement_controller.rb, line 128
128: def create_troop_movement(user, startplanet, destinationplanet, mission)
129:   
130:   @b = BackendTroopMovementController.new().create_troop_movement(user, startplanet, destinationplanet, mission)
131:   
132:   case @b
133:     when 1
134:       @result = 'keine gültige Missionsnummer' 
135:     when 2
136:       @result = 'Planet gehört keinem fremden Spieler'
137:     when 3
138:       @result = 'Planet schon besiedelt'
139:     when 4
140:       @result = 'Spionage auf eigenem Planeten'
141:     when 5
142:       @result = 'Transport zu unbewohntem Planeten' 
143:     when 6
144:       @result = 'Stationieren auf fremden Planeten'
145:     when 7
146:       @result = 'Verkauf auf unbewohntem oder fremdem Planeten'
147:     else
148:       @result = @b
149:   end
150:   return @result
151: 
152: end

Action, die ein TroopMovement abbricht Die Resourcen werden wieder ausgeladen, die Schiffe landen wieder am Startplaneten

@params: typ

id: Integer
ID des TroopMovements, das abgebrochen werden soll

[Source]

     # File app/controllers/troop_movement_controller.rb, line 239
239: def delete_troop_movement(troopmovement)
240:   
241:   BackendTroopMovementController.new().delete_troop_movement(troopmovement)
242:   
243: end

Action zum Anzeigen aller Flottenbewegungen zu bzw von Planeten eines Users Es müssen keine Parameter übergeben werden, da man über den aktuell eingeloggten User an alle Informationen

[Source]

     # File app/controllers/troop_movement_controller.rb, line 285
285: def show_armadas
286: 
287:      # eigene Flottenbewegungen 
288:      @launching_troops = Array.new
289:      @own_launching_troops = Array.new
290:      @own_incoming_troops = Array.new
291:      
292:      # fremde Flottenbewegungen
293:      @incoming_troops = Array.new
294:      @foreign_launching_troops = Array.new
295:      @foreign_incoming_troops = Array.new
296:      
297:      # Planeten des Users
298:      @userplanets = current_user.planets
299:      
300:      # Alle Flotten, die einen Planetes des Users verlassen
301:      @userplanets.each do |userplanet|
302:        @launching_troops << userplanet.launching_troops
303:      end
304:      @launching_troops.flatten!
305:      
306:      # Alle Flotten, die einen Planeten des Users verlassen, werden aufgeteilt
307:      # in fremde und eigene Flotten
308:      @launching_troops.each do |launchingtroop|
309:        if launchingtroop.user.id == current_user.id
310:           @own_launching_troops << launchingtroop
311:        else 
312:           @foreign_launching_troops << launchingtroop
313:        end
314:      end
315:     
316:          
317:      # Alle Flotten, die einen Planeten des Users anfliegen
318:      @userplanets.each do |userplanet|
319:        @incoming_troops << userplanet.incoming_troops
320:      end
321:      @incoming_troops.flatten!
322:      
323:      # Alle Flotten, die einen Planeten des Users anfliegen, werden aufgeteilt
324:      # in eigene und fremde Flotten
325:      @incoming_troops.each do |incomingtroop|
326:        if incomingtroop.user.id == current_user.id
327:           @own_incoming_troops << incomingtroop
328:        else
329:           @foreign_incoming_troops << incomingtroop
330:       end
331:     end
332:     
333:     @transport= @own_incoming_troops & @own_launching_troops
334:     @own_launching_troops= @own_launching_troops - @transport
335:     @own_incoming_troops= @own_incoming_troops - @transport
336:      
337: 
338:        respond_to do |format|
339:          format.xml do
340:            render :template => 'troop_movement/show_armadas.xml.erb'
341:          end
342:        end
343:  
344: 
345: end

Action zum Anzeigen genauerer Informationen zu einem TroopMovement @params:typ

id: Integer
ID des TroopMovements, an dessen Informationen man interessiert ist

[Source]

     # File app/controllers/troop_movement_controller.rb, line 250
250: def show_troopmovement
251: if TroopMovement.exists?(params[:id])
252:     @troop_movement = TroopMovement.find(params[:id])
253:     @spaceships = @troop_movement.spaceships
254:   
255:   if @troop_movement.user.id != current_user.id
256:     @result = 'Das ist nicht dein TroopMovement'
257:     @success = 'NO'
258:     respond_to do |format|
259:       format.xml do
260:         render :template => 'users/result.xml.erb'
261:       end
262:     end
263:   else
264:     respond_to do |format|
265:       format.xml do 
266:         render :template => 'troop_movement/show_troopmovement.xml.erb'
267:       end
268:     end
269:   end
270: else
271:   @result = 'Dieses TroopMovement gibt es nicht!'
272:     @success = 'NO'
273:     respond_to do |format|
274:       format.xml do
275:         render :template => 'users/result.xml.erb'
276:       end
277:   end
278:  end
279: end

Action, um ein TroopMovement zu starten es wird eine xml-Datei an das iPhone gesendet, in welcher über Erfolg oder Misserfolg berichtet wird @params: typ

troopmovement: TroopMovement
Objekt des zu startenden TroopMovements

[Source]

     # File app/controllers/troop_movement_controller.rb, line 209
209: def starting(troopmovement)
210:   @b = BackendTroopMovementController.new().starting(troopmovement)
211:   
212:  case @b
213:   when 0
214:     @result = 0
215:   when 1
216:     @result = 'keine Schiffe vorhanden'
217:   when 2
218:     @result = 'Kolonieschiff fehlt trotz Auftrag Besiedeln'
219:   when 3
220:     @result = 'Spionagesonde fehlt trotz Auftrag Spionieren'
221:   when 4
222:     @result = 'Transporter fehlt trotz Auftrag Transport'
223:   when 5
224:     @result = 'nicht genug Gas'
225:   else
226:     @result = 'konnte nicht gestartet werden'
227:  end
228: 
229:  return @result
230:  
231: end

[Validate]