/traderous

To get this branch, use:
bzr branch http://9ix.org/bzr/traderous

« back to all changes in this revision

Viewing changes to main.lua

  • Committer: Josh C
  • Date: 2013-06-25 17:14:14 UTC
  • Revision ID: josh@9ix.org-20130625171414-khfaax8xfufz0mml
respawn enemies

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
DEBUG = true
3
3
 
4
4
require 'zoetrope'
5
 
--__ = require 'underscore'
6
5
vector = require 'vector'
 
6
--inspect = require 'inspect'
7
7
 
8
8
require 'group'
9
9
 
10
10
require 'version'
11
11
require 'wrap_tile'
 
12
require 'mirror'
12
13
require 'player'
13
14
require 'enemy'
14
15
require 'cursor'
15
16
require 'bullet'
16
17
require 'rock'
 
18
require 'boom'
 
19
require 'planet'
 
20
require 'trade_view'
 
21
require 'shield'
 
22
require 'pause_view'
17
23
 
18
24
util = {
19
25
   signOf = function(value)
22
28
               else
23
29
                  return -1
24
30
               end
25
 
            end
 
31
            end,
26
32
}
27
33
 
28
34
GameView = View:extend {
29
 
   lastRock = 0,
30
 
   rockInterval = 1,
31
 
   gameStart = 0,
32
35
   onNew = function (self)
33
 
              -- for x = 1,30 do
34
 
              --    for y = 1,30 do
35
 
              --       self:add(Fill:new{x=x*400, y=y*400,
36
 
              --                         width = 32, height = 32,
37
 
              --                         fill = {0,0,255}
38
 
              --                      })
39
 
              --    end
40
 
              -- end
 
36
              the.storage = Storage:new{filename = 'scores.lua'}
 
37
              the.storage:load()
 
38
              --if not the.storage.data.highScore then
 
39
              --   print('initializing storage')
 
40
              --   the.storage.data = {highScore = 0}
 
41
              --end
 
42
 
 
43
              the.bullets = Group:new()
 
44
              the.interface = Group:new()
 
45
              the.planets = Group:new()
 
46
              the.indicators = Group:new()
 
47
              the.enemies = Group:new()
41
48
 
42
49
              the.bg = Tile:new{
43
50
                 image = 'data/stars3.png',
44
 
                 -- 1366x768 * 3
45
 
                 width = 4098,
46
 
                 height = 2304
 
51
                 width = 27320,
 
52
                 height = 15360
47
53
              }
48
54
              self:add(the.bg)
49
55
 
 
56
              self:add(the.planets)
 
57
 
50
58
              --the.player = CrystalPlayer:new{x=400,y=300}
51
 
              the.player = SpacePlayer:new{x=1366,y=768}
 
59
              the.player = SpacePlayer:new{x=the.bg.width / 2, y=the.bg.height / 2}
52
60
              self:add(the.player)
53
 
 
54
 
              self:add(Enemy:new{x=400, y=300})
 
61
              self:add(the.player.thrust)
 
62
              self:add(the.player.shield)
 
63
 
 
64
              self:add(the.enemies)
 
65
 
 
66
              for _ = 1, 20 do
 
67
                 local e = Enemy:new{x = math.random(the.bg.width),
 
68
                                     y = math.random(the.bg.height)}
 
69
                 --local e = Enemy:new{x=the.bg.width / 2, y=the.bg.height / 2}
 
70
                 the.enemies:add(e)
 
71
                 self:add(e.thrust) -- why doesn't this work in Enemy.new?
 
72
                 self:add(e.shield)
 
73
              end
 
74
 
 
75
              self:add(the.bullets)
 
76
              self:add(the.indicators)
 
77
              self:add(the.interface)
 
78
 
 
79
              for _ = 1, math.random(3, 6) do
 
80
                 local planet = Planet:new{
 
81
                    x = math.random(the.app.width / 2,
 
82
                                    the.bg.width - the.app.width / 2),
 
83
                    y = math.random(the.app.height / 2,
 
84
                                    the.bg.height - the.app.height / 2),
 
85
                    rotation = math.random() * math.pi
 
86
                 }
 
87
                 the.planets:add(planet)
 
88
              end
55
89
 
56
90
              the.cursor = Cursor:new()
57
91
              self:add(the.cursor)
58
92
 
 
93
              the.over = Text:new{
 
94
                 y = the.app.height / 2,
 
95
                 width = the.app.width,
 
96
                 align = 'center',
 
97
                 font = 25,
 
98
                 text = "Game Over",
 
99
                 visible = false
 
100
              }
 
101
              the.interface:add(the.over)
 
102
 
 
103
 
 
104
              the.instructions = Text:new{
 
105
                 y = the.app.height / 2 + 32,
 
106
                 width = the.app.width,
 
107
                 align = 'center',
 
108
                 font = 12,
 
109
                 text = "Press Enter to start a new game\nPress Q to quit",
 
110
                 visible = false
 
111
              }
 
112
              the.interface:add(the.instructions)
 
113
 
59
114
              love.mouse.setGrab(true)
60
115
              love.mouse.setVisible(false)
 
116
              love.mouse.setPosition(the.app.width / 2, the.app.height / 2)
61
117
 
62
 
              --self:loadLayers('data/map.lua')
63
118
              self.focus = the.player
64
 
              --self:clampTo(self.map)
65
 
 
66
 
              self.gameStart = love.timer.getTime()
67
119
           end,
68
120
   onUpdate = function(self, dt)
69
 
                 if love.timer.getTime() > self.lastRock + self.rockInterval then
70
 
                    local rock = Rock:new{
71
 
                       x = math.random(the.bg.width),
72
 
                       y = math.random(the.bg.height),
73
 
                       velocity = {
74
 
                          x = math.random(-300, 300),
75
 
                          y = math.random(-300, 300),
76
 
                          rotation = math.random(-7, 7)
77
 
                       },
78
 
                       scale = math.random() + 0.5
79
 
                    }
80
 
                    self:add(rock)
 
121
                 if the.keys:justPressed('escape') then
 
122
                    PauseView:new():activate()
 
123
                 end
81
124
 
82
 
                    self.lastRock = love.timer.getTime()
83
 
                 end
 
125
                 the.bullets:collide(the.planets)
 
126
                 the.bullets:collide(the.player)
 
127
                 the.bullets:collide(the.enemies)
84
128
              end,
 
129
   onEndFrame = function(self)
 
130
                   the.interface.translate.x = the.player.x - the.app.width / 2 + the.player.width / 2
 
131
                   the.interface.translate.y = the.player.y - the.app.height / 2 + the.player.height / 2
 
132
                end,
85
133
   draw = function (self, x, y)
86
134
             View.draw(self, x, y)
87
 
             love.graphics.print('FPS:' .. love.timer.getFPS(), 20, 20)
88
 
          end
 
135
             --love.graphics.print('FPS:' .. love.timer.getFPS(), 20, 20)
 
136
          end,
89
137
}
90
138
 
