@@ -30,13 +30,14 @@ hitNum = {}
hitNum[1] = 0
hitNum[2] = 0
hitNum[3] = 0
confirmation = "disconnected "
confirmation = "N "
hitNum[4] = 0
p1bonus = 0
p2bonus = 0
hitNum[5] = 0
hitNum[6] = 0
GREEN = 255
IP = '45.76.95.31'
BLUE = 255
updateTEXT = "Chalkboard Update"
maxBalls = 1
@@ -125,6 +126,7 @@ function newWall(wallx, wally, wallwidth, wallheight)
end
speedParameters = {}
buttons = {}
IPselect = {}
difbuttons = {}
settings = {}
walls = {}
@@ -140,6 +142,7 @@ function controlChanger()
end
end
function love.load()
love.keyboard.setKeyRepeat(true)
simpleScale.setWindow(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT)
configfile = io.open("config.lua", "r")
configsave = io.open("config.lua", "w")
@@ -196,7 +199,16 @@ function love.load()
table.insert(
buttons,
newButton(
"Online Test",
"Online",
function()
gameState = "chooseIP"
end
)
)
table.insert(
IPselect,
newButton(
"Host",
function()
globalState = "nettest"
AGAINST_AI = 0
@@ -205,9 +217,9 @@ function love.load()
)
)
table.insert(
buttons ,
IPselect ,
newButton(
"Client T est",
"Gu est",
function()
globalState = "clienttest"
AGAINST_AI = 0
@@ -700,7 +712,7 @@ function love.update(dt)
print("IMPORTANT!!!!!" .. globalState .. gameState)
staticanimatorcounter(dt)
musicController('norm', 1)
ts = ts + dt
if debug then
displayFPS()
end
@@ -712,7 +724,11 @@ function love.update(dt)
end
if globalState == "nettest" then
basegame(dt)
print("Confcode: " .. confirmation)
ts = ts + dt
if confirmation == "N" then
basegame(dt)
end
if ts > updaterate then
nettest(dt)
ts = ts - updaterate
@@ -720,7 +736,8 @@ function love.update(dt)
end
if globalState == "clienttest" then
if confirmation ~= "disconnected" then
ts = ts + dt
if confirmation == "N" then
lastSentKeyP1 = lastSentKeyClient
clientsBaseGame(dt)
end
@@ -734,10 +751,16 @@ function love.update(dt)
end
serverinit = false
clientinit = false
function love.textinput(t)
if gameState == "chooseIP" then
IP = IP .. t
end
end
function nettest(dt)
if serverinit == false then
local socket = require "socket"
local address, port = '45.76.95.31', 12345
local address, port = IP, 12345
print(address)
udp = socket.udp()
udp:setpeername(address, port)
udp:settimeout(0)
@@ -745,39 +768,59 @@ function nettest(dt)
end
for i = 1, maxBalls do
print (tostring(ball[i].dy))
udp:send(tostring(lastSentKey) ..'|'.. tostring(ball[i].dy) .. '|' .. tostring(player2.y) .. '|' .. tostring(player1.y) .. '|' .. tostring(player1score) .. '|' .. tostring(player2score) .. '|' .. tostring(player1nukescore) .. '|' .. tostring(player2nukescore) .. "|confirmed|" .. tostring(ball[i].x) .. '|' .. tostring(ball[i].y) .. '|' .. gameState .. '|' .. tostring(ball[i].dx))
print("SENT: " .. lastSentKey)
udp:send(tostring(lastSentKey) ..'|'.. tostring(ball[i].dy) .. '|' .. tostring(player2.y) .. '|' .. tostring(player1.y) .. '|' .. tostring(player1score) .. '|' .. tostring(player2score) .. '|' .. tostring(player1nukescore) .. '|' .. tostring(player2nukescore) .. tostring(ball[i].x) .. '|' .. tostring(ball[i].y) .. '|' .. gameState .. '|' .. tostring(ball[i].dx) .. "|HOST" )
print("SENT: " .. lastSentKey .. " TO ADDRESS: " .. IP )
end
data = udp:receive()
if data then
local p = split(data, '|')
if data then
confirmation = "N"
local p = split(data, '|')
if p[3] ~= "CLIENT" then
confirmation = "U"
end
if tonumber(p[4]) > 5 then
confirmation = "L"
end
lastSentKeyClient = p[1]
end
player2.y = tonumber(p[2])
else
confirmation = "D"
print("NO PLAYER 2!!")
end
end
function clienttest(dt)
if clientinit == false then
local socket = require "socket"
local address, port = '45.76.95.31', 12345
local address, port = IP, 12345
udp = socket.udp()
udp:setpeername(address, port)
udp:settimeout(0)
clientinit = true
end
udp:send(tostring(lastSentKey))
print("SENT TO SERVER:" .. lastSentKey)
udp:send(tostring(lastSentKey) .. '|' .. tostring(player2.y) .. "|CLIENT" )
print("SENT TO SERVER:" .. lastSentKey .. " AT ADDRESS: " .. IP )
data = udp:receive()
--print(data)
if data then
if data then
confirmation = "N"
local p = split(data, '|')
for i = 1, maxBalls do
local die = tonumber(p[2])
print(p[2])
print(p[2] + 0)
print(tonumber(p[11]))
lastSentKeyClient, ball[i].dy, player2.y, player1.y, player1score, player2score, player1nukescore, player2nukescore, confirmation, ball[i].x, ball[i].y, gameState, ball[i].dx = p[1], die, tonumber(p[3]), tonumber(p[4]), tonumber(p[5]), tonumber(p[6]), tonumber(p[7]), tonumber(p[8]), p[9], tonumber(p[10]), tonumber(p[11]), p[12], tonumber(p[13])
if p[13] then
if p[13] ~= "HOST" then
confirmation = "U"
end
if tonumber(p[14]) > 5 then
confirmation = "L"
end
for i = 1, maxBalls do
local die = tonumber(p[2])
lastSentKeyClient, ball[i].dy, player2.y, player1.y, player1score, player2score, player1nukescore, player2nukescore, ball[i].x, ball[i].y, gameState, ball[i].dx = p[1], die, tonumber(p[3]), tonumber(p[4]), tonumber(p[5]), tonumber(p[6]), tonumber(p[7]), tonumber(p[8]), tonumber(p[9]), tonumber(p[10]), p[11], tonumber(p[12])
end
end
else
confirmation = "disconnected"
confirmation = "D "
end
print(confirmation .. " recieved " .. lastSentKeyClient .. " AND ")
@@ -902,6 +945,18 @@ function dangerChecker() --CHECK IF CONTROLS ARE DUPLICATING
end
function love.keypressed(key)
lastSentKey = key
if gameState == "chooseIP" then
if key == "backspace" then
-- get the byte offset to the last UTF-8 character in the string.
local byteoffset = utf8.offset(IP, -1)
if byteoffset then
-- remove the last UTF-8 character.
-- string.sub operates on bytes rather than UTF-8 characters, so we couldn't do string.sub(text, 1, -2).
IP = string.sub(IP, 1, byteoffset - 1)
end
end
end
if gameState == "assign" then
if (req == "p1up") then
p1control.up = key
@@ -1254,8 +1309,21 @@ end
function love.draw()
simpleScale.set()
baseDraw()
if (globalState == "nettest" or globalState == "clienttest") and confirmation == "D" then
love.graphics.clear(50 / 255, 50 / 255, 50 / 255, 255)
love.graphics.printf("WAIT FOR PLAYER 2", 0, VIRTUAL_HEIGHT / 2, VIRTUAL_WIDTH, "center")
end
if (globalState == "nettest" or globalState == "clienttest") and confirmation == "U" then
love.graphics.clear(50 / 255, 50 / 255, 50 / 255, 255)
love.graphics.printf("LOBBY FULL OR WRONG MODE CHOSEN", 0, VIRTUAL_HEIGHT / 2, VIRTUAL_WIDTH, "center")
end
if (globalState == "nettest" or globalState == "clienttest") and confirmation == "L" then
love.graphics.clear(50 / 255, 50 / 255, 50 / 255, 255)
love.graphics.printf("POOR CONNECTION TO SERVER", 0, VIRTUAL_HEIGHT / 2, VIRTUAL_WIDTH, "center")
end
simpleScale.unSet()
end