Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
SuperErnD committed Jul 26, 2024
1 parent 5d5e919 commit 8094142
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 10 deletions.
2 changes: 1 addition & 1 deletion api/src/main.v
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ fn main() {
saver: saver
}

for s in conf.value('game.servers').array() {
for s in conf.value('game.server').array() {
app.game_servers << s.string()
}
app.private_token_key = conf.value('game.private_token_key').string()
Expand Down
20 changes: 20 additions & 0 deletions client/src/network/api.v
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,26 @@ pub fn (mut api API) login_via_auth_token(auth_token string) ! {

if response.status_code != 200 {
return error("Token is not valid seems")
} else {
// now we should write token!
api.auth_token = auth_token
}
}

// get connection token
pub fn (mut api API) connect() !string {
if api.auth_token == '' {
return error("no valid token")
}

mut response := http.fetch(
url: "${api.api_url}/initiate_connect",
header: http.new_header(key: .authorization, value: api.auth_token)
)!

if response.status_code != 200 {
return error("something went wrong!")
} else {
return response.body
}
}
54 changes: 54 additions & 0 deletions client/src/network/manager.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
module network

import eventbus
import superernd.cn

pub const gmanager = create_manager()

fn create_manager() &NetworkManager {
mut nm := NetworkManager{}
return &nm
}

@[heap]
pub struct NetworkManager {
pub mut:
current_active_connection cn.Client = cn.Client{}
eb eventbus.EventBus[string] = eventbus.new[string]()
}

pub fn (mut nm NetworkManager) connect_handler(receiver voidptr, args voidptr, sender voidptr) {
if nm.eb.subscriber.is_subscribed("connect") {
nm.eb.publish("connect", args, sender)
}
}

pub fn (mut nm NetworkManager) payload_handler(receiver voidptr, args voidptr, sender voidptr) {
if nm.eb.subscriber.is_subscribed("payload") {
nm.eb.publish("payload", args, sender)
}
}

pub fn (mut nm NetworkManager) disconnect_handler(receiver voidptr, args voidptr, sender voidptr) {
if nm.eb.subscriber.is_subscribed("disconnect") {
nm.eb.publish("disconnect", args, sender)
}
}

pub fn (mut nm NetworkManager) connect(token string) ! {
nm.current_active_connection = cn.Client{}

// init handlers!
mut eb := eventbus.new[string]()
eb.subscriber.subscribe("connect", nm.connect_handler)
eb.subscriber.subscribe("disconnect", nm.disconnect_handler)
eb.subscriber.subscribe("payload", nm.payload_handler)

nm.current_active_connection.eb = eb // maybe that will fix the issue. bruh?

nm.current_active_connection.init(token)!
}

pub fn (mut nm NetworkManager) get_sub() &eventbus.Subscriber[string] {
return nm.eb.subscriber
}
31 changes: 24 additions & 7 deletions client/src/screens/menu.v
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,42 @@ pub fn (mut ms MenuScreen) deinit() ! {}

pub fn (mut ms MenuScreen) update(delta f32, mut ctx types.Context) ! {}

pub fn (mut ms MenuScreen) generic_error_handler(mut ctx types.Context, error IError) {
log.error(error.str())
ctx.set_screen(mut MenuScreen{}, mut ms.app) or {
log.error(err.str())
}
}

pub fn (mut ms MenuScreen) join(mut ctx types.Context) {
log.info("Hello from join function! Trying to log in into the account")

mut login_info := config.get_login_information()

if login_info.auth_token == "" {
log.error("No valid auth token found. Login again!")
log.error("no really valid token found.")
ctx.set_screen(mut MenuScreen{}, mut ms.app) or {
log.error(err.str())
}
return
}

(*network.gapi).login_via_auth_token(login_info.auth_token) or {
log.error("No valid auth token found. Login again!")
ctx.set_screen(mut MenuScreen{}, mut ms.app) or {
log.error(err.str())
}
return
(*network.gapi).login_via_auth_token(login_info.auth_token) or { // actually we should try refresh token, but now thats not even at API realizated
ms.generic_error_handler(mut ctx, err)
return
}

token := (*network.gapi).connect() or {
ms.generic_error_handler(mut ctx, err)
return
}

println(token)

(*network.gmanager).connect(token) or { // trash code
log.error("Failed to connect!")
ms.generic_error_handler(mut ctx, err)
return
}
}

Expand Down
4 changes: 2 additions & 2 deletions server/src/main.v
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import superernd.cn
import encoding.base64

fn new_incoming(receiver voidptr, nl voidptr, client &cn.SClient) {
mut c := *client
mut s := *c.server
//mut c := *client
//mut s := *c.server
log.info('New incoming connection from ${client.addr.str()}')
}

Expand Down

0 comments on commit 8094142

Please sign in to comment.