Просмотр исходного кода

Framerate limited

tags/earlygalaxy
Madiwka3 4 лет назад
Родитель
Сommit
d049391009
7 измененных файлов: 143 добавлений и 13 удалений
  1. +5
    -1
      animator.lua
  2. +27
    -0
      explosion.lua
  3. +8
    -3
      main.lua
  4. +0
    -1
      src/AI.lua
  5. +31
    -8
      src/baseGame.lua
  6. +2
    -0
      src/dependencies.lua
  7. +70
    -0
      tick.lua

+ 5
- 1
animator.lua Просмотреть файл

@@ -94,4 +94,8 @@ function staticanimator()
love.graphics.setColor(40/255,40/255,40/255,1)
love.graphics.circle("fill", player2.x, player2.y , diseffectRange[1]*100, 100)
end
end
end
function animateExplosion(x, y, v, color)
love.graphics.setColor(color)
love.graphics.circle("fill", x, y, explosionRange * v, 100)
end

+ 27
- 0
explosion.lua Просмотреть файл

@@ -0,0 +1,27 @@
explosion = Class{}

function explosion:init(x, y, v, color)
self.color = color
self.x = x
self.y = y
self.v = v
self.range = 0
self.killed = false
print(self.i)
end

function explosion:update(dt)
self.range = self.range + dt * 24
if self.range * self.v > VIRTUAL_WIDTH * 2 then
print("killing myself with range" .. self.range)
self.killed = true
end
end



function explosion:render()
print("rendering myself" .. self.x .. " " .. self.y .. " " .. self.range .. " " .. self.v)
love.graphics.setColor(color)
love.graphics.circle("fill", self.x, self.y, self.range * self.v, 100)
end

+ 8
- 3
main.lua Просмотреть файл

@@ -15,7 +15,7 @@ doubleclick1 = false
doubleclick2 = false
hold1 = false
hold2 = false
debug = false
debug = true
paused = false
androidButtons = {}
pauseButtons = {}
@@ -170,6 +170,8 @@ function controlChanger()
end
function love.load()
love.keyboard.setKeyRepeat(true)
tick.framerate = 60
simpleScale.setWindow(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT)
configfile = io.open("config.lua", "r")
configsave = io.open("config.lua", "w")
@@ -871,6 +873,7 @@ function love.load()
player3 = paddle(5000, 5000, 10, 100)
player4 = paddle(5000, 5000, 10, 100)
ball = {}
explosions = {}
ball[1] = eball(VIRTUAL_WIDTH / 2, VIRTUAL_HEIGHT / 2 - 2, 16, 16)
ball[2] = eball(VIRTUAL_WIDTH / 1.9, VIRTUAL_HEIGHT / 2 - 2, 16, 16)
ball[3] = eball(VIRTUAL_WIDTH / 1.8, VIRTUAL_HEIGHT / 2 - 2, 16, 16)
@@ -900,7 +903,7 @@ function startShake(duration, magnitude)
t, shakeDuration, shakeMagnitude = 0, duration or 1, magnitude or 5
end
function displayFPS()
--love.window.setTitle(love.timer.getFPS())
love.window.setTitle(love.timer.getFPS())
--love.window.setTitle(globalState .. " " .. gameState .. " " .. paddle_SPEED .. " " .. p1bonus .. " " .. player1.dy)
if love.keyboard.isDown("space") then
player1nukescore = 200
@@ -918,7 +921,9 @@ end

function love.update(dt)
--print("IMPORTANT!!!!!" .. globalState .. gameState)
for i, explosion in ipairs(explosions) do
explosion:update(dt)
end
staticanimatorcounter(dt)
player1.goal = -1
player2.goal = -1


+ 0
- 1
src/AI.lua Просмотреть файл

@@ -1,5 +1,4 @@
function AI(target, ballCnt, diff)
print("AI RUNNING")
currentTarget = evaluateClosestBall(target);
--print("CLOSEST TARGET IS " .. currentTarget)
if diff < 1200 then


+ 31
- 8
src/baseGame.lua Просмотреть файл

@@ -11,7 +11,7 @@ function basegame(dt)
end
speedControl()
balancer()
effectControl()
if t < shakeDuration then
t = t + dt
end
@@ -40,7 +40,7 @@ function basegame(dt)
--print(areanuclear .. striken .. player1score .. player2score)
for i = 1, maxBalls do
if rules("p1hit", i) then
print("inserted")
if (areanuclear == 0 and striken == 1 and (player1score > ptw*0.8 or player2score > ptw*0.8)) then
--print("Calling animation")
--print("AREA NUCLEAR?" .. areanuclear)
@@ -370,7 +370,7 @@ end

function goalManager()
for i = 1, maxBalls do
if (rules("p1miss", i)) then
if (rules("p1miss", i)) then
ball[i].disabled = true
ball[i].x = 2000
@@ -587,6 +587,8 @@ function nuclearDraw()
nuclearanimation / 3,
nuclearanimation / 3,
nuclearanimation / 3


