Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Commit

Permalink
Got yaml db exporting to work. Added basic export to versioning.
Browse files Browse the repository at this point in the history
  • Loading branch information
kbingman committed Dec 28, 2008
1 parent eb71b46 commit 6188189
Show file tree
Hide file tree
Showing 30 changed files with 355 additions and 316 deletions.
7 changes: 5 additions & 2 deletions Rakefile
@@ -1,8 +1,11 @@
require 'rubygems'
require 'rake/rdoctask'

require 'rake/gempackagetask'
require 'merb-core'
require 'merb-core/tasks/merb'

dependency 'dm-core'
dependency 'merb_datamapper'

include FileUtils

Expand Down
1 change: 1 addition & 0 deletions app/controllers/ships.rb
Expand Up @@ -54,6 +54,7 @@ def update(id, ship)
provides :html, :js
@ship = Ship.get(id)
@configurations = Configuration.all
@ship.armor_id = params[:ship][:armor_id]

raise NotFound unless @ship

Expand Down
39 changes: 31 additions & 8 deletions app/helpers/ships_helper.rb
Expand Up @@ -20,19 +20,19 @@ def commify(n)
def number_select(n)
result = ''
n.times do |i|
result = result + "<option>#{i}</option>\n"
result += "<option>#{i}</option>\n"
end
result
end

def tech_level_select
result = ""
result = ''
8.times do |i|
if @ship.new_record?
result = result + "<option>#{i + 8}</option>\n"
else
selected = (i + 8) == @ship.tech_level ? ' selected="selected"':''
result = result + "<option#{selected}>#{i + 8}</option>\n"
result += "<option#{selected}>#{i + 8}</option>\n"
end
end
result
Expand All @@ -43,7 +43,7 @@ def drive_select(attribute)
6.times do |i|
unless i + 1 > @ship.send("max_#{attribute}")
selected = (@ship.send(attribute) == i + 1) ? ' selected="selected"':''
result = result + "<option#{selected}>#{i + 1}</option>\n"
result += "<option#{selected}>#{i + 1}</option>\n"
end
end
result
Expand All @@ -56,29 +56,52 @@ def power_select(n)
jump = @ship.jumpdrive ? @ship.jumpdrive : 0
unless i + 1 < thrust or i + 1 < jump
selected = (@ship.power == i + 1) ? ' selected="selected"':''
result = result + "<option#{selected}>#{i + 1}</option>\n"
result += "<option#{selected}>#{i + 1}</option>\n"
end
end
result
end

def armor_select(tech_level)
result = "<option value=''> </option>"
Armor.all.each do |armor|
selected = @ship.armor == armor ? ' selected="selected"':''
result += "<option value='#{armor.id}'#{selected}>#{armor.name}</option>" unless armor.tech_level > tech_level
end
result
end

def armor_rating_select(tech_level)
result = ''
if @ship.armor_id
max = @ship.tech_level <= @ship.armor.max ? @ship.tech_level : @ship.armor.max
rating = @ship.armor.name
max.times do |r|
armor_value = r + 1
selected = @ship.armor_rating == armor_value ? ' selected="selected"':''
result += "<option#{selected}>#{armor_value}</option>"
end
end
result
end

def weapon_select(name)
result = ''
Weapon.all.each do |weapon|
result = result + "<option value='#{weapon.id}'>#{weapon.name}</option>\n" unless weapon.send(name) == false
result += "<option value='#{weapon.id}'>#{weapon.name}</option>\n" unless weapon.send(name) == false
end
result
end

def weapon_size_select(name)
case name
when 'bay' : fields = [['50','50 Tons'],['100','100 Tons']]
when 'turret' : fields = [['Triple','Triple'],['Double','Double'],['Single','Single']]
when 'turret' : fields = [['3','Triple'],['2','Double'],['1','Single']]
when 'barbette' : fields = [['5','5 Tons']]
end
result = ''
fields.each do |field|
result = result + "<option value='#{field[0]}'>#{field[1]}</option>\n"
result += "<option value='#{field[0]}'>#{field[1]}</option>\n"
end
result
end
Expand Down
13 changes: 13 additions & 0 deletions app/models/armor.rb
@@ -0,0 +1,13 @@
class Armor
include DataMapper::Resource

property :id, Serial
property :name, String
property :tech_level, Integer
property :protection, Integer
property :cost, Integer
property :max, Integer

has n, :ships

end
9 changes: 9 additions & 0 deletions app/models/screen.rb
@@ -0,0 +1,9 @@
class Screen
include DataMapper::Resource

property :id, Serial
property :name, String



end
72 changes: 69 additions & 3 deletions app/models/ship.rb
Expand Up @@ -4,6 +4,7 @@ class Ship
include DataMapper::Resource

before :save, :check_drives
before :save, :check_armor

