Class BackendBuildingController
In: app/controllers/backend_building_controller.rb
Parent: ApplicationController

Methods

Public Instance methods

Methode, die einen Bau/Updateauftrag realisiert

@params:typ

  • [planet:planet] (Objekt des zu bebauenden Planetens)
  • [building_typ:String] (Art des Gebäudes (Name))
  • [level:integer] (Level des Gebäudes)
  • [user:user] (Objekt des bauenden Spielers)

@return

  • wird gebaut : true
  • wird nicht gebaut : false

[Source]

    # File app/controllers/backend_building_controller.rb, line 60
60:   def build_building(planet,building_typ, level, user)
61:     begin 
62:       ActiveRecord::Base.transaction do
63:         if(buildable(planet, building_typ, level, user) == 0)
64:           b = BuildOrder.new
65:           b.completion_time = Time.new + RulesAndRegulations.required_construction_time_building(level,building_typ,user.construction_techlevel, user.race)*60
66:           g = planet.buildings.find_by_name(building_typ)
67:           b.update_attributes(:building_id => g.id, :planet_id => planet.id)
68:           
69:           #Planetenresourcen anpassen
70:           planet.ore= planet.ore - RulesAndRegulations.required_ore_building(level,building_typ, user.race)
71:           planet.crystal= planet.crystal - RulesAndRegulations.required_crystal_building(level,building_typ, user.race)
72:           planet.save
73:           return true
74:         else
75:           return false
76:         end
77:       end
78:     rescue
79:       return false
80:     end
81:   end

Methode die überprüft, ob ein Gebäude gebaut werden darf

@params:typ

  • [planet:planet] (Objekt des zu bebauenden Planetens)
  • [building_typ:String] (Name des Gebäudes)
  • [level:integer] (Level des Gebäudes)
  • [user:user] (Objekt des bauenden Spielers)

@return

  • möglich: 0
  • es wird bereits eine Gebäude gebaut: 1
  • zu geringes Techlevel: 2
  • zu wenig Erz: 3
  • zu wenig Kristall: 4
  • zu wenig freie Felder: 5
  • nicht der eigene Planet: 6
  • nicht bekannte Gebäudekategorie 7

[Source]

    # File app/controllers/backend_building_controller.rb, line 22
22:   def buildable(planet, building_typ, level, user)
23:     if planet.building_in_progress?
24:       return 1
25:     end
26:     if !user.id == planet.owner
27:       return 6
28:     end
29:     if !enough_space?(planet)
30:       return 5
31:     end    
32:     if !required_techlevel_available?(user, level, building_typ)
33:       return 2
34:     end
35:     # zu wenig Erz vorhanden?
36:     if planet.ore < RulesAndRegulations.required_ore_building(level,building_typ, user.race)
37:       return 3
38:     end
39:     # zu wenig Kristall
40:     if planet.crystal < RulesAndRegulations.required_crystal_building(level,building_typ, user.race)
41:       return 4
42:     end  
43:     if !RulesAndRegulations::BUILDINGS.include?(building_typ)
44:       return 7
45:     end
46:     return 0
47:   end

Methode, die einen Bau/Updateauftrag vollendet

@params:typ

[Source]

     # File app/controllers/backend_building_controller.rb, line 114
114:   def complete_build_order(build_order)
115:         b = build_order.building;
116:         b.update_attributes(:level => b.level + 1)
117:         build_order.destroy
118:   end

Methode zur Überprüfung ob noch genügend freie Felder auf dem Planeten sind

@params:typ

  • [planet:planet] (Objekt des zu bebauenden Planetens)

@return

  • möglich: true
  • nicht möglich: false

[Source]

     # File app/controllers/backend_building_controller.rb, line 106
106:   def enough_space?(planet)
107:     return (planet.available_fields > 0)
108:   end

Methode zur Überprüfung ob das Techlevel hoch genug ist um ein Produktionsgebäude upzugraden

@params:typ

  • [user:user] (Objekt des bauenden Spielers)
  • [level:integer] (Level des Gebäudes)
  • [building_typ:String] (Name des Gebäudes)

@return

  • möglich: true
  • nicht möglich: false

[Source]

    # File app/controllers/backend_building_controller.rb, line 92
92:   def required_techlevel_available?(user, level, building_typ)          
93:     if building_typ == ("Erzmine" || "Raffinerie" || "Kristallfeld")
94:       return (user.production_techlevel*3+3 >= level)   
95:     end
96:     return true    
97:   end

[Validate]