comparison gamelib/schematics.py @ 146:2587f8c34f84

Science juggling and visualization improvements.
author Jeremy Thurgood <firxen@gmail.com>
date Fri, 11 May 2012 16:20:49 +0200
parents 53277724645b
children 3abb05f7e720
comparison
equal deleted inserted replaced
145:53277724645b 146:2587f8c34f84
15 'DOOMSDAY_DEVICE', 15 'DOOMSDAY_DEVICE',
16 'PATHOGEN', 16 'PATHOGEN',
17 'MIND_CONTROL', 17 'MIND_CONTROL',
18 'BEAST', 18 'BEAST',
19 'AQUATIC', 19 'AQUATIC',
20 'SPY', 20 'INTELLIGENCE',
21 'AI', 21 'AI',
22 ) 22 )
23 23
24 24
25 class Schematic(Science): 25 class Schematic(Science):
32 CATEGORIES = () 32 CATEGORIES = ()
33 33
34 # Costs 34 # Costs
35 UPGRADE_REQUIREMENT = 1 35 UPGRADE_REQUIREMENT = 1
36 COST = None 36 COST = None
37 MAX_UPGRADE = 5
37 38
38 # Power and reliability 39 # Power and reliability
39 PROTOTYPE_RELIABILITY = 0.4 40 PROTOTYPE_RELIABILITY = 0.4
40 PRODUCTION_RELIABILITY = 0.8 41 PRODUCTION_RELIABILITY = 0.8
41 BASE_POWER = None 42 BASE_POWER = None
43 44
44 # FIXME: Icons for equipment. 45 # FIXME: Icons for equipment.
45 IMAGE_NAME = "physics" 46 IMAGE_NAME = "physics"
46 47
47 def can_spend(self, lab, spend): 48 def can_spend(self, lab, spend):
48 extra = self.UPGRADE_REQUIREMENT * self.points + spend 49 if self.points + spend > self.MAX_UPGRADE:
50 return False
51 extra = self.UPGRADE_REQUIREMENT * (self.points + spend)
49 return lab.meet_requirements(self, extra) 52 return lab.meet_requirements(self, extra)
50 53
51 def is_a(self, category): 54 def is_a(self, category):
52 return category in self.CATEGORIES 55 return category in self.CATEGORIES
53 56
75 NAME = "machine gun" 78 NAME = "machine gun"
76 COST = 100 79 COST = 100
77 CATEGORIES = (cat.HAND_WEAPON,) 80 CATEGORIES = (cat.HAND_WEAPON,)
78 STARTING_PRODUCT = True 81 STARTING_PRODUCT = True
79 82
83 BASE_POWER = 10
84 PRODUCTION_RELIABILITY = 1.0
85
80 def __init__(self, points=0): 86 def __init__(self, points=0):
81 self.points = 1 87 self.points = 1
82
83 def spend_point(self):
84 raise NotImplementedError()
85
86 def can_spend(self, lab, spend):
87 return False
88 88
89 89
90 class LightningGun(Schematic): 90 class LightningGun(Schematic):
91 NAME = "lightning gun" 91 NAME = "lightning gun"
92 COST = 300 92 COST = 300
93 CATEGORIES = (cat.HAND_WEAPON,) 93 CATEGORIES = (cat.HAND_WEAPON,)
94 PREREQUISITES = ( 94 PREREQUISITES = (
95 (research.Electrickery, 1), 95 (research.Electrickery, 1),
96 ) 96 )
97 97
98 BASE_POWER = 10
99
98 100
99 class TeslaTank(Schematic): 101 class TeslaTank(Schematic):
100 NAME = "tesla tank" 102 NAME = "tesla tank"
101 COST = 1000 103 COST = 40000
102 CATEGORIES = (cat.VEHICLE,) 104 CATEGORIES = (cat.VEHICLE,)
103 PREREQUISITES = ( 105 PREREQUISITES = (
104 (research.Electrickery, 3), 106 (research.Electrickery, 5),
105 ) 107 (research.Robotics, 1),
108 )
109
110 BASE_POWER = 100
111 POWER_INCREMENT = 10
106 112
107 113
108 class DoomsdayVirus(Schematic): 114 class DoomsdayVirus(Schematic):
109 NAME = "doomsday virus" 115 NAME = "doomsday virus"
110 COST = 100000 116 COST = 100000
141 (research.MarineBiology, 10), 147 (research.MarineBiology, 10),
142 (research.Lasers, 7), 148 (research.Lasers, 7),
143 ) 149 )
144 150
145 151
152 class GiantRobot(Schematic):
153 NAME = "giant robot"
154 COST = 2500000
155 CATEGORIES = (cat.DOOMSDAY_DEVICE, cat.AI)
156 PREREQUISITES = (
157 (research.Robotics, 15),
158 (research.ArtificialIntelligence, 10),
159 )
160
161
162 class ObservationDrone(Schematic):
163 NAME = "observation drone"
164 COST = 6000
165 CATEGORIES = (cat.INTELLIGENCE,)
166 PREREQUISITES = (
167 (research.Robotics, 3),
168 )
169
170
171 class SpySatellite(Schematic):
172 NAME = "spy satellite"
173 COST = 100000
174 CATEGORIES = (cat.INTELLIGENCE,)
175 PREREQUISITES = (
176 (research.Rocketry, 5),
177 (research.Space, 1),
178 )
179
180
146 class OrbitalLaserPlatform(Schematic): 181 class OrbitalLaserPlatform(Schematic):
147 NAME = "An Orbital Laser Platform" 182 NAME = "orbital laser platform"
148 COST = 10000000 183 COST = 10000000
149 CATEGORIES = (cat.DOOMSDAY_DEVICE,) 184 CATEGORIES = (cat.DOOMSDAY_DEVICE,)
150 PREREQUISITES = ( 185 PREREQUISITES = (
151 (research.Lasers, 5), 186 (SpySatellite, 3),
152 (research.Space, 2), 187 (research.Lasers, 15),
153 ) 188 (research.Space, 5),
154 189 )
155 190
156 class GiantRobot(Schematic): 191
157 NAME = "A very large robot" 192 class TacticalAI(Schematic):
158 COST = 1000000 193 NAME = "tactical AI"
159 CATEGORIES = (cat.DOOMSDAY_DEVICE,)
160 PREREQUISITES = (
161 (research.Robotics, 5),
162 (research.ArtificialIntelligence, 2),
163 )
164
165
166 class SpySattelite(Schematic):
167 NAME = "A small spy sattelite"
168 COST = 10000 194 COST = 10000
169 CATEGORIES = (cat.SPY,) 195 CATEGORIES = (cat.AI, cat.INTELLIGENCE)
170 PREREQUISITES = ( 196 PREREQUISITES = (
171 (research.Space, 1), 197 (research.ArtificialIntelligence, 3),
172 )
173
174
175 class ComputerAI(Schematic):
176 NAME = "AI Assistant"
177 COST = 10000
178 CATEGORIES = (cat.AI,)
179 PREREQUISITES = (
180 (research.ArtificialIntelligence, 1),
181 ) 198 )
182 199
183 200
184 class LaserGun(Schematic): 201 class LaserGun(Schematic):
185 NAME = "Laser Gun" 202 NAME = "Laser Gun"
186 COST = 300 203 COST = 300
187 CATEGORIES = (cat.HAND_WEAPON,) 204 CATEGORIES = (cat.HAND_WEAPON,)
188 PREREQUISITES = ( 205 PREREQUISITES = (
189 (research.Lasers, 1), 206 (research.Lasers, 2),
190 ) 207 )