diff --git a/src/client.odin b/src/client.odin index c30d8d3..4e7d1f3 100644 --- a/src/client.odin +++ b/src/client.odin @@ -4,12 +4,14 @@ import "core:fmt" import "core:net" import "core:os" -main :: proc() { - if (len(os.args) == 1 || len(os.args) > 2) { - panic("usage: ") - } - - sock, dial_err := net.dial_tcp(os.args[1]) +client_connect :: proc(addr: net.Endpoint) -> net.TCP_Socket { + sock, dial_err := net.dial_tcp(addr) if dial_err != nil do panic(fmt.tprintln("failed to dial", os.args[1])) + return sock +} + +run_client :: proc(host: net.Endpoint) { + fmt.println("hello from client") + fmt.println(host) } diff --git a/src/main.odin b/src/main.odin new file mode 100644 index 0000000..55738dd --- /dev/null +++ b/src/main.odin @@ -0,0 +1,39 @@ +package hanabi + +import "core:fmt" +import "core:net" +import "core:os" + +USAGE :: `usage: hanabi (-c[onnect]: | -h[ost]: [p3] [p4] [p5]) + +example host: \ + $ hanabi -h 127.0.0.1:42069 127.0.0.1:42070 + +example player: \ + $ hanabi -c 127.0.0.1:42069` + + +main :: proc() { + n := len(os.args) - 2 + switch os.args[1] { + case "-c", "-connect", "--connect": + assert(n == 1) + addr, ok := net.parse_endpoint(os.args[2]) + if !ok do panic(fmt.tprintln("failed to parse host endpoint:", os.args[2])) + run_client(addr) + case "-H", "-host", "--host": + assert(2 <= n && n <= 5) + addrs: [dynamic]net.Endpoint + defer delete(addrs) + for addr_str in os.args[2:] { + addr, ok := net.parse_endpoint(os.args[2]) + if !ok do panic(fmt.tprintln("failed to parse player endpoint:", addr_str)) + append(&addrs, addr) + } + run_server(addrs[:]) + case: + fmt.println(USAGE) + return + } +} + diff --git a/src/server.odin b/src/server.odin index ac7cbed..b7a745b 100644 --- a/src/server.odin +++ b/src/server.odin @@ -2,7 +2,6 @@ package hanabi import "core:fmt" import "core:net" -import "core:os" Comm_World :: struct { sockets: [dynamic]net.TCP_Socket, @@ -31,13 +30,10 @@ create_comm_world :: proc(addresses: []string) -> (comm: Comm_World) { return } -main :: proc() { - if len(os.args) == 1 { - panic(fmt.tprintln("usage: [p3] [p4] [p5]")) +run_server :: proc(players: []net.Endpoint) { + fmt.println("hello from server") + for p in players { + fmt.println(p) } - game := create_game(8, 3, u8(len(os.args) - 1)) - print_game(game) - comm := create_comm_world(os.args[1:]) - fmt.println(comm.sockets) }