91
139
MenuScreen = View:extend {
109
157
              math.randomseed(os.time())
110
158
 
111
159
              self.view = GameView:new()
 
160
 
112
161
              if DEBUG then
113
162
                 self.console:watch('VERSION', 'VERSION')
114
163
                 self.console:watch('updateTook', 'the.updateTook')
116
165
                 self.console:watch('the.player.y', 'the.player.y')
117
166
                 self.console:watch('the.app.width', 'the.app.width')
118
167
                 self.console:watch('the.app.height', 'the.app.height')
 
168
                 self.console:watch('num mirrors', '#the.mirrors.sprites')
 
169
                 self.console:watch('num rocks', '#the.rocks.sprites')
 
170
                 self.console:watch('num planets', '#the.planets.sprites')
 
171
                 self.console:watch('num enemies', 'the.enemies:count()')
119
172
                 --self.console:watch('drawTook', 'the.drawTook')
120
173
 
121
174
                 -- back off that dark overlay a bit
123
176
              end
124
177
           end,
125
178
   onUpdate = function (self, dt)
126
 
                 if the.keys:justPressed('escape') then
127
 
                    self.quit()
 
179
                 if not (DEBUG and the.console.visible) then
 
180
                    if the.keys:justPressed('return') and the.keys:pressed('alt') then
 
181
                       love.graphics.toggleFullscreen()
 
182
                    elseif the.keys:justPressed('f1') then
 
183
                       local ss = love.graphics.newScreenshot()
 
184
                       ss:encode('screenshot-' ..love.timer.getTime()..'.png')
 
185
                    elseif the.keys:justPressed('f11') then
 
186
                       love.graphics.toggleFullscreen()
 
187
                    end
128
188
                 end
129
189
              end,
130
190
   update = function (self, dt)
135
195
               end
136
196
            end
137
197
}
 
198
 
 
199
realRun = love.run
 
200
function love.run()
 
201
   -- should fail silently if it can't go to fullscreen...
 
202
   love.graphics.toggleFullscreen()
 
203
 
 
204
   realRun()
 
205
end
 
 
b'\\ No newline at end of file'