for i = 1, maxBalls do
love.graphics.setColor(nuclearanimation / 3, nuclearanimation / 3, nuclearanimation / 3, 1)
ball[i]:render("controlled")
@@ -630,6 +632,10 @@ function normalDraw()
else
love.graphics.clear(40 / 255, 40 / 255, 40 / 255, 1)
end
for i, explosion in ipairs(explosions) do
explosion:render()
print("exploding")
end
staticanimator()

if MAP_TYPE == 1 then
@@ -747,7 +753,6 @@ function menuDraw()
)
)
end
if not isAndroid then
table.insert(
IPselect,
newButton(
@@ -761,7 +766,6 @@ function menuDraw()
end
)
)
end
table.insert(
IPselect,
newButton(
@@ -848,6 +852,7 @@ function menuDraw()
end
function baseDraw()
love.graphics.clear(40 / 255, 40 / 255, 40 / 255, 1)

if shakeDuration > t then
local dx = love.math.random(-shakeMagnitude, shakeMagnitude)
@@ -867,6 +872,7 @@ function baseDraw()
menuDraw()
end
end

if globalState == 'base' or globalState == 'reverse' or globalState == 'nettest' or globalState == 'clienttest' then

love.graphics.setFont(smallfont)
@@ -892,6 +898,7 @@ function baseDraw()
mymenu:butt(gameState, VIRTUAL_WIDTH, VIRTUAL_HEIGHT, doneButtons, sounds, "middle")
love.keyboard.mouseisReleased = false
end

end
function androidDraw()
--HOME BUTTON HERE
@@ -1107,6 +1114,7 @@ function rules(query, i)
end
if query == "p1miss" then
if gameMode == "reversegame" then
return ball[i]:collides(player1)
elseif gameMode == "normal" then
return ball[i].x < -10 and ball[i].disabled == false
@@ -1132,7 +1140,7 @@ function clientsBaseGame(dt)
end
speedControl()
balancer()
effectControl()
if t < shakeDuration then
t = t + dt
end
@@ -1163,7 +1171,7 @@ function clientsBaseGame(dt)
--print(areanuclear .. striken .. player1score .. player2score)
for i = 1, maxBalls do
if rules("p1hit", i) then
if (areanuclear == 0 and striken == 1 and (player1score > ptw*0.8 or player2score > ptw*0.8)) then
--print("Calling animation")
superanimator("tensehit", 1)
@@ -1471,7 +1479,7 @@ function menuDemo(dt)
AI(player1, maxBalls, 1300)
player2.goal = 360
end
print(neededTarget, neededTarget1)
--print(neededTarget, neededTarget1)
--print("menu demo active")
ball[1]:update(dt)
player1:update(dt)
@@ -1568,4 +1576,19 @@ function menuDemo(dt)
ball[1].dy = -ball[1].dy
end
end
function effectControl()
if player1score > 0.8 * ptw or player2score > 0.8 * ptw then
for i = 1, maxBalls do
if math.abs(ball[i].x - VIRTUAL_WIDTH/2) < 10 and #explosions < 1 then
table.insert(explosions, explosion(love.math.random(100, VIRTUAL_WIDTH-100), love.math.random(player1.y, player2.y), 100, {player1.y/2.81/255,player2.y/2.81/255,ball[1].y/2.81/255,0.4}))
end
end
end
for i, explosion in ipairs(explosions) do
if explosion.killed then
table.remove(explosions, i)
print("buried the body")
end
end
end

+ 2
- 0
src/dependencies.lua Просмотреть файл

@@ -13,5 +13,7 @@ require 'src/constantvars'
require 'src/menus'
require 'src/AI'
require 'src/reverseGame'
require 'explosion'
tick = require 'tick'
utf8 = require("utf8")
serialize = require 'ser'

+ 70
- 0
tick.lua Просмотреть файл

@@ -0,0 +1,70 @@
-- tick
-- https://github.com/bjornbytes/tick
-- MIT License

local tick = {
framerate = nil,
rate = .03,
timescale = 1,
sleep = .001,
dt = 0,
accum = 0,
tick = 1,
frame = 1
}
local timer = love.timer
local graphics = love.graphics
love.run = function()
if not timer then
error('love.timer is required for tick')
end
if love.load then love.load(love.arg.parseGameArguments(arg), arg) end
timer.step()
local lastframe = 0
love.update(0)
return function()
tick.dt = timer.step() * tick.timescale
tick.accum = tick.accum + tick.dt
while tick.accum >= tick.rate do
tick.accum = tick.accum - tick.rate
if love.event then
love.event.pump()
for name, a, b, c, d, e, f in love.event.poll() do
if name == 'quit' then
if not love.quit or not love.quit() then
return a or 0
end
end
love.handlers[name](a, b, c, d, e, f)
end
end
tick.tick = tick.tick + 1
if love.update then love.update(tick.rate) end
end
while tick.framerate and timer.getTime() - lastframe < 1 / tick.framerate do
timer.sleep(.0005)
end
lastframe = timer.getTime()
if graphics and graphics.isActive() then
graphics.origin()
graphics.clear(graphics.getBackgroundColor())
tick.frame = tick.frame + 1
if love.draw then love.draw() end
graphics.present()
end
timer.sleep(tick.sleep)
end
end
return tick

Загрузка…
Отмена
Сохранить