summaryrefslogtreecommitdiff
path: root/demos
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2014-11-13 00:53:12 -0300
committerJuan Linietsky <reduzio@gmail.com>2014-11-13 00:53:12 -0300
commitabbea4d945bbb1114570c3b6c7f649e01ca8ebb8 (patch)
treed2b131b32705bbcf118efa72d5d9a21618c1227e /demos
parentd02953c5963ca080d26500ea8250e0632a80b234 (diff)
UDP Fixes
-=-=-=-=- Curse the day I decided to port UDP code, as it ended up being two nights of work. At least It's done now (I hope). -Fixed UDP Support, API seems stable -Added UDP Chat demo (chat that can lose your packets, heh) -Added helpers to areas and bodies to get list of collided bodies and contained bodies. -Sped up screen/viewport capture code. -Added code to save an image as PNG -Small fix so scripts register their singletons after modules did.
Diffstat (limited to 'demos')
-rw-r--r--demos/misc/udp_chat/chat.gd72
-rw-r--r--demos/misc/udp_chat/chat.scnbin0 -> 3198 bytes
-rw-r--r--demos/misc/udp_chat/engine.cfg5
-rw-r--r--demos/misc/udp_chat/icon.pngbin0 -> 2388 bytes
4 files changed, 77 insertions, 0 deletions
diff --git a/demos/misc/udp_chat/chat.gd b/demos/misc/udp_chat/chat.gd
new file mode 100644
index 0000000000..3270eebbfe
--- /dev/null
+++ b/demos/misc/udp_chat/chat.gd
@@ -0,0 +1,72 @@
+
+extends Panel
+
+# Really simple UDP chat client, not intended as a chat example!!
+# (UDP can lose packets and you won't normally find out, so don't do a chat this way)
+# This is just a demo that shows how to use the UDP class.
+
+var udp = PacketPeerUDP.new()
+
+func _process(delta):
+
+ if (not udp.is_listening()):
+ return
+
+ while(udp.get_available_packet_count()>0):
+ var packet = udp.get_var()
+ if (typeof(packet)==TYPE_STRING):
+ var host = udp.get_packet_ip()
+ var port = udp.get_packet_port()
+ get_node("chat/text").add_text("("+host+":"+str(port)+":) "+packet)
+ get_node("chat/text").newline()
+
+
+
+func _ready():
+ # Initalization here
+ get_node("chat").add_style_override("panel",get_stylebox("bg","Tree"))
+ set_process(true)
+
+
+
+func send_message(text):
+ if (udp.is_listening()):
+ udp.put_var(text)
+
+
+func _on_connect_toggled( pressed ):
+
+
+ if (pressed):
+ var err = udp.listen( get_node("listen_port").get_val() )
+ if (err!=OK):
+ get_node("status").set_text("Error:\nCan't Listen.")
+ get_node("connect").set_pressed(false)
+ else:
+ get_node("status").set_text("Connected.")
+ get_node("connect").set_text("Disconnect")
+ err = udp.set_send_address(get_node("remote_host").get_text(),get_node("remote_port").get_val())
+ if (err!=OK):
+ get_node("status").set_text("Error:\nCan't Resolve.")
+ get_node("connect").set_pressed(false)
+ else:
+ send_message("* "+get_node("user_name").get_text()+" entered chat.")
+ else:
+
+ udp.close()
+ get_node("status").set_text("Disconnected.")
+ get_node("connect").set_text("Connect")
+
+
+
+
+func _on_entry_line_text_entered( text ):
+ _on_entry_button_pressed();
+
+func _on_entry_button_pressed():
+ var msg = get_node("entry_line").get_text()
+ if (msg==""):
+ return
+ send_message(get_node("user_name").get_text()+"> "+msg)
+
+ get_node("entry_line").set_text("")
diff --git a/demos/misc/udp_chat/chat.scn b/demos/misc/udp_chat/chat.scn
new file mode 100644
index 0000000000..efa4b799a0
--- /dev/null
+++ b/demos/misc/udp_chat/chat.scn
Binary files differ
diff --git a/demos/misc/udp_chat/engine.cfg b/demos/misc/udp_chat/engine.cfg
new file mode 100644
index 0000000000..584841ea83
--- /dev/null
+++ b/demos/misc/udp_chat/engine.cfg
@@ -0,0 +1,5 @@
+[application]
+
+name="UDP Chat"
+main_scene="res://chat.scn"
+icon="res://icon.png"
diff --git a/demos/misc/udp_chat/icon.png b/demos/misc/udp_chat/icon.png
new file mode 100644
index 0000000000..db6e21cce1
--- /dev/null
+++ b/demos/misc/udp_chat/icon.png
Binary files differ