Reworked gravity. added moons and stufftags/v0.0.6_dev
@@ -29,7 +29,10 @@ controls = { | |||||
reset = "-", | reset = "-", | ||||
down = ",", | down = ",", | ||||
up = "." | up = "." | ||||
} | |||||
}, | |||||
-- Special | |||||
special = "f" | |||||
}, | }, | ||||
-- Player Camera Controls: | -- Player Camera Controls: | ||||
@@ -1,7 +1,7 @@ | |||||
planetdata = { | planetdata = { | ||||
{ | { | ||||
x = 0, y = 0, | x = 0, y = 0, | ||||
r = 500000, m = 5e15, | |||||
r = 500000, m = 1e9, | |||||
xSpeed = 0, ySpeed = 0, | xSpeed = 0, ySpeed = 0, | ||||
name = "Testos", | name = "Testos", | ||||
colour = {42, 04, 20}, | colour = {42, 04, 20}, | ||||
@@ -9,11 +9,19 @@ planetdata = { | |||||
}, | }, | ||||
{ | { | ||||
x = 2000000, y = 0, | x = 2000000, y = 0, | ||||
r = 40000, m = 4e7, | |||||
xSpeed = 0, ySpeed = 12000, | |||||
r = 100000, m = 4e10, | |||||
xSpeed = 0, ySpeed = 50, | |||||
name = "Deez", | name = "Deez", | ||||
colour = {50, 50, 50}, | colour = {50, 50, 50}, | ||||
parent = 1 | parent = 1 | ||||
}, | |||||
{ | |||||
x = 2200000, y = 0, | |||||
r = 10000, m = 1e9, | |||||
xSpeed = 0, ySpeed = 100, | |||||
name = "Ligos", | |||||
colour = {10, 50, 20}, | |||||
parent = 2 | |||||
} | } | ||||
} | } | ||||
@@ -0,0 +1,19 @@ | |||||
-- This is completely temporary, THIS WILL CHANGE | |||||
starshipTypes = { | |||||
orbiter = { | |||||
name = "Classic Orbiter", | |||||
description = "Dolor fugiat irure sit aliqua labore. Culpa voluptate occaecat anim exercitation proident sint ex dolor. Officia in labore sint Lorem ea. Ad minim aliqua aliqua non commodo qui in ea sit excepteur excepteur qui.", | |||||
impacttolerance = 0.5, | |||||
mass = 10, | |||||
speed = 0.05, | |||||
specials = {"orbitSync"} | |||||
--TEXTURE HERE? | |||||
} | |||||
} | |||||
return starshipTypes | |||||
@@ -8,6 +8,7 @@ info = require "data/info" | |||||
controls = require "data/controls" | controls = require "data/controls" | ||||
settings = require "data/settings" | settings = require "data/settings" | ||||
texture = require "textures/textures" | texture = require "textures/textures" | ||||
starshipTypes = require "data/starshipTypes" | |||||
-- Game Source: | -- Game Source: | ||||
calc = require "src/calc" | calc = require "src/calc" | ||||
@@ -23,7 +23,7 @@ function love.load() | |||||
loadPlanets() | loadPlanets() | ||||
local spawnPlanet = planet[1] | local spawnPlanet = planet[1] | ||||
player = Player(spawnPlanet.x, spawnPlanet.y-spawnPlanet.r-1) | |||||
player = Player(spawnPlanet.x, spawnPlanet.y-spawnPlanet.r-1, "orbiter") | |||||
gui = Gui(1) | gui = Gui(1) | ||||
effects = {} | effects = {} | ||||
end | end | ||||
@@ -0,0 +1,20 @@ | |||||
-- THIS ENTIRE THING WILL NOT BE USED PROBABLY, JUST TESTING OUT POSSIBLE WAYS THIS COULD WORK | |||||
Abilities = {} | |||||
function Abilities.orbitSync() --Synchronise speed with closest orbit | |||||
end | |||||
function Abilities.update(dt) | |||||
for i, #player.abilities do | |||||
if player.abilities[i] == "orbitSync" then | |||||
Abilities.orbitSync() | |||||
end | |||||
end | |||||
end | |||||
@@ -9,6 +9,10 @@ function Planet:init(tempX, tempY, tempR, tempM, tempXSpeed, tempYSpeed, tempNam | |||||
self.xSpeed = 0 | self.xSpeed = 0 | ||||
self.ySpeed = 0 | self.ySpeed = 0 | ||||
-- Orbital speed: | |||||
self.orbitalX = 0 | |||||
self.orbitalY = 0 | |||||
-- Speed Change: (throttle 0 - 1; variable) (speed; constant (max speed change)) | -- Speed Change: (throttle 0 - 1; variable) (speed; constant (max speed change)) | ||||
self.throttle = 0.5 | self.throttle = 0.5 | ||||
self.speed = 0.05 | self.speed = 0.05 | ||||
@@ -39,8 +43,8 @@ end | |||||
-- FUNCTIONS | -- FUNCTIONS | ||||
function Planet:updatePosition() | function Planet:updatePosition() | ||||
self.x = self.x + self.xSpeed | |||||
self.y = self.y + self.ySpeed | |||||
self.x = self.x + self.xSpeed + self.orbitalX | |||||
self.y = self.y + self.ySpeed + self.orbitalY | |||||
debug("Updating position of planet " .. self.name .. ": " .. self.x .. " " .. self.y) | debug("Updating position of planet " .. self.name .. ": " .. self.x .. " " .. self.y) | ||||
end | end | ||||
@@ -49,10 +53,16 @@ function Planet:attract(dt) --Planet doing the attracting, divided in two parts | |||||
for i, child in ipairs(self.children) do | for i, child in ipairs(self.children) do | ||||
local grav = calc.gPull(self, child) | local grav = calc.gPull(self, child) | ||||
local dist = calc.distance(self.x, self.y, child.x, child.y) | local dist = calc.distance(self.x, self.y, child.x, child.y) | ||||
local pull = 20/dist * grav | |||||
child.xSpeed = child.xSpeed - (child.x - self.x)*pull | |||||
child.ySpeed = child.ySpeed - (child.y - self.y)*pull | |||||
-- Reworked planetary gravity, now works with multiple layers of parent-children. Also more realistc?? | |||||
local angle = math.atan((child.y-self.y)/(child.x-self.x)) | |||||
if self.x < child.x then | |||||
angle = angle - 3.14159 | |||||
end | |||||
child.orbitalX = self.xSpeed + self.orbitalX | |||||
child.orbitalY = self.ySpeed + self.orbitalY | |||||
child.xSpeed = child.xSpeed + grav/child.m*math.cos(angle)*1e9 | |||||
child.ySpeed = child.ySpeed + grav/child.m*math.sin(angle)*1e9 | |||||
end | end | ||||
--Attracting the player | --Attracting the player | ||||
@@ -1,6 +1,6 @@ | |||||
Player = Class {} | Player = Class {} | ||||
function Player:init(tempX, tempY) | |||||
function Player:init(tempX, tempY, tempT) | |||||
-- Position: (variable) | -- Position: (variable) | ||||
self.x = tempX | self.x = tempX | ||||
self.y = tempY | self.y = tempY | ||||
@@ -15,20 +15,22 @@ function Player:init(tempX, tempY) | |||||
-- Speed Change: (throttle 0 - 1; variable) (speed; constant (max speed change)) | -- Speed Change: (throttle 0 - 1; variable) (speed; constant (max speed change)) | ||||
self.throttle = 0.5 | self.throttle = 0.5 | ||||
self.speed = 0.05 | |||||
self.speed = starshipTypes[tempT].speed | |||||
-- Landings: | -- Landings: | ||||
self.impacttolerance = 0.5 | |||||
self.impacttolerance = starshipTypes[tempT].impacttolerance | |||||
self.landingspeed = 0 | self.landingspeed = 0 | ||||
-- Mass: | -- Mass: | ||||
self.m = 10 | |||||
self.m = starshipTypes[tempT].mass | |||||
-- Rotation: | -- Rotation: | ||||
self.angle = calc.pi/2 | self.angle = calc.pi/2 | ||||
-- Status: | -- Status: | ||||
self.exploding = false | self.exploding = false | ||||
--TEXTURE HERE? | |||||
end | end | ||||