Better icon and menu
This commit is contained in:
parent
89a4f8ea32
commit
209bafa5f1
18 changed files with 319 additions and 40 deletions
|
@ -11,7 +11,9 @@ var grip = 1.0
|
||||||
var stamina = MAX_STAMINA
|
var stamina = MAX_STAMINA
|
||||||
var speed_boost = 0
|
var speed_boost = 0
|
||||||
|
|
||||||
|
onready var scene = $"/root/scene"
|
||||||
onready var world = $"/root/scene/world"
|
onready var world = $"/root/scene/world"
|
||||||
|
onready var camera = $Camera
|
||||||
|
|
||||||
export var is_controlled = false setget set_is_controlled
|
export var is_controlled = false setget set_is_controlled
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ func _physics_process(_delta: float) -> void:
|
||||||
sink.available = available_supply
|
sink.available = available_supply
|
||||||
# Check how much we actually need to drain from sources
|
# Check how much we actually need to drain from sources
|
||||||
var remaining_drain = total_source - available_supply
|
var remaining_drain = total_source - available_supply
|
||||||
for source in sources:
|
if remaining_drain > 0:
|
||||||
var source_load = source.power_source / total_source * remaining_drain
|
for source in sources:
|
||||||
source.power_load = source_load
|
var source_load = source.power_source / total_source * remaining_drain
|
||||||
|
source.power_load = source_load
|
||||||
|
|
|
@ -23,7 +23,7 @@ void fragment() {
|
||||||
vec2 uv = FRAGCOORD.xy * SCREEN_PIXEL_SIZE - 0.5;
|
vec2 uv = FRAGCOORD.xy * SCREEN_PIXEL_SIZE - 0.5;
|
||||||
uv.y *= SCREEN_PIXEL_SIZE.x/SCREEN_PIXEL_SIZE.y;
|
uv.y *= SCREEN_PIXEL_SIZE.x/SCREEN_PIXEL_SIZE.y;
|
||||||
|
|
||||||
vec3 dir = vec3(uv*zoom, 1.);
|
vec3 dir = vec3(uv*(zoom+sin(TIME*0.01)*0.4), 1.);
|
||||||
float time = TIME*speed+.25;
|
float time = TIME*speed+.25;
|
||||||
|
|
||||||
float a1=.5+TIME*rotx;
|
float a1=.5+TIME*rotx;
|
||||||
|
|
BIN
Graphics/UI/logo-temp-pixel.png
Normal file
BIN
Graphics/UI/logo-temp-pixel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
34
Graphics/UI/logo-temp-pixel.png.import
Normal file
34
Graphics/UI/logo-temp-pixel.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/logo-temp-pixel.png-7960fa53393f7cfe8d3a7306254ddecf.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Graphics/UI/logo-temp-pixel.png"
|
||||||
|
dest_files=[ "res://.import/logo-temp-pixel.png-7960fa53393f7cfe8d3a7306254ddecf.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
Binary file not shown.
|
@ -7,6 +7,8 @@
|
||||||
[node name="scene" type="Node"]
|
[node name="scene" type="Node"]
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
|
|
||||||
|
[node name="systems" type="Node" parent="."]
|
||||||
|
|
||||||
[node name="world" type="Node2D" parent="."]
|
[node name="world" type="Node2D" parent="."]
|
||||||
scale = Vector2( 2, 2 )
|
scale = Vector2( 2, 2 )
|
||||||
script = ExtResource( 4 )
|
script = ExtResource( 4 )
|
||||||
|
@ -17,6 +19,3 @@ mapToLoad = 1
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
[node name="ui" parent="CanvasLayer" instance=ExtResource( 3 )]
|
[node name="ui" parent="CanvasLayer" instance=ExtResource( 3 )]
|
||||||
mouse_filter = 2
|
|
||||||
|
|
||||||
[node name="systems" type="Node" parent="."]
|
|
||||||
|
|
|
@ -1,43 +1,108 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
signal ms_updated(action, data)
|
||||||
|
signal left()
|
||||||
|
|
||||||
|
# Hosting info
|
||||||
const SERVER_PORT = 5513
|
const SERVER_PORT = 5513
|
||||||
const MAX_PLAYERS = 30
|
const MAX_PLAYERS = 30
|
||||||
|
var port = SERVER_PORT
|
||||||
|
|
||||||
|
# Master server data
|
||||||
|
const MASTER_SERVER_ADDR = "fgms.zyg.ovh"
|
||||||
|
const MASTER_SERVER_UDP_PORT = 9434
|
||||||
|
const MS_GAME_CODE = "odyssey-0-a1"
|
||||||
|
|
||||||
|
# Master server entry
|
||||||
|
var ms_active = false
|
||||||
|
var ms_key = ""
|
||||||
|
var server_name = ""
|
||||||
|
|
||||||
export var player_name = ""
|
export var player_name = ""
|
||||||
|
|
||||||
var player_info = {}
|
var player_info = {}
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
player_name = "tider-" + str(randi() % 1000)
|
player_name = "tider-" + str(randi() % 1000)
|
||||||
|
|
||||||
|
func bind_events():
|
||||||
get_tree().connect("network_peer_connected", self, "_player_connected")
|
get_tree().connect("network_peer_connected", self, "_player_connected")
|
||||||
get_tree().connect("network_peer_disconnected", self, "_player_disconnected")
|
get_tree().connect("network_peer_disconnected", self, "_player_disconnected")
|
||||||
get_tree().connect("connected_to_server", self, "_connected_ok")
|
get_tree().connect("connected_to_server", self, "_connected_ok")
|
||||||
get_tree().connect("connection_failed", self, "_connected_fail")
|
get_tree().connect("connection_failed", self, "_connected_fail")
|
||||||
get_tree().connect("server_disconnected", self, "_server_disconnected")
|
get_tree().connect("server_disconnected", self, "_server_disconnected")
|
||||||
|
|
||||||
|
func punch_nat():
|
||||||
|
var socketUDP = PacketPeerUDP.new()
|
||||||
|
if socketUDP.listen(SERVER_PORT) != OK:
|
||||||
|
push_error("error listening on port: " + str(SERVER_PORT))
|
||||||
|
socketUDP.set_dest_address(MASTER_SERVER_ADDR, MASTER_SERVER_UDP_PORT)
|
||||||
|
socketUDP.put_packet("hi server!".to_ascii())
|
||||||
|
# Poll for answer from server, since godot doesn't have events for UDP packets (ノへ ̄、)
|
||||||
|
var failed = 0
|
||||||
|
while failed < 5:
|
||||||
|
yield(get_tree().create_timer(.3), "timeout")
|
||||||
|
if socketUDP.get_available_packet_count() < 1:
|
||||||
|
failed += 1
|
||||||
|
print("no reply (attempt #", failed, ")")
|
||||||
|
continue
|
||||||
|
port = socketUDP.get_var(false)
|
||||||
|
print("Received ", port)
|
||||||
|
break
|
||||||
|
socketUDP.close()
|
||||||
|
|
||||||
|
func discover_upnp():
|
||||||
|
var upnp = UPNP.new()
|
||||||
|
upnp.discover(2000, 2, "InternetGatewayDevice")
|
||||||
|
return upnp.add_port_mapping(SERVER_PORT)
|
||||||
|
|
||||||
func host():
|
func host():
|
||||||
|
print("Running UPNP magicks")
|
||||||
|
if discover_upnp() == UPNP.UPNP_RESULT_SUCCESS:
|
||||||
|
print("UPNP mapping added")
|
||||||
|
else:
|
||||||
|
push_warning("UPNP magicks fail, punching NAT in the face")
|
||||||
|
yield(punch_nat(), "completed")
|
||||||
|
|
||||||
|
bind_events()
|
||||||
var peer = NetworkedMultiplayerENet.new()
|
var peer = NetworkedMultiplayerENet.new()
|
||||||
peer.create_server(SERVER_PORT, MAX_PLAYERS)
|
var server_res = peer.create_server(port, MAX_PLAYERS)
|
||||||
get_tree().set_network_peer(peer)
|
if server_res != OK:
|
||||||
|
match server_res:
|
||||||
|
ERR_CANT_CREATE:
|
||||||
|
push_error("Can't create server")
|
||||||
|
ERR_ALREADY_IN_USE:
|
||||||
|
push_error("Already in use")
|
||||||
|
return
|
||||||
|
get_tree().network_peer = peer
|
||||||
print("Hosting")
|
print("Hosting")
|
||||||
|
server_name = player_name + "'s server"
|
||||||
player_info[1] = { name=player_name }
|
player_info[1] = { name=player_name }
|
||||||
#mapLoader.map.spawn_player(peer.get_unique_id())
|
|
||||||
|
get_tree().change_scene("res://Scenes/Game.tscn")
|
||||||
|
|
||||||
|
# Add to master server
|
||||||
|
create_ms_entry()
|
||||||
|
|
||||||
func join(addr: String):
|
func join(addr: String):
|
||||||
|
bind_events()
|
||||||
var peer = NetworkedMultiplayerENet.new()
|
var peer = NetworkedMultiplayerENet.new()
|
||||||
peer.create_client(addr, SERVER_PORT)
|
peer.create_client(addr, SERVER_PORT)
|
||||||
get_tree().network_peer = peer
|
get_tree().network_peer = peer
|
||||||
print("Connecting to", addr)
|
print("Connecting to ", addr)
|
||||||
|
|
||||||
func leave():
|
func leave():
|
||||||
var peer = get_tree().network_peer
|
var peer = get_tree().network_peer
|
||||||
if get_tree().is_network_server():
|
if get_tree().is_network_server():
|
||||||
#TODO Do something if server
|
# Tell MS we're leaving
|
||||||
pass
|
if ms_active:
|
||||||
|
_ms_request("remove", { "key": ms_key })
|
||||||
|
yield(self, "ms_updated")
|
||||||
elif peer != null:
|
elif peer != null:
|
||||||
#TODO Send leave message
|
#TODO Send leave message
|
||||||
pass
|
pass
|
||||||
get_tree().network_peer = null
|
get_tree().network_peer = null
|
||||||
|
emit_signal("left")
|
||||||
func _player_connected(id):
|
func _player_connected(id):
|
||||||
rpc_id(id, "register_player", player_name)
|
rpc_id(id, "register_player", player_name)
|
||||||
if get_tree().is_network_server():
|
if get_tree().is_network_server():
|
||||||
|
@ -55,7 +120,7 @@ func _server_disconnected():
|
||||||
print("Disconnected from server")
|
print("Disconnected from server")
|
||||||
|
|
||||||
func _connected_fail():
|
func _connected_fail():
|
||||||
print("Connection failed")
|
push_warning("Connection failed")
|
||||||
|
|
||||||
remote func register_player(username: String):
|
remote func register_player(username: String):
|
||||||
var id = get_tree().get_rpc_sender_id()
|
var id = get_tree().get_rpc_sender_id()
|
||||||
|
@ -68,3 +133,57 @@ remote func spawn_players(players):
|
||||||
#mapLoader.map.spawn_player(player_id)
|
#mapLoader.map.spawn_player(player_id)
|
||||||
# Spawn myself as well
|
# Spawn myself as well
|
||||||
#mapLoader.map.rpc("spawn_player", get_tree().network_peer.get_unique_id())
|
#mapLoader.map.rpc("spawn_player", get_tree().network_peer.get_unique_id())
|
||||||
|
|
||||||
|
func _ms_request(endpoint: String, data):
|
||||||
|
var http_request = HTTPRequest.new()
|
||||||
|
add_child(http_request)
|
||||||
|
http_request.connect("request_completed", self, "_ms_response", [endpoint])
|
||||||
|
print_debug("Telling ms to " + endpoint)
|
||||||
|
var error = http_request.request(
|
||||||
|
"https://" + MASTER_SERVER_ADDR + "/" + endpoint,
|
||||||
|
["Content-Type: application/json"],
|
||||||
|
true, HTTPClient.METHOD_POST, JSON.print(data))
|
||||||
|
if error != OK:
|
||||||
|
push_error("An error occurred in the HTTP request.")
|
||||||
|
|
||||||
|
func get_game_data():
|
||||||
|
return {
|
||||||
|
"name": server_name,
|
||||||
|
"port": port,
|
||||||
|
"max_players": MAX_PLAYERS,
|
||||||
|
"players": player_info.size()
|
||||||
|
}
|
||||||
|
|
||||||
|
func create_ms_entry():
|
||||||
|
_ms_request("new", {
|
||||||
|
"game_id": MS_GAME_CODE,
|
||||||
|
"data": get_game_data()
|
||||||
|
})
|
||||||
|
update_ms_entry()
|
||||||
|
|
||||||
|
func update_ms_entry():
|
||||||
|
if ms_active:
|
||||||
|
_ms_request("update", {
|
||||||
|
"key": ms_key,
|
||||||
|
"data": get_game_data()
|
||||||
|
})
|
||||||
|
yield(get_tree().create_timer(20), "timeout")
|
||||||
|
|
||||||
|
func _ms_response(_result: int, response_code: int, _headers: PoolStringArray, body: PoolByteArray, action: String):
|
||||||
|
print_debug("MS said " + str(response_code))
|
||||||
|
if response_code > 299:
|
||||||
|
push_error("ms action \"" + action + "\" returned error: " + str(response_code) + " - " + body.get_string_from_utf8())
|
||||||
|
return
|
||||||
|
var json = JSON.parse(body.get_string_from_utf8())
|
||||||
|
match action:
|
||||||
|
"new":
|
||||||
|
if json.result.ok:
|
||||||
|
ms_active = true
|
||||||
|
ms_key = json.result.key
|
||||||
|
emit_signal("ms_updated", action, json.result)
|
||||||
|
|
||||||
|
func _notification(what):
|
||||||
|
# Are we quittin son?
|
||||||
|
if what == MainLoop.NOTIFICATION_WM_QUIT_REQUEST:
|
||||||
|
leave()
|
||||||
|
yield(self, "left")
|
||||||
|
|
|
@ -2,12 +2,7 @@
|
||||||
|
|
||||||
[ext_resource path="res://Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg" type="AudioStream" id=1]
|
[ext_resource path="res://Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg" type="AudioStream" id=1]
|
||||||
|
|
||||||
[node name="Music" type="Control"]
|
[node name="Music" type="Node"]
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 1.0
|
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="BGM" type="AudioStreamPlayer" parent="."]
|
[node name="BGM" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource( 1 )
|
stream = ExtResource( 1 )
|
||||||
|
|
|
@ -152,6 +152,7 @@ interlockTargetPath = NodePath("../AirlockExt3")
|
||||||
[node name="ControlComp" parent="objects" instance=ExtResource( 6 )]
|
[node name="ControlComp" parent="objects" instance=ExtResource( 6 )]
|
||||||
position = Vector2( 576, 256 )
|
position = Vector2( 576, 256 )
|
||||||
direction = 0
|
direction = 0
|
||||||
|
computer_type = 0
|
||||||
|
|
||||||
[node name="CommsComp" parent="objects" instance=ExtResource( 6 )]
|
[node name="CommsComp" parent="objects" instance=ExtResource( 6 )]
|
||||||
position = Vector2( 576, 224 )
|
position = Vector2( 576, 224 )
|
||||||
|
|
|
@ -18,7 +18,7 @@ func _process(delta):
|
||||||
if delta > downThreshold:
|
if delta > downThreshold:
|
||||||
print("GPU is taking too much (", delta, "s < ", downThreshold, "s), adjusting shader scale")
|
print("GPU is taking too much (", delta, "s < ", downThreshold, "s), adjusting shader scale")
|
||||||
set_scale(scale+1)
|
set_scale(scale+1)
|
||||||
elif delta < upThreshold and scale > 1:
|
elif delta < upThreshold and scale > 2:
|
||||||
print("GPU is taking it easy (", delta, "s < ", upThreshold, "s), adjusting shader scale")
|
print("GPU is taking it easy (", delta, "s < ", upThreshold, "s), adjusting shader scale")
|
||||||
set_scale(scale-1)
|
set_scale(scale-1)
|
||||||
|
|
||||||
|
@ -30,3 +30,13 @@ func set_scale(val):
|
||||||
func _on_resized():
|
func _on_resized():
|
||||||
$Viewport.size = rect_size / scale
|
$Viewport.size = rect_size / scale
|
||||||
$Background.update()
|
$Background.update()
|
||||||
|
|
||||||
|
func _host_pressed():
|
||||||
|
$"/root/Music/BGM".stop()
|
||||||
|
$"/root/Multiplayer".host()
|
||||||
|
|
||||||
|
func _join_pressed():
|
||||||
|
pass
|
||||||
|
|
||||||
|
func _server_addr_changed(new_text: String):
|
||||||
|
$CenterContainer/PanelContainer/HBoxContainer/JoinButton.disabled = new_text.length() < 1
|
||||||
|
|
126
Scenes/Menu.tscn
126
Scenes/Menu.tscn
|
@ -1,12 +1,25 @@
|
||||||
[gd_scene load_steps=6 format=2]
|
[gd_scene load_steps=10 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://Scenes/Menu.gd" type="Script" id=1]
|
[ext_resource path="res://Scenes/Menu.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://Graphics/UI/Background.shader" type="Shader" id=2]
|
[ext_resource path="res://Graphics/UI/Background.shader" type="Shader" id=2]
|
||||||
[ext_resource path="res://Graphics/UI/logo-temp.png" type="Texture" id=3]
|
[ext_resource path="res://Graphics/UI/logo-temp-pixel.png" type="Texture" id=3]
|
||||||
|
[ext_resource path="res://Graphics/UI/ui_theme.tres" type="Theme" id=4]
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id=3]
|
[sub_resource type="ViewportTexture" id=1]
|
||||||
viewport_path = NodePath("Viewport")
|
viewport_path = NodePath("Viewport")
|
||||||
|
|
||||||
|
[sub_resource type="Shader" id=2]
|
||||||
|
code = "shader_type canvas_item;
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec4 tex = texture(TEXTURE, UV);
|
||||||
|
COLOR = vec4(tex.rgb * 0., tex.a * 0.5);
|
||||||
|
}"
|
||||||
|
custom_defines = ""
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id=3]
|
||||||
|
shader = SubResource( 2 )
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=4]
|
[sub_resource type="ShaderMaterial" id=4]
|
||||||
shader = ExtResource( 2 )
|
shader = ExtResource( 2 )
|
||||||
shader_param/iterations = 17
|
shader_param/iterations = 17
|
||||||
|
@ -23,6 +36,22 @@ shader_param/saturation = 0.85
|
||||||
shader_param/rotx = 0.0
|
shader_param/rotx = 0.0
|
||||||
shader_param/roty = 0.001
|
shader_param/roty = 0.001
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id=5]
|
||||||
|
content_margin_left = 16.0
|
||||||
|
content_margin_right = 16.0
|
||||||
|
content_margin_top = 20.0
|
||||||
|
content_margin_bottom = 20.0
|
||||||
|
bg_color = Color( 0.133333, 0.12549, 0.203922, 0.784314 )
|
||||||
|
border_width_left = 4
|
||||||
|
border_width_top = 4
|
||||||
|
border_width_right = 4
|
||||||
|
border_width_bottom = 4
|
||||||
|
border_color = Color( 0.27301, 0.417506, 0.984375, 0.392157 )
|
||||||
|
corner_radius_top_left = 4
|
||||||
|
corner_radius_top_right = 4
|
||||||
|
corner_radius_bottom_right = 4
|
||||||
|
corner_radius_bottom_left = 4
|
||||||
|
|
||||||
[node name="Control" type="Control"]
|
[node name="Control" type="Control"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
@ -34,23 +63,42 @@ __meta__ = {
|
||||||
[node name="Background" type="TextureRect" parent="."]
|
[node name="Background" type="TextureRect" parent="."]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
texture = SubResource( 3 )
|
texture = SubResource( 1 )
|
||||||
stretch_mode = 7
|
stretch_mode = 7
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="logo-temp2" type="TextureRect" parent="."]
|
||||||
|
material = SubResource( 3 )
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
margin_left = -248.771
|
||||||
|
margin_top = -295.282
|
||||||
|
margin_right = -8.77124
|
||||||
|
margin_bottom = -115.282
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
rect_scale = Vector2( 2, 2 )
|
||||||
|
texture = ExtResource( 3 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
[node name="logo-temp" type="TextureRect" parent="."]
|
[node name="logo-temp" type="TextureRect" parent="."]
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
margin_left = -250.0
|
margin_left = -250.58
|
||||||
margin_top = -293.953
|
margin_top = -296.523
|
||||||
margin_right = 250.0
|
margin_right = -10.5796
|
||||||
margin_bottom = 82.0471
|
margin_bottom = -116.523
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
rect_scale = Vector2( 2, 2 )
|
||||||
texture = ExtResource( 3 )
|
texture = ExtResource( 3 )
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
|
@ -63,4 +111,66 @@ size = Vector2( 300, 300 )
|
||||||
material = SubResource( 4 )
|
material = SubResource( 4 )
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
|
||||||
|
[node name="CenterContainer" type="CenterContainer" parent="."]
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
margin_left = 100.0
|
||||||
|
margin_top = -300.0
|
||||||
|
margin_right = -100.0
|
||||||
|
margin_bottom = -50.0
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"]
|
||||||
|
margin_left = 390.0
|
||||||
|
margin_top = 43.0
|
||||||
|
margin_right = 690.0
|
||||||
|
margin_bottom = 207.0
|
||||||
|
rect_min_size = Vector2( 300, 0 )
|
||||||
|
custom_styles/panel = SubResource( 5 )
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer"]
|
||||||
|
margin_left = 16.0
|
||||||
|
margin_top = 20.0
|
||||||
|
margin_right = 284.0
|
||||||
|
margin_bottom = 144.0
|
||||||
|
custom_constants/separation = 10
|
||||||
|
|
||||||
|
[node name="HostButton" type="Button" parent="CenterContainer/PanelContainer/HBoxContainer"]
|
||||||
|
margin_right = 268.0
|
||||||
|
margin_bottom = 24.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
text = "Start a new game"
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="CenterContainer/PanelContainer/HBoxContainer"]
|
||||||
|
margin_top = 34.0
|
||||||
|
margin_right = 268.0
|
||||||
|
margin_bottom = 52.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
text = "or"
|
||||||
|
align = 1
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ServerAddr" type="LineEdit" parent="CenterContainer/PanelContainer/HBoxContainer"]
|
||||||
|
margin_top = 62.0
|
||||||
|
margin_right = 268.0
|
||||||
|
margin_bottom = 90.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
placeholder_text = "Server address or URL"
|
||||||
|
|
||||||
|
[node name="JoinButton" type="Button" parent="CenterContainer/PanelContainer/HBoxContainer"]
|
||||||
|
margin_top = 100.0
|
||||||
|
margin_right = 268.0
|
||||||
|
margin_bottom = 124.0
|
||||||
|
theme = ExtResource( 4 )
|
||||||
|
disabled = true
|
||||||
|
text = "Join an existing game"
|
||||||
[connection signal="resized" from="." to="." method="_on_resized"]
|
[connection signal="resized" from="." to="." method="_on_resized"]
|
||||||
|
[connection signal="pressed" from="CenterContainer/PanelContainer/HBoxContainer/HostButton" to="." method="_host_pressed"]
|
||||||
|
[connection signal="text_changed" from="CenterContainer/PanelContainer/HBoxContainer/ServerAddr" to="." method="_server_addr_changed"]
|
||||||
|
[connection signal="pressed" from="CenterContainer/PanelContainer/HBoxContainer/JoinButton" to="." method="_join_pressed"]
|
||||||
|
|
|
@ -2,6 +2,8 @@ extends TileMap
|
||||||
|
|
||||||
class_name MapTiles
|
class_name MapTiles
|
||||||
|
|
||||||
|
var transparentImage = preload("res://Graphics/transparent.png")
|
||||||
|
|
||||||
export(NodePath) var extended_tilemap_node
|
export(NodePath) var extended_tilemap_node
|
||||||
|
|
||||||
export var occluders = ["Wall"]
|
export var occluders = ["Wall"]
|
||||||
|
@ -34,7 +36,7 @@ func convert_extended():
|
||||||
extended_tilemap.set_cell(x+1, y, extended_id)
|
extended_tilemap.set_cell(x+1, y, extended_id)
|
||||||
extended_tilemap.set_cell(x, y+1, extended_id)
|
extended_tilemap.set_cell(x, y+1, extended_id)
|
||||||
extended_tilemap.set_cell(x+1, y+1, extended_id)
|
extended_tilemap.set_cell(x+1, y+1, extended_id)
|
||||||
set_cellv(cell, -1)
|
tile_set.tile_set_texture(id, transparentImage)
|
||||||
extended_tilemap.update_bitmask_region()
|
extended_tilemap.update_bitmask_region()
|
||||||
extended_tilemap.update_dirty_quadrants()
|
extended_tilemap.update_dirty_quadrants()
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ corner_radius_bottom_left = 4
|
||||||
[node name="ui" type="Control"]
|
[node name="ui" type="Control"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
mouse_filter = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
|
@ -83,10 +84,10 @@ margin_bottom = 20.0
|
||||||
text = "Preferences"
|
text = "Preferences"
|
||||||
|
|
||||||
[node name="ServerInfoPopup" type="WindowDialog" parent="."]
|
[node name="ServerInfoPopup" type="WindowDialog" parent="."]
|
||||||
margin_left = 536.0
|
margin_left = -278.587
|
||||||
margin_top = 272.0
|
margin_top = 58.4538
|
||||||
margin_right = 792.0
|
margin_right = -22.587
|
||||||
margin_bottom = 440.0
|
margin_bottom = 226.454
|
||||||
window_title = "Server info"
|
window_title = "Server info"
|
||||||
resizable = true
|
resizable = true
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
|
|
|
@ -32,11 +32,11 @@ codesign/timestamp_server_url=""
|
||||||
codesign/digest_algorithm=1
|
codesign/digest_algorithm=1
|
||||||
codesign/description=""
|
codesign/description=""
|
||||||
codesign/custom_options=PoolStringArray( )
|
codesign/custom_options=PoolStringArray( )
|
||||||
application/icon=""
|
application/icon="res://icon.ico"
|
||||||
application/file_version=""
|
application/file_version="0.1.0"
|
||||||
application/product_version=""
|
application/product_version="0.1.0"
|
||||||
application/company_name=""
|
application/company_name=""
|
||||||
application/product_name=""
|
application/product_name="NSS Odyssey"
|
||||||
application/file_description=""
|
application/file_description=""
|
||||||
application/copyright=""
|
application/copyright=""
|
||||||
application/trademarks=""
|
application/trademarks=""
|
||||||
|
|
BIN
icon.ico
Normal file
BIN
icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.7 KiB |
BIN
icon.png
BIN
icon.png
Binary file not shown.
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 11 KiB |
|
@ -128,7 +128,7 @@ _global_script_class_icons={
|
||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="odyssey"
|
config/name="NSS Odyssey"
|
||||||
run/main_scene="res://Scenes/Menu.tscn"
|
run/main_scene="res://Scenes/Menu.tscn"
|
||||||
boot_splash/image="res://Graphics/UI/splash.png"
|
boot_splash/image="res://Graphics/UI/splash.png"
|
||||||
boot_splash/fullsize=false
|
boot_splash/fullsize=false
|
||||||
|
@ -137,6 +137,11 @@ config/icon="res://icon.png"
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
Music="*res://Scenes/Global/Music.tscn"
|
Music="*res://Scenes/Global/Music.tscn"
|
||||||
|
Multiplayer="*res://Scenes/Global/Multiplayer.gd"
|
||||||
|
|
||||||
|
[debug]
|
||||||
|
|
||||||
|
settings/stdout/print_fps=true
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
|
|
Reference in a new issue