property :id, Serial # primary serial key
property :name, String
Expand All @@ -16,12 +17,15 @@ class Ship
property :thrust, Integer
property :power, Integer
property :price, Integer
property :nothing, Boolean
property :armor_rating, Integer
property :troops, Integer

property :created_at, DateTime
property :updated_at, DateTime

belongs_to :configuration
belongs_to :armor

# belongs_to :computer

has n, :bays
Expand All @@ -30,6 +34,34 @@ class Ship

validates_present :name

def armor_tonnage
if self.armor
armor_name = self.armor.name
case
when armor_name == 'Titanium Steel' : percentage = 0.025
when armor_name == 'Crystaliron' : percentage = 0.0125
when armor_name == 'Superdense' : percentage = 0.008333333333333
end
(tonnage * (percentage) * armor_rating).to_i
else
0
end
end

def armor_price
if self.armor
armor_name = self.armor.name
case
when armor_name == 'Titanium Steel' : percentage = 0.01
when armor_name == 'Crystaliron' : percentage = 0.04
when armor_name == 'Superdense' : percentage = 0.083333333333
end
(hull_price * percentage * armor_rating).to_i
else
0
end
end

def max_jumpdrive
max_jump = tech_level - 9
max = max_jump > 0 ? max_jump : 0
Expand Down Expand Up @@ -97,11 +129,19 @@ def stateroom_tonnage
staterooms ? staterooms * 4 : 0
end

def stateroom_price
staterooms ? staterooms * 0.5 : 0
end

def bridge
bridge = tonnage * 0.02
(bridge > 20) ? bridge : 20
end

def bridge_price
tonnage * 0.005
end

def ep
power ? (0.01 * tonnage * power) : 0
end
Expand Down Expand Up @@ -190,11 +230,31 @@ def available_barbettes
(tonnage / 100) -total_bays - total_barbettes - total_turrets
end

def command_crew
tonnage > 10000 ? (tonnage / 10000) * 5 : 5
end

def engineering_crew
((jump_tonnage + thrust_tonnage + thrust_tonnage)/100).to_i
end

def gunnery_crew
(total_bays * 2) +
(total_turrets + total_barbettes)/10
end

def service_crew
troops ? (tonnage / 1000) * 2 : (tonnage / 1000) * 3
end

def total_price
hull_price +
armor_price +
jump_price +
thrust_price +
powerplant_price
powerplant_price +
bridge_price +
stateroom_price
end

def subtotal_tonnage
Expand All @@ -208,7 +268,8 @@ def subtotal_tonnage
bay_tonnage +
barbette_tonnage +
fire_control +
turret_tonnage
turret_tonnage +
armor_tonnage
end

private
Expand All @@ -220,6 +281,11 @@ def check_drives
required_power = thrust > jumpdrive ? thrust : jumpdrive
self.power = required_power unless power > required_power
end
end
def check_armor
if armor_id && armor_rating.nil?
self.armor_rating = 1
end
end

end
11 changes: 8 additions & 3 deletions app/models/weapon.rb
Expand Up @@ -6,11 +6,16 @@ class Weapon
property :min_tech_level, Integer

property :turret, Boolean
property :bay, Boolean
property :barbette, Boolean
property :bay, Boolean

property :turret_price, Float
property :barbette_price, Float
property :bay_price_100, Float
property :bay_price_50, Float

property :created_at, DateTime
property :updated_at, DateTime
property :created_at, DateTime
property :updated_at, DateTime

has n, :bays
has n, :turrets
Expand Down
24 changes: 23 additions & 1 deletion app/views/ships/_form.html.haml
Expand Up @@ -6,7 +6,7 @@
.wide.left.first
%p
%label Description
= text_area :description
= text_area :description, :class => 'trigger'

#weapons.narrow.right.last
%h2 Weapons Systems
Expand Down Expand Up @@ -41,11 +41,33 @@
%label Maneuver Drive
%select.trigger{ :name => "ship[thrust]", :class => "input"}
= drive_select('thrust')
.verynarrow.left.first
%p
%label Armor Type
%select.trigger{ :name => "ship[armor_id]" }
= armor_select(@ship.tech_level)
.verynarrow.left.last
%p
%label Armor Rating
%select.trigger{ :name => "ship[armor_rating]" }
= armor_rating_select(@ship.tech_level)

#command.narrow.left.first
%h2 Command and Electronics
#crew.narrow.left.last
%h2 Crew
%p
Command Crew
= @ship.command_crew
%br
Engineering Crew
= @ship.engineering_crew
%br
Gunnery Crew
= @ship.gunnery_crew
%br
Service Crew
= @ship.service_crew
.edit
%p
%label Staterooms
Expand Down

0 comments on commit 6188189

Please sign in to comment.