大更新,太多了,具体进游戏查看详细更新内容

反正很多
This commit is contained in:
2025-05-27 11:09:09 +08:00
parent a1e71a6a79
commit 8215cfa3ee
382 changed files with 13838 additions and 2974 deletions

View File

@@ -0,0 +1,106 @@
extends TextureRect
class_name HTTPTextureRect
signal loading_started
signal loading_finished(success: bool)
# HTTP请求节点
var http_request: HTTPRequest
func _ready():
# 创建HTTP请求节点
http_request = HTTPRequest.new()
add_child(http_request)
# 连接信号
http_request.request_completed.connect(_on_request_completed)
# 从URL加载图像
func load_from_url(url: String, custom_headers: Array = []) -> void:
if url.is_empty():
push_error("HTTPTextureRect: URL不能为空")
loading_finished.emit(false)
return
loading_started.emit()
# 发起HTTP请求
var error = http_request.request(url, custom_headers)
if error != OK:
push_error("HTTPTextureRect: 发起HTTP请求失败错误码: " + str(error))
loading_finished.emit(false)
# HTTP请求完成的回调函数
func _on_request_completed(result, response_code, headers, body):
if result != HTTPRequest.RESULT_SUCCESS:
push_error("HTTPTextureRect: HTTP请求失败错误码: " + str(result))
loading_finished.emit(false)
return
if response_code != 200:
push_error("HTTPTextureRect: HTTP请求返回非200状态码: " + str(response_code))
loading_finished.emit(false)
return
# 检查内容类型
var content_type = ""
for header in headers:
if header.to_lower().begins_with("content-type:"):
content_type = header.substr(13).strip_edges().to_lower()
print("HTTPTextureRect: 内容类型: ", content_type)
break
# 创建图像
var image = Image.new()
var error = ERR_INVALID_DATA
# 根据内容类型选择加载方法
if content_type.begins_with("image/jpeg") or content_type.begins_with("image/jpg"):
error = image.load_jpg_from_buffer(body)
elif content_type.begins_with("image/png"):
error = image.load_png_from_buffer(body)
elif content_type.begins_with("image/webp"):
error = image.load_webp_from_buffer(body)
elif content_type.begins_with("image/bmp"):
error = image.load_bmp_from_buffer(body)
else:
# 未知内容类型,尝试常见格式
error = image.load_jpg_from_buffer(body)
if error != OK:
error = image.load_png_from_buffer(body)
if error != OK:
error = image.load_webp_from_buffer(body)
if error != OK:
error = image.load_bmp_from_buffer(body)
# 检查加载结果
if error != OK:
push_error("HTTPTextureRect: 无法加载图像,错误码: " + str(error))
loading_finished.emit(false)
return
# 创建纹理并应用
var texture = ImageTexture.create_from_image(image)
self.texture = texture
print("HTTPTextureRect: 图像加载成功,尺寸: ", image.get_width(), "x", image.get_height())
loading_finished.emit(true)
# 加载QQ头像的便捷方法
func load_qq_avatar(qq_number: String) -> void:
if not qq_number.is_valid_int():
push_error("HTTPTextureRect: QQ号必须为纯数字")
loading_finished.emit(false)
return
# 使用QQ头像API
#var url = "https://q.qlogo.cn/headimg_dl?dst_uin=" + qq_number + "&spec=640&img_type=png"
var url = "http://q1.qlogo.cn/g?b=qq&nk="+qq_number+"&s=100"
# 添加浏览器模拟头
var headers = [
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Accept: image/png,image/jpeg,image/webp,image/*,*/*;q=0.8"
]
# 加载图像
load_from_url(url, headers)

View File

@@ -0,0 +1 @@
uid://0d2j5m6j2ema

View File

@@ -0,0 +1 @@
uid://caly13tf4ni1d