From 4711a7c5e3cc1957db0674867395e55468929be6 Mon Sep 17 00:00:00 2001 From: Chris Bell Date: Mon, 9 Dec 2024 17:41:07 -0600 Subject: [PATCH] Steam integration working --- assets/core/networking/NetworkManager.gd | 34 +++++++++++++++-- assets/scenes/main.tscn | 47 +++++++++++++++++++++++- project.godot | 4 ++ 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/assets/core/networking/NetworkManager.gd b/assets/core/networking/NetworkManager.gd index ecfc4ad..0c01caa 100644 --- a/assets/core/networking/NetworkManager.gd +++ b/assets/core/networking/NetworkManager.gd @@ -1,11 +1,39 @@ extends Node +var avatar_texture: ImageTexture +@export var ui_avatar: TextureRect +@export var ui_username: Label + func _ready() -> void: var init_result = Steam.steamInit(true, 480) if init_result["status"] <= 1: # Check if initialization was successful GameConsole.print_line("Steam is running!") - var steamId = Steam.getSteamID() - GameConsole.print_line("Steam ID: " + str(Steam.getFriendPersonaName(steamId))) + _initialize() else: GameConsole.log_error("Steam failed to initialize: " + str(init_result)) - \ No newline at end of file + + +func _initialize() -> void: + var steamId = Steam.getSteamID() + GameConsole.print_line("Steam ID: " + str(Steam.getFriendPersonaName(steamId))) + + ui_username.text = "User: " + str(Steam.getFriendPersonaName(steamId)) + + Steam.getPlayerAvatar() + Steam.avatar_loaded.connect(_on_avatar_loaded) + + +func _on_avatar_loaded(user_id: int, avatar_size: int, avatar_buffer: PackedByteArray) -> void: + GameConsole.print_line("Avatar loaded!") + + var avatar_image: Image = Image.create_from_data(avatar_size, avatar_size, false, Image.FORMAT_RGBA8, avatar_buffer) + if avatar_size > 128: + avatar_image.resize(128, 128, Image.INTERPOLATE_LANCZOS) + + + if avatar_image != null: + GameConsole.print_line("Avatar image created for user: " + str(user_id)) + avatar_texture = ImageTexture.create_from_image(avatar_image) + ui_avatar.texture = avatar_texture + else: + GameConsole.log_error("Failed to create avatar image!") diff --git a/assets/scenes/main.tscn b/assets/scenes/main.tscn index 4351e57..d2d62a9 100644 --- a/assets/scenes/main.tscn +++ b/assets/scenes/main.tscn @@ -1,6 +1,51 @@ -[gd_scene load_steps=2 format=3 uid="uid://huq7dxk5yvjk"] +[gd_scene load_steps=3 format=3 uid="uid://huq7dxk5yvjk"] [ext_resource type="Script" path="res://assets/core/networking/NetworkManager.gd" id="1_dcack"] +[ext_resource type="Texture2D" uid="uid://c1y4hdhjwuu53" path="res://assets/icon.png" id="2_wjvcl"] [node name="Main" type="Node"] + +[node name="NetworkManager" type="Node" parent="." node_paths=PackedStringArray("ui_avatar", "ui_username")] script = ExtResource("1_dcack") +ui_avatar = NodePath("../Canvas/SteamUI/VBoxContainer/Avatar") +ui_username = NodePath("../Canvas/SteamUI/VBoxContainer/Username") + +[node name="Canvas" type="CanvasLayer" parent="."] + +[node name="SteamUI" type="Control" parent="Canvas"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="Canvas/SteamUI"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -64.0 +offset_top = -77.5 +offset_right = 64.0 +offset_bottom = 77.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Avatar" type="TextureRect" parent="Canvas/SteamUI/VBoxContainer"] +custom_minimum_size = Vector2(128, 128) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 2 +texture = ExtResource("2_wjvcl") +expand_mode = 1 + +[node name="Username" type="Label" parent="Canvas/SteamUI/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 0 +text = "User: " diff --git a/project.godot b/project.godot index 723a5c3..022ba1f 100644 --- a/project.godot +++ b/project.godot @@ -28,6 +28,10 @@ file_logging/enable_file_logging=true window/size/viewport_width=1280 window/size/viewport_height=720 +[dotnet] + +project/assembly_name="Steamforged Skies" + [editor_plugins] enabled=PackedStringArray("res://addons/ingameconsole/plugin.cfg")