1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use crate::{lua::{self, LuaFunction}, lua_string};

#[inline(always)]
pub unsafe fn add_network_strings<S: AsRef<str>>(lua: lua::State, network_strings: &[S]) {
	match network_strings.len() {
		0 => {},
		1 => {
			lua.get_global(lua_string!("util"));
			lua.get_field(-1, lua_string!("AddNetworkString"));
			lua.push_string(network_strings[0].as_ref());
			lua.call(1, 0);
			lua.pop();
		},
		_ => {
			lua.get_global(lua_string!("util"));
			lua.get_field(-1, lua_string!("AddNetworkString"));
			for network_string in network_strings {
				lua.push_value(-1);
				lua.push_string(network_string.as_ref());
				lua.call(1, 0);
			}
			lua.pop_n(2);
		}
	}
}

#[inline(always)]
pub unsafe fn receive<S: AsRef<str>>(lua: lua::State, network_string: S, func: LuaFunction) {
	lua.get_global(lua_string!("net"));
	lua.get_field(-1, lua_string!("Receive"));
	lua.push_string(network_string.as_ref());
	lua.push_function(func);
	lua.call(2, 0);
	lua.pop();
}