renamed sdk to rpc because the people think its the discord embedded sdk
4
.github/ISSUE_TEMPLATE/BUG.yml
vendored
@@ -21,7 +21,7 @@ body:
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of the Discord Game SDK Godot plugin are you running?
|
||||
description: What version of the Discord RPC Godot plugin are you running?
|
||||
options:
|
||||
- 1.2.0
|
||||
- 1.1.0
|
||||
@@ -94,5 +94,5 @@ body:
|
||||
required: true
|
||||
- label: I tried restarting Discord and Godot completely.
|
||||
required: true
|
||||
- label: I did read the documentation https://vaporvee.com/docs/discord-sdk-godot/
|
||||
- label: I did read the documentation https://vaporvee.com/docs/discord-rpc-godot/
|
||||
required: true
|
||||
|
2
.gitignore
vendored
@@ -22,7 +22,7 @@ build/
|
||||
*.a
|
||||
|
||||
#Clean files from setup.py
|
||||
src/lib/discord_game_sdk/
|
||||
src/lib/discord_rpc/
|
||||
|
||||
# release
|
||||
release/
|
||||
|
@@ -1,10 +1,10 @@
|
||||
<img src="/project/assets/Banner.svg" alt="Project Banner" />
|
||||
|
||||
|
||||
**Discord Game SDK support for GDScript in Godot Engine 4.2. with the easiest code pattern!**<br><br>
|
||||
**Discord Game RPC support for GDScript with an easy-to-use code pattern in Godot Engine 4.1+, with optional Editor Rich Presence! (Compatible with Linux, Windows, & MacOS)**<br><br>
|
||||
<br />
|
||||
### [My Discord Server](https://discord.gg/EBdaTefpWy)
|
||||
# [Quick start :rocket: (click here)](https://vaporvee.com/docs/discord-sdk-godot#quick-start)
|
||||
# [Quick start :rocket: (click here)](https://vaporvee.com/docs/discord-rpc-godot#quick-start)
|
||||
<br />
|
||||
|
||||
**A small donation with the sponsor button would be nice if you sell your project with this addon but is of course not mandatory!**
|
||||
@@ -17,7 +17,7 @@
|
||||
- Relationship Manager (Get friendlist and its updates)
|
||||
- Overlay management
|
||||
- Editor Presence (optional)
|
||||
<img width="600px" src="https://raw.githubusercontent.com/vaporvee/discord-sdk-godot/main/project/assets/GodotEditorPresenceBanner.png">
|
||||
<img width="600px" src="https://raw.githubusercontent.com/vaporvee/discord-rpc-godot/main/project/assets/GodotEditorPresenceBanner.png">
|
||||
<br />
|
||||
|
||||
<br />
|
||||
|
@@ -39,7 +39,7 @@ sources += Glob("src/*.cpp")
|
||||
env.Append(CPPDEFINES=["HOT_RELOAD_ENABLED"])
|
||||
|
||||
library = env.SharedLibrary(
|
||||
target="project/addons/discord-sdk-gd/bin/"
|
||||
target="project/addons/discord-rpc-gd/bin/"
|
||||
+ libexportfolder
|
||||
+ "discord_game_sdk_binding"
|
||||
+ armsuffix
|
||||
@@ -49,7 +49,7 @@ library = env.SharedLibrary(
|
||||
env.Depends(
|
||||
library,
|
||||
Command(
|
||||
"project/addons/discord-sdk-gd/bin/" + libexportfolder + discord_library,
|
||||
"project/addons/discord-rpc-gd/bin/" + libexportfolder + discord_library,
|
||||
"src/lib/discord_game_sdk/bin/" + discord_library,
|
||||
Copy("$TARGET", "$SOURCE"),
|
||||
),
|
||||
@@ -58,7 +58,7 @@ if discord_library_second != "":
|
||||
env.Depends(
|
||||
library,
|
||||
Command(
|
||||
"project/addons/discord-sdk-gd/bin/"
|
||||
"project/addons/discord-rpc-gd/bin/"
|
||||
+ libexportfolder
|
||||
+ discord_library_second,
|
||||
"src/lib/discord_game_sdk/bin/" + discord_library_second,
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -3,15 +3,15 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ufh1hha1ehui"
|
||||
path="res://.godot/imported/Debug.svg-97b25f5d09dbf04212867cd1a46cf368.ctex"
|
||||
path="res://.godot/imported/Debug.svg-d4cb8599fa7926b76a2d6e40d2efd949.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/discord-sdk-gd/Debug.svg"
|
||||
dest_files=["res://.godot/imported/Debug.svg-97b25f5d09dbf04212867cd1a46cf368.ctex"]
|
||||
source_file="res://addons/discord-rpc-gd/Debug.svg"
|
||||
dest_files=["res://.godot/imported/Debug.svg-d4cb8599fa7926b76a2d6e40d2efd949.ctex"]
|
||||
|
||||
[params]
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
@@ -3,15 +3,15 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://csl0e2px0cwc1"
|
||||
path="res://.godot/imported/Logo_V2_No_Bg.png-9c8178062d6891c8370df63a912bd8e2.ctex"
|
||||
path="res://.godot/imported/Logo_V2_No_Bg.png-ed667fb599fe1e17ebcfc361ff7c9c93.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/discord-sdk-gd/Logo_V2_No_Bg.png"
|
||||
dest_files=["res://.godot/imported/Logo_V2_No_Bg.png-9c8178062d6891c8370df63a912bd8e2.ctex"]
|
||||
source_file="res://addons/discord-rpc-gd/Logo_V2_No_Bg.png"
|
||||
dest_files=["res://.godot/imported/Logo_V2_No_Bg.png-ed667fb599fe1e17ebcfc361ff7c9c93.ctex"]
|
||||
|
||||
[params]
|
||||
|
@@ -1,7 +1,7 @@
|
||||
MINIMUM GODOT VERSION: 4.2
|
||||
|
||||
PLEASE ACTIVATE THE PLUGIN UNDER Project -> Project Settings... -> Plugins -> DiscordSDK -> Status
|
||||
PLEASE ACTIVATE THE PLUGIN UNDER Project -> Project Settings... -> Plugins -> DiscordRPC -> Status
|
||||
IGNORE THE RED ERRORS ON THE FIRST 2 RESTARTS
|
||||
READ THE TUTORIAL LINKED IN THE WINDOW THAT WILL OPEN ON PLUGIN ENABLE
|
||||
|
||||
If nothing works, enable the plugin and delete /addons/discord-sdk-gd/bin/.gdignore
|
||||
If nothing works, enable the plugin and delete /addons/discord-rpc-gd/bin/.gdignore
|
@@ -1,6 +1,6 @@
|
||||
[configuration]
|
||||
|
||||
entry_symbol = "discordsdkgd_library_init"
|
||||
entry_symbol = "discordrpcgd_library_init"
|
||||
compatibility_minimum = 4.1
|
||||
|
||||
[libraries]
|
@@ -1,8 +1,8 @@
|
||||
class_name DiscordSDKTutorial
|
||||
class_name DiscordRPCTutorial
|
||||
extends Node
|
||||
|
||||
## 1. Put the addons/ folder in your Godot project[br]
|
||||
## 2. Enable the addon in your Project Settings under "Plugins" and "DiscordSDK". [br](if it doesn't show up restart your project and try again)[br]
|
||||
## 2. Enable the addon in your Project Settings under "Plugins" and "DiscordRPC". [br](if it doesn't show up restart your project and try again)[br]
|
||||
## 3. Restart your project[br]
|
||||
## 4. Create an Application under https://discord.com/developers/applications and get the Application ID br]
|
||||
## 5. (optional) Set images under "Rich Presence" and "Art Assets" and remember the keys[br]
|
||||
@@ -11,28 +11,28 @@ extends Node
|
||||
## [codeblock]
|
||||
## func _ready():
|
||||
## # Application ID
|
||||
## DiscordSDK.app_id = 1099618430065324082
|
||||
## DiscordRPC.app_id = 1099618430065324082
|
||||
## # this is boolean if everything worked
|
||||
## print("Discord working: " + str(DiscordSDK.get_is_discord_working()))
|
||||
## print("Discord working: " + str(DiscordRPC.get_is_discord_working()))
|
||||
## # Set the first custom text row of the activity here
|
||||
## DiscordSDK.details = "A demo activity by vaporvee#1231"
|
||||
## DiscordRPC.details = "A demo activity by vaporvee#1231"
|
||||
## # Set the second custom text row of the activity here
|
||||
## DiscordSDK.state = "Checkpoint 23/23"
|
||||
## DiscordRPC.state = "Checkpoint 23/23"
|
||||
## # Image key for small image from "Art Assets" from the Discord Developer website
|
||||
## DiscordSDK.large_image = "game"
|
||||
## DiscordRPC.large_image = "game"
|
||||
## # Tooltip text for the large image
|
||||
## DiscordSDK.large_image_text = "Try it now!"
|
||||
## DiscordRPC.large_image_text = "Try it now!"
|
||||
## # Image key for large image from "Art Assets" from the Discord Developer website
|
||||
## DiscordSDK.small_image = "boss"
|
||||
## DiscordRPC.small_image = "boss"
|
||||
## # Tooltip text for the small image
|
||||
## DiscordSDK.small_image_text = "Fighting the end boss! D:"
|
||||
## DiscordRPC.small_image_text = "Fighting the end boss! D:"
|
||||
## # "02:41 elapsed" timestamp for the activity
|
||||
## DiscordSDK.start_timestamp = int(Time.get_unix_time_from_system())
|
||||
## DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system())
|
||||
## # "59:59 remaining" timestamp for the activity
|
||||
## DiscordSDK.end_timestamp = int(Time.get_unix_time_from_system()) + 3600
|
||||
## DiscordRPC.end_timestamp = int(Time.get_unix_time_from_system()) + 3600
|
||||
## # Always refresh after changing the values!
|
||||
## DiscordSDK.refresh()
|
||||
## DiscordRPC.refresh()
|
||||
## [/codeblock]
|
||||
##
|
||||
## @tutorial(More information here): https://github.com/vaporvee/discord-sdk-godot/wiki/Quick-start
|
||||
## @tutorial(More information here): https://github.com/vaporvee/discord-rpc-godot/wiki/Quick-start
|
||||
## @tutorial(Make your Application ID and else here): https://discord.com/developers/applications
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
@@ -3,15 +3,15 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://csl0e2px0cwc1"
|
||||
path="res://.godot/imported/logo.png-b59b4861dc0c64616d78af30082b08b5.ctex"
|
||||
path="res://.godot/imported/logo.png-bacb448eabae556bdb0659359ea4e4af.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/discord-sdk-gd/logo.png"
|
||||
dest_files=["res://.godot/imported/logo.png-b59b4861dc0c64616d78af30082b08b5.ctex"]
|
||||
source_file="res://addons/discord-rpc-gd/logo.png"
|
||||
dest_files=["res://.godot/imported/logo.png-bacb448eabae556bdb0659359ea4e4af.ctex"]
|
||||
|
||||
[params]
|
||||
|
@@ -1,18 +1,18 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://c1slhdnlsv2qt"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dnfq6kug4x6o2" path="res://addons/discord-sdk-gd/nodes/assets/Checked.svg" id="2_q6tao"]
|
||||
[ext_resource type="Texture2D" uid="uid://compmm3kviqqe" path="res://addons/discord-sdk-gd/nodes/assets/Unchecked.svg" id="3_5cyem"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtc6ckladq0td" path="res://addons/discord-sdk-gd/nodes/assets/circle.svg" id="3_goflf"]
|
||||
[ext_resource type="Texture2D" uid="uid://dnfq6kug4x6o2" path="res://addons/discord-rpc-gd/nodes/assets/Checked.svg" id="2_q6tao"]
|
||||
[ext_resource type="Texture2D" uid="uid://compmm3kviqqe" path="res://addons/discord-rpc-gd/nodes/assets/Unchecked.svg" id="3_5cyem"]
|
||||
[ext_resource type="Texture2D" uid="uid://dtc6ckladq0td" path="res://addons/discord-rpc-gd/nodes/assets/circle.svg" id="3_goflf"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_ak1tp"]
|
||||
resource_name = "Debug"
|
||||
script/source = "extends Node
|
||||
|
||||
func _ready():
|
||||
DiscordSDK.connect(\"activity_join_request\",_on_activity_join_request)
|
||||
DiscordRPC.connect(\"activity_join_request\",_on_activity_join_request)
|
||||
|
||||
func _process(_delta):
|
||||
if(DiscordSDK.get_is_discord_working()):
|
||||
if(DiscordRPC.get_is_discord_working()):
|
||||
$Panel/TextureRect.self_modulate = Color(\"#3eff8d\")
|
||||
$Panel/TextureRect/AnimationPlayer.play(\"pulsate\")
|
||||
debug_text_update()
|
||||
@@ -45,7 +45,7 @@ Is party public: {ppublic} (needs to be activated in Discord client settings)
|
||||
|
||||
Is instanced: {instanced}
|
||||
\"
|
||||
$Panel/Info.text = $Panel/Info.text.replace(\"{ppublic}\",str(DiscordSDK.is_public_party)).replace(\"{instanced}\",str(DiscordSDK.instanced)).replace(\"{ssecret}\",DiscordSDK.spectate_secret).replace(\"{jsecret}\",DiscordSDK.join_secret).replace(\"{msecret}\",DiscordSDK.match_secret).replace(\"{mpartysize}\",str(DiscordSDK.max_party_size)).replace(\"{cpartysize}\",str(DiscordSDK.current_party_size)).replace(\"{partyid}\",DiscordSDK.party_id).replace(\"{id}\",str(DiscordSDK.app_id)).replace(\"{details}\",DiscordSDK.details).replace(\"{state}\",DiscordSDK.state).replace(\"{lkey}\",DiscordSDK.large_image).replace(\"{ltext}\",DiscordSDK.large_image_text).replace(\"{skey}\",DiscordSDK.small_image).replace(\"{stext}\",DiscordSDK.small_image_text).replace(\"{stimestamp}\",str(DiscordSDK.start_timestamp)).replace(\"{etimestamp}\",str(DiscordSDK.end_timestamp))
|
||||
$Panel/Info.text = $Panel/Info.text.replace(\"{ppublic}\",str(DiscordRPC.is_public_party)).replace(\"{instanced}\",str(DiscordRPC.instanced)).replace(\"{ssecret}\",DiscordRPC.spectate_secret).replace(\"{jsecret}\",DiscordRPC.join_secret).replace(\"{msecret}\",DiscordRPC.match_secret).replace(\"{mpartysize}\",str(DiscordRPC.max_party_size)).replace(\"{cpartysize}\",str(DiscordRPC.current_party_size)).replace(\"{partyid}\",DiscordRPC.party_id).replace(\"{id}\",str(DiscordRPC.app_id)).replace(\"{details}\",DiscordRPC.details).replace(\"{state}\",DiscordRPC.state).replace(\"{lkey}\",DiscordRPC.large_image).replace(\"{ltext}\",DiscordRPC.large_image_text).replace(\"{skey}\",DiscordRPC.small_image).replace(\"{stext}\",DiscordRPC.small_image_text).replace(\"{stimestamp}\",str(DiscordRPC.start_timestamp)).replace(\"{etimestamp}\",str(DiscordRPC.end_timestamp))
|
||||
|
||||
var user_request = {};
|
||||
|
||||
@@ -55,25 +55,25 @@ func _on_activity_join_request(user_requesting):
|
||||
|
||||
func _on_accept_join_request_pressed():
|
||||
if(!user_request.is_empty()):
|
||||
DiscordSDK.accept_join_request(user_request.id)
|
||||
DiscordRPC.accept_join_request(user_request.id)
|
||||
|
||||
func _on_invite_with_user_id_text_submitted(new_text):
|
||||
DiscordSDK.send_invite(int(new_text),true,\"this is a test invite sent from godot\")
|
||||
DiscordRPC.send_invite(int(new_text),true,\"this is a test invite sent from godot\")
|
||||
|
||||
func _on_accept_with_user_id_text_submitted(new_text):
|
||||
DiscordSDK.accept_invite(int(new_text))
|
||||
DiscordRPC.accept_invite(int(new_text))
|
||||
|
||||
func _on_print_current_user_on_console_pressed():
|
||||
print(DiscordSDK.get_current_user())
|
||||
print(DiscordRPC.get_current_user())
|
||||
|
||||
func _on_toggle_sdk_toggled(button_pressed):
|
||||
if(button_pressed):
|
||||
DiscordSDK.unclear()
|
||||
DiscordRPC.unclear()
|
||||
else:
|
||||
DiscordSDK.clear(false)
|
||||
DiscordRPC.clear(false)
|
||||
|
||||
func _on_print_friends_pressed():
|
||||
print(DiscordSDK.get_all_relationships())
|
||||
print(DiscordRPC.get_all_relationships())
|
||||
"
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8abo6"]
|
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B |
@@ -3,15 +3,15 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dnfq6kug4x6o2"
|
||||
path="res://.godot/imported/Checked.svg-152467b95b56fa0b9944b5cc25700916.ctex"
|
||||
path="res://.godot/imported/Checked.svg-80704e37f30c24e2ec3dfc0955f5f21c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/discord-sdk-gd/nodes/assets/Checked.svg"
|
||||
dest_files=["res://.godot/imported/Checked.svg-152467b95b56fa0b9944b5cc25700916.ctex"]
|
||||
source_file="res://addons/discord-rpc-gd/nodes/assets/Checked.svg"
|
||||
dest_files=["res://.godot/imported/Checked.svg-80704e37f30c24e2ec3dfc0955f5f21c.ctex"]
|
||||
|
||||
[params]
|
||||
|
Before Width: | Height: | Size: 942 B After Width: | Height: | Size: 942 B |
@@ -3,15 +3,15 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://compmm3kviqqe"
|
||||
path="res://.godot/imported/Unchecked.svg-91cff67e13e7a1508fbc6a949f5f5f52.ctex"
|
||||
path="res://.godot/imported/Unchecked.svg-b526adfd78f7b1577fc3c10a8ea626ee.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/discord-sdk-gd/nodes/assets/Unchecked.svg"
|
||||
dest_files=["res://.godot/imported/Unchecked.svg-91cff67e13e7a1508fbc6a949f5f5f52.ctex"]
|
||||
source_file="res://addons/discord-rpc-gd/nodes/assets/Unchecked.svg"
|
||||
dest_files=["res://.godot/imported/Unchecked.svg-b526adfd78f7b1577fc3c10a8ea626ee.ctex"]
|
||||
|
||||
[params]
|
||||
|
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 290 B |
@@ -3,15 +3,15 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dtc6ckladq0td"
|
||||
path="res://.godot/imported/circle.svg-ca71b895eb1c5e7e6f2f2afe081d28dd.ctex"
|
||||
path="res://.godot/imported/circle.svg-d0b0579c9433c6250a5869daf4f70024.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/discord-sdk-gd/nodes/assets/circle.svg"
|
||||
dest_files=["res://.godot/imported/circle.svg-ca71b895eb1c5e7e6f2f2afe081d28dd.ctex"]
|
||||
source_file="res://addons/discord-rpc-gd/nodes/assets/circle.svg"
|
||||
dest_files=["res://.godot/imported/circle.svg-d0b0579c9433c6250a5869daf4f70024.ctex"]
|
||||
|
||||
[params]
|
||||
|
@@ -1,11 +1,11 @@
|
||||
## This is a Debug Node wich will show some usefull info and buttons/input
|
||||
##
|
||||
## The DiscordSDK Debug Node will show info about the current values of its variables and some buttons to change them.
|
||||
## The DiscordRPC Debug Node will show info about the current values of its variables and some buttons to change them.
|
||||
##
|
||||
## @tutorial: https://github.com/vaporvee/discord-sdk-godot/wiki
|
||||
## @tutorial: https://github.com/vaporvee/discord-rpc-godot/wiki
|
||||
@tool
|
||||
extends Node
|
||||
|
||||
func _ready() -> void:
|
||||
const DebugNodeGroup: PackedScene = preload("res://addons/discord-sdk-gd/nodes/Debug.tscn")
|
||||
const DebugNodeGroup: PackedScene = preload("res://addons/discord-rpc-gd/nodes/Debug.tscn")
|
||||
add_child(DebugNodeGroup.instantiate())
|
@@ -1,13 +1,13 @@
|
||||
## This is a GDscript Node wich gets automatically added as Autoload while installing the addon.
|
||||
##
|
||||
## It can run in the background to comunicate with Discord.
|
||||
## You don't need to use it. If you remove it make sure to run [code]DiscordSDK.run_callbacks()[/code] in a [code]_process[/code] function.
|
||||
## You don't need to use it. If you remove it make sure to run [code]DiscordRPC.run_callbacks()[/code] in a [code]_process[/code] function.
|
||||
##
|
||||
## @tutorial: https://github.com/vaporvee/discord-sdk-godot/wiki
|
||||
## @tutorial: https://github.com/vaporvee/discord-rpc-godot/wiki
|
||||
extends Node
|
||||
|
||||
func _ready() -> void:
|
||||
pass
|
||||
|
||||
func _process(_delta) -> void:
|
||||
DiscordSDK.run_callbacks()
|
||||
DiscordRPC.run_callbacks()
|
7
project/addons/discord-rpc-gd/plugin.cfg
Normal file
@@ -0,0 +1,7 @@
|
||||
[plugin]
|
||||
|
||||
name="DiscordRPC"
|
||||
description="Discord RPC Plugin for GDScript in Godot"
|
||||
author="vaporvee"
|
||||
version="1.2.0"
|
||||
script="plugin.gd"
|
@@ -1,42 +1,42 @@
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
const DiscordSDKDebug = preload("res://addons/discord-sdk-gd/nodes/debug.gd")
|
||||
const DiscordSDKDebug_icon = preload("res://addons/discord-sdk-gd/Debug.svg")
|
||||
var loaded_DiscordSDKDebug = DiscordSDKDebug.new()
|
||||
var restart_window: ConfirmationDialog = preload("res://addons/discord-sdk-gd/restart_window.tscn").instantiate()
|
||||
const DiscordRPCDebug = preload("res://addons/discord-rpc-gd/nodes/debug.gd")
|
||||
const DiscordRPCDebug_icon = preload("res://addons/discord-rpc-gd/Debug.svg")
|
||||
var loaded_DiscordRPCDebug = DiscordRPCDebug.new()
|
||||
var restart_window: ConfirmationDialog = preload("res://addons/discord-rpc-gd/restart_window.tscn").instantiate()
|
||||
var plugin_cfg: ConfigFile = ConfigFile.new()
|
||||
const plugin_data_filename = "/plugin_data.cfg"
|
||||
|
||||
func _enter_tree() -> void:
|
||||
add_custom_type("DiscordSDKDebug","Node",DiscordSDKDebug,DiscordSDKDebug_icon)
|
||||
add_custom_type("DiscordRPCDebug","Node",DiscordRPCDebug,DiscordRPCDebug_icon)
|
||||
get_editor_interface().get_editor_settings().settings_changed.connect(_on_editor_settings_changed)
|
||||
|
||||
func _ready() -> void:
|
||||
await get_tree().create_timer(0.5).timeout
|
||||
plugin_cfg.load(get_editor_interface().get_editor_paths().get_data_dir() + plugin_data_filename)
|
||||
if !get_editor_interface().get_editor_settings().has_setting("DiscordSDK/EditorPresence/enabled"):
|
||||
get_editor_interface().get_editor_settings().set_setting("DiscordSDK/EditorPresence/enabled",plugin_cfg.get_value("Discord","editor_presence",false))
|
||||
if !get_editor_interface().get_editor_settings().has_setting("DiscordRPC/EditorPresence/enabled"):
|
||||
get_editor_interface().get_editor_settings().set_setting("DiscordRPC/EditorPresence/enabled",plugin_cfg.get_value("Discord","editor_presence",false))
|
||||
|
||||
func _exit_tree():
|
||||
if get_editor_interface().get_editor_settings().has_setting("DiscordSDK/EditorPresence/enabled"):
|
||||
get_editor_interface().get_editor_settings().erase("DiscordSDK/EditorPresence/enabled")
|
||||
if get_editor_interface().get_editor_settings().has_setting("DiscordRPC/EditorPresence/enabled"):
|
||||
get_editor_interface().get_editor_settings().erase("DiscordRPC/EditorPresence/enabled")
|
||||
|
||||
func _enable_plugin() -> void:
|
||||
if FileAccess.file_exists(ProjectSettings.globalize_path("res://") + "addons/discord-sdk-gd/bin/.gdignore"):
|
||||
DirAccess.remove_absolute(ProjectSettings.globalize_path("res://") + "addons/discord-sdk-gd/bin/.gdignore")
|
||||
add_autoload_singleton("DiscordSDKLoader","res://addons/discord-sdk-gd/nodes/discord_autoload.gd")
|
||||
if FileAccess.file_exists(ProjectSettings.globalize_path("res://") + "addons/discord-rpc-gd/bin/.gdignore"):
|
||||
DirAccess.remove_absolute(ProjectSettings.globalize_path("res://") + "addons/discord-rpc-gd/bin/.gdignore")
|
||||
add_autoload_singleton("DiscordRPCLoader","res://addons/discord-rpc-gd/nodes/discord_autoload.gd")
|
||||
restart_window.connect("confirmed", save_no_restart)
|
||||
restart_window.connect("canceled", save_and_restart)
|
||||
get_editor_interface().popup_dialog_centered(restart_window)
|
||||
print("IGNORE RED ERROR MESSAGES BEFORE THE SECOND RESTART!")
|
||||
|
||||
func _disable_plugin() -> void:
|
||||
remove_autoload_singleton("DiscordSDKLoader")
|
||||
FileAccess.open("res://addons/discord-sdk-gd/bin/.gdignore",FileAccess.WRITE)
|
||||
remove_custom_type("DiscordSDKDebug")
|
||||
get_editor_interface().get_editor_settings().erase("DiscordSDK/EditorPresence/enabled")
|
||||
push_warning("Please restart the editor to fully disable the DiscordSDK plugin")
|
||||
remove_autoload_singleton("DiscordRPCLoader")
|
||||
FileAccess.open("res://addons/discord-rpc-gd/bin/.gdignore",FileAccess.WRITE)
|
||||
remove_custom_type("DiscordRPCDebug")
|
||||
get_editor_interface().get_editor_settings().erase("DiscordRPC/EditorPresence/enabled")
|
||||
push_warning("Please restart the editor to fully disable the DiscordRPC plugin")
|
||||
|
||||
func save_and_restart() -> void:
|
||||
get_editor_interface().restart_editor(true)
|
||||
@@ -46,11 +46,11 @@ func save_no_restart() -> void:
|
||||
|
||||
var editor_presence: Node
|
||||
func _on_editor_settings_changed() -> void:
|
||||
plugin_cfg.set_value("Discord","editor_presence",get_editor_interface().get_editor_settings().get_setting("DiscordSDK/EditorPresence/enabled"))
|
||||
plugin_cfg.set_value("Discord","editor_presence",get_editor_interface().get_editor_settings().get_setting("DiscordRPC/EditorPresence/enabled"))
|
||||
plugin_cfg.save(get_editor_interface().get_editor_paths().get_data_dir() + plugin_data_filename)
|
||||
if ClassDB.class_exists("EditorPresence") && editor_presence == null:
|
||||
editor_presence = ClassDB.instantiate("EditorPresence")
|
||||
if get_editor_interface().get_editor_settings().has_setting("DiscordSDK/EditorPresence/enabled") && get_editor_interface().get_editor_settings().get_setting("DiscordSDK/EditorPresence/enabled"):
|
||||
if get_editor_interface().get_editor_settings().has_setting("DiscordRPC/EditorPresence/enabled") && get_editor_interface().get_editor_settings().get_setting("DiscordRPC/EditorPresence/enabled"):
|
||||
add_child(editor_presence)
|
||||
else:
|
||||
editor_presence.queue_free()
|
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://byc4c6d5tpomq"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://csl0e2px0cwc1" path="res://addons/discord-sdk-gd/Logo_V2_No_Bg.png" id="1_0svbg"]
|
||||
[ext_resource type="Texture2D" uid="uid://csl0e2px0cwc1" path="res://addons/discord-rpc-gd/Logo_V2_No_Bg.png" id="1_0svbg"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1t7mm"]
|
||||
|
||||
@@ -82,7 +82,7 @@ size_flags_vertical = 8
|
||||
mouse_default_cursor_shape = 16
|
||||
theme_override_font_sizes/font_size = 20
|
||||
text = "HOW TO USE"
|
||||
uri = "https://vaporvee.com/docs/discord-sdk-godot#quick-start"
|
||||
uri = "https://vaporvee.com/docs/discord-rpc-godot#quick-start"
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="Panel/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(128, 128)
|
@@ -1,7 +0,0 @@
|
||||
[plugin]
|
||||
|
||||
name="DiscordSDK"
|
||||
description="Discord Game SDK support for GDScript in Godot"
|
||||
author="vaporvee"
|
||||
version="1.2.0"
|
||||
script="plugin.gd"
|
@@ -1,813 +0,0 @@
|
||||
<svg width="1920" height="640" viewBox="0 0 1920 640" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="Banner" clip-path="url(#clip0_6_63)">
|
||||
<rect width="1920" height="640" fill="#404EED"/>
|
||||
<g id="Top">
|
||||
<path id="Vector" opacity="0.55" d="M231 135V178L-254 135H231Z" fill="url(#paint0_linear_6_63)"/>
|
||||
<path id="Vector_2" d="M277 135L287.469 28L342 134.818L277 135Z" fill="#8CA7F5"/>
|
||||
<path id="Vector_3" d="M346 133V78L390 127.976L346 133Z" fill="#8CA7F5"/>
|
||||
<path id="Vector_4" d="M245 128.988L294 137V54L245 128.988Z" fill="#8CA7F5"/>
|
||||
<path id="Vector_5" d="M215.799 119L413 123.467L362.121 148.627L341.373 163.669C324.81 177.461 304.016 185.002 282.555 185H233.39C229.98 184.983 226.633 184.06 223.681 182.325C220.732 180.591 218.285 178.103 216.586 175.113C214.888 172.122 213.996 168.733 214 165.285C214.004 161.837 214.904 158.45 216.611 155.464L215.799 119Z" fill="#3643A8"/>
|
||||
<path id="Vector_6" d="M351 155.941L219.016 151L216.57 155.5C214.872 158.401 213.986 161.686 214 165.026C214.016 168.366 214.931 171.643 216.656 174.529C218.381 177.415 220.854 179.81 223.828 181.472C226.797 183.134 230.167 184.006 233.6 184H282.97C304.52 184.003 325.4 176.704 342.032 163.353L351 155.941Z" fill="#294391"/>
|
||||
<path id="Vector_7" d="M229 153L246.217 177H257L248.754 153H229Z" fill="#253C82"/>
|
||||
<path id="Vector_8" d="M257 148H201V158H257V148Z" fill="#244CBF"/>
|
||||
<path id="Vector_9" d="M111 194H291C291 194 248.807 147.104 223.485 175.242C223.485 175.242 164.451 128.311 111 194Z" fill="#B1C5FD"/>
|
||||
</g>
|
||||
<path id="Vector_10" opacity="0.39" d="M1762.63 53.5504L1767.11 63.8528C1767.13 63.8966 1767.16 63.9338 1767.2 63.9599C1767.24 63.9861 1767.28 64 1767.33 64C1767.38 64 1767.43 63.9861 1767.47 63.9599C1767.51 63.9338 1767.54 63.8966 1767.56 63.8528L1772.37 53.5504L1782.89 48.9307C1782.92 48.9041 1782.95 48.8698 1782.97 48.8309C1782.99 48.7921 1783 48.7492 1783 48.7058C1783 48.6625 1782.99 48.62 1782.97 48.5812C1782.95 48.5419 1782.92 48.508 1782.89 48.481L1772.37 43.8613L1767.72 33.1092C1767.7 33.0752 1767.66 33.0478 1767.63 33.029C1767.58 33.0098 1767.54 33 1767.5 33C1767.45 33 1767.41 33.0098 1767.37 33.029C1767.33 33.0478 1767.3 33.0752 1767.27 33.1092L1762.63 43.5751L1752.15 48.1948C1752.1 48.214 1752.07 48.2455 1752.04 48.2856C1752.01 48.3252 1752 48.3718 1752 48.4197C1752 48.4675 1752.01 48.5141 1752.04 48.5542C1752.07 48.5942 1752.1 48.6257 1752.15 48.6445L1762.63 53.2642V53.5504Z" fill="white"/>
|
||||
<path id="Vector_11" d="M1920 90.726C1841.62 10.0141 1773.31 113.834 1773.31 113.834C1687.52 88.8973 1646 136 1646 136H1920V90.726Z" fill="#B1C5FD"/>
|
||||
<g id="Right" clip-path="url(#clip1_6_63)">
|
||||
<path id="Vector_12" opacity="0.4" d="M2518.17 526.879C2495.71 418.986 2363.02 432.552 2323.5 440.273C2303.95 338.015 2216.8 287.721 2123 277.078C2106.57 236.384 2057.9 186.716 1970.55 211.759C1859.07 246.818 1871.97 379.336 1871.97 379.336C1715.35 357.632 1606.79 423.368 1558.95 494.74C1345.56 495.992 1305 715.325 1305 715.325L1970.55 714.699H2803.94C2782.31 603.467 2702.24 520.409 2518.17 526.879Z" fill="#7196FF"/>
|
||||
<g id="Clip path group">
|
||||
<mask id="mask0_6_63" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="1509" y="220" width="900" height="473">
|
||||
<g id="clip0">
|
||||
<path id="Vector_13" d="M2408.86 220.065H1509.3V692.516H2408.86V220.065Z" fill="white"/>
|
||||
</g>
|
||||
</mask>
|
||||
<g mask="url(#mask0_6_63)">
|
||||
<g id="Group">
|
||||
<path id="Vector_14" d="M1638.84 452.054L1644.33 416.879C1644.5 415.655 1645.11 414.538 1646.06 413.749C1647.01 412.958 1648.21 412.553 1649.45 412.612C1650.16 412.631 1650.86 412.8 1651.5 413.111C1652.14 413.421 1652.71 413.864 1653.16 414.412C1653.62 414.958 1653.96 415.596 1654.15 416.284C1654.34 416.971 1654.38 417.691 1654.27 418.395L1648.88 454.803L1638.84 452.054Z" fill="#E66CA5"/>
|
||||
<path id="Vector_15" d="M1644.71 445.615L1649.45 423.524C1649.49 423.34 1649.61 423.178 1649.76 423.072C1649.92 422.969 1650.11 422.926 1650.3 422.956C1650.68 423.05 1650.96 423.334 1650.87 423.713L1647.84 445.331L1644.71 445.615Z" fill="#F085B7"/>
|
||||
<path id="Vector_16" d="M1644.33 416.877C1644.5 415.613 1645.14 414.461 1646.13 413.653C1645.28 419.436 1643.67 429.677 1641.39 446.743L1639.59 447.028L1644.33 416.877Z" fill="#FFABBB"/>
|
||||
<path id="Vector_17" d="M2078.87 253.902H1752.57V624.042H2078.87V253.902Z" fill="#FEC9AA"/>
|
||||
<path id="Vector_18" d="M1713.74 380.76L1703.51 375.545L1696.51 384.742L1707.11 391.379L1713.74 380.76Z" fill="#133DBD"/>
|
||||
<path id="Vector_19" d="M1715.63 402.194L1736.08 440.593C1736.56 441.454 1736.74 442.446 1736.6 443.421C1736.47 444.395 1736.02 445.299 1735.33 445.998L1735.04 446.282C1731.66 449.818 1727.43 452.428 1722.76 453.856C1718.08 455.283 1713.12 455.483 1708.34 454.434C1707.65 454.283 1707.02 453.901 1706.58 453.351C1706.13 452.799 1705.88 452.112 1705.88 451.4L1704.93 405.038C1704.84 387.499 1705.69 383.612 1715.63 402.194Z" fill="#33BEB5"/>
|
||||
<path id="Vector_20" d="M1735.04 446.271C1735.79 445.485 1736.27 444.489 1736.42 443.42C1736.58 442.35 1736.39 441.258 1735.9 440.297L1715.63 402.183C1710.8 393.176 1708.15 389.384 1706.64 390.048C1710.52 416.973 1718.48 452.054 1718.48 452.054L1723.97 453.381C1728.17 451.918 1731.96 449.481 1735.04 446.271Z" fill="#33A2BE"/>
|
||||
<path id="Vector_21" d="M1730.12 429.396C1728.89 427.119 1728.32 426.362 1727.75 427.5C1719.32 414.037 1715.25 416.691 1715.25 429.775C1715.25 429.775 1709.38 426.647 1710.04 438.213C1709.21 437.987 1708.32 438.04 1707.52 438.365C1706.71 438.691 1706.04 439.269 1705.59 440.015L1705.88 451.391C1705.88 451.999 1706.06 452.59 1706.4 453.095C1706.74 453.602 1707.21 453.997 1707.77 454.236C1712.78 455.035 1717.91 454.662 1722.76 453.15C1727.6 451.636 1732.03 449.024 1735.7 445.514C1736.22 444.811 1736.54 443.975 1736.6 443.103C1736.67 442.231 1736.49 441.358 1736.08 440.584L1730.12 429.396Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_22" d="M1736.09 440.584L1730.12 429.396C1728.89 427.119 1728.32 426.362 1727.75 427.5C1719.33 414.037 1715.25 416.691 1715.25 429.775C1714.76 429.522 1714.2 429.392 1713.64 429.396C1715.25 429.775 1715.35 431.386 1716.3 434.895C1717.24 438.403 1717.91 441.531 1717.91 441.531L1732.87 447.884C1733.88 447.175 1734.83 446.382 1735.71 445.514C1736.23 444.811 1736.54 443.975 1736.61 443.103C1736.67 442.231 1736.49 441.358 1736.09 440.584Z" fill="#F7D197"/>
|
||||
<path id="Vector_23" d="M1735.43 441.053C1728.23 433.277 1721.79 430.528 1707.21 451.86C1707.07 452.089 1706.98 452.349 1706.96 452.617C1706.93 452.886 1706.97 453.157 1707.08 453.406C1707.18 453.656 1707.34 453.878 1707.54 454.055C1707.75 454.231 1707.99 454.357 1708.25 454.421C1713.04 455.458 1718.02 455.253 1722.71 453.826C1727.4 452.4 1731.64 449.798 1735.05 446.267L1735.33 445.983L1735.99 445.129C1736.36 444.48 1736.49 443.73 1736.39 442.994C1736.29 442.26 1735.95 441.578 1735.43 441.053Z" fill="#242236"/>
|
||||
<path id="Vector_24" d="M1734.2 447.704L1732.3 438.032C1727 433.671 1721.41 433.577 1712.04 445.333L1715.92 454.53C1722.51 453.912 1728.81 451.557 1734.2 447.704Z" fill="#9E4B34"/>
|
||||
<path id="Vector_25" d="M1734.67 447.323L1727.76 446.755L1726.81 449.408L1725.11 445.711C1723.5 441.919 1723.4 442.013 1721.98 445.237C1720.56 448.461 1714.22 447.323 1714.22 447.323L1712.89 444.384C1721.13 434.428 1726.34 433.859 1731.16 437.177L1734.67 447.323Z" fill="#7A2F28"/>
|
||||
<path id="Vector_26" d="M1692.15 467.228C1687.89 470.452 1687.04 470.071 1688.08 476.045C1689.12 482.018 1692.15 467.228 1692.15 467.228Z" fill="#3EE8DD"/>
|
||||
<path id="Vector_27" d="M1766.39 498.52C1767.62 510.466 1764.12 510.466 1758.72 513.215H1679.75C1678.66 510.801 1677.89 508.25 1677.48 505.632C1676.72 499.943 1676.06 498.994 1680.13 491.693C1680.41 486.1 1682.31 482.686 1686.57 477.188C1688.97 473.44 1691.66 469.891 1694.62 466.569L1747.36 468.465C1749.55 469.932 1751.6 471.582 1753.51 473.395C1756.45 476.144 1758.15 478.609 1758.44 480.506C1758.54 481.293 1758.6 482.084 1758.63 482.877C1765.73 485.91 1765.73 492.642 1766.39 498.52Z" fill="#274BA3"/>
|
||||
<path id="Vector_28" d="M1747.63 486.854C1753.22 480.975 1754.17 479.365 1754.74 478.606C1755.3 477.847 1754.36 477.184 1753.5 476.519C1752.65 475.856 1752.75 475.476 1750.76 478.89C1748.77 482.302 1744.32 490.268 1747.63 486.854Z" fill="#1E397D"/>
|
||||
<path id="Vector_29" d="M1749.72 484.485C1758.72 485.053 1760.61 485.244 1762.03 486.855C1763.45 488.467 1763.64 489.793 1764.02 491.217C1764.4 492.639 1763.74 492.639 1758.91 490.268C1754.08 487.899 1748.49 485.812 1748.49 485.812L1749.72 484.485Z" fill="#1E397D"/>
|
||||
<path id="Vector_30" d="M1701.14 486.946L1699.81 492.825L1684.29 494.341C1683.82 494.388 1683.38 494.608 1683.07 494.959C1682.75 495.311 1682.58 495.766 1682.58 496.237V497.755C1682.57 497.966 1682.61 498.177 1682.7 498.369C1682.79 498.559 1682.92 498.729 1683.09 498.859C1683.26 498.988 1683.45 499.075 1683.66 499.115C1683.87 499.154 1684.08 499.143 1684.29 499.083L1699.81 494.057L1713.73 496.237C1713.88 496.26 1714.03 496.313 1714.16 496.394C1714.29 496.473 1714.4 496.576 1714.49 496.7C1714.57 496.825 1714.64 496.964 1714.67 497.113C1714.7 497.262 1714.71 497.416 1714.68 497.565L1712.6 513.208H1750.47C1757.67 505.054 1750.38 489.032 1747.25 482.869L1715.06 478.508L1699.81 469.311L1701.42 478.698C1701.9 481.438 1701.8 484.246 1701.14 486.946Z" fill="#1A3578"/>
|
||||
<path id="Vector_31" d="M1714.12 501.926C1718 504.201 1720.94 505.907 1722.93 506.856C1724.91 507.803 1730.5 509.511 1732.2 510.08C1733.91 510.649 1735.23 511.502 1734.19 513.208H1712.79L1714.12 501.926Z" fill="#7A2F28"/>
|
||||
<path id="Vector_32" d="M1716.86 503.538L1714.12 501.926L1712.79 513.208H1714.69L1716.86 503.538Z" fill="#5E221D"/>
|
||||
<path id="Vector_33" d="M1707.58 454.718C1704.36 455.665 1704.07 454.718 1701.9 460.88L1706.44 461.166L1707.58 454.718Z" fill="#3EE8DD"/>
|
||||
<path id="Vector_34" d="M1703.32 460.501L1704.55 457.279C1704.82 456.643 1705.23 456.078 1705.76 455.633C1706.28 455.189 1706.91 454.874 1707.58 454.718L1712.41 453.771L1731.54 453.391L1741.95 458.701C1742.38 458.908 1742.74 459.215 1743.02 459.594C1743.3 459.974 1743.49 460.415 1743.56 460.882L1743.94 463.347L1748.96 466.665C1749.24 466.845 1749.46 467.102 1749.59 467.405C1749.73 467.708 1749.77 468.043 1749.72 468.371C1748.39 479.939 1736.56 497.572 1720.08 489.703C1707.77 483.826 1696.41 475.293 1690.92 470.932L1688.83 473.775C1688.26 471.026 1688.74 469.983 1690.54 468.561C1691.11 468.169 1691.65 467.725 1692.15 467.233C1692.31 466.776 1692.41 466.297 1692.43 465.812C1692.9 463.631 1692.43 463.062 1694.99 462.494L1703.32 460.501Z" fill="#33BEB5"/>
|
||||
<path id="Vector_35" d="M1707.11 457.842C1709.86 459.645 1711.09 460.592 1713.17 461.825C1715.26 463.057 1716.3 465.618 1713.36 464.479C1710.98 463.541 1708.67 462.432 1706.45 461.16C1704.75 460.117 1705.41 459.739 1705.6 458.695C1705.79 457.652 1706.07 457.18 1707.11 457.842Z" fill="#37CFC5"/>
|
||||
<path id="Vector_36" d="M1748.96 466.665L1743.94 463.347L1743.56 460.882C1743.49 460.415 1743.31 459.974 1743.02 459.594C1742.74 459.215 1742.38 458.908 1741.95 458.701L1731.54 453.391H1728.6L1716.58 479.37C1717.62 485.057 1719.32 485.816 1720.74 487.144C1722.16 488.471 1722.16 488.565 1721.69 490.273C1737.31 496.341 1748.49 479.464 1749.72 468.277C1749.75 467.964 1749.7 467.648 1749.57 467.363C1749.43 467.079 1749.22 466.838 1748.96 466.665Z" fill="#33A2BE"/>
|
||||
<path id="Vector_37" d="M1742.33 461.546C1742.9 462.968 1743.28 463.062 1742.33 465.623C1740.83 469.009 1738.95 472.22 1736.75 475.199C1735.42 476.905 1734.76 476.905 1736.75 471.691C1738.74 466.476 1739.3 465.339 1739.87 462.968C1740.44 460.597 1741.39 458.891 1742.33 461.546Z" fill="#2B98B3"/>
|
||||
<path id="Vector_38" d="M1705.31 463.723C1708.48 468.179 1712.39 472.06 1716.87 475.197C1720.37 477.662 1719.23 476.334 1717.62 473.489C1716.01 470.646 1713.08 469.318 1709.86 466.188C1706.64 463.06 1702.57 459.933 1705.31 463.723Z" fill="#319BB5"/>
|
||||
<path id="Vector_39" d="M1693.1 467.039C1693.05 467.134 1693.02 467.233 1693.01 467.339C1693.01 467.442 1693.02 467.546 1693.06 467.644C1693.1 467.742 1693.15 467.83 1693.22 467.908C1693.29 467.983 1693.38 468.043 1693.47 468.083C1701.7 472.664 1710.17 476.779 1718.85 480.408C1723.4 482.02 1720.65 480.314 1715.06 476.711C1709.48 473.109 1700.1 467.136 1697.07 465.333C1694.04 463.531 1694.04 463.247 1693.1 467.039Z" fill="#33A2BE"/>
|
||||
<path id="Vector_40" d="M1712.5 454.903C1708.05 455.66 1705.59 455.566 1712.5 459.643C1719.41 463.72 1712.5 454.903 1712.5 454.903Z" fill="#1E6470"/>
|
||||
<path id="Vector_41" d="M1724.73 441.147L1725.48 444.561C1725.58 444.655 1725.67 444.845 1725.86 444.845L1727.28 445.033L1726.05 442.19V442L1726.34 440.009L1725.01 440.768L1724.73 441.147Z" fill="#66251F"/>
|
||||
<path id="Vector_42" d="M1717.91 444.574L1720.47 444.954C1719.52 446.376 1718.39 446.186 1717.91 444.574Z" fill="#5E221D"/>
|
||||
<path id="Vector_43" d="M1727.28 443.627L1729.84 442.868C1729.55 444.576 1728.42 444.86 1727.28 443.627Z" fill="#5E221D"/>
|
||||
<path id="Vector_44" d="M1719.62 445.048C1720.04 445.048 1720.38 444.455 1720.38 443.721C1720.38 442.988 1720.04 442.393 1719.62 442.393C1719.2 442.393 1718.86 442.988 1718.86 443.721C1718.86 444.455 1719.2 445.048 1719.62 445.048Z" fill="black"/>
|
||||
<path id="Vector_45" d="M1728.7 443.333C1729.12 443.333 1729.46 442.738 1729.46 442.005C1729.46 441.271 1729.12 440.678 1728.7 440.678C1728.29 440.678 1727.95 441.271 1727.95 442.005C1727.95 442.738 1728.29 443.333 1728.7 443.333Z" fill="black"/>
|
||||
<path id="Vector_46" d="M1731.16 437.171L1733.24 438.781C1734 440.868 1734.28 443.807 1735.04 446.272C1735.8 448.737 1736.84 452.434 1736.37 454.521C1735.89 456.607 1736.27 456.795 1737.6 459.451C1738.92 462.106 1741.39 464.949 1740.53 468.173C1741.95 470.354 1741.48 471.681 1741.1 473.672C1740.72 475.664 1739.11 480.973 1735.51 480.879C1734.3 482.575 1732.6 483.863 1730.64 484.575C1728.68 485.285 1726.55 485.385 1724.53 484.859C1718.76 483.438 1712.98 479.457 1713.64 474.241C1711.75 472.725 1712.13 468.742 1712.41 466.561C1712.62 464.623 1712.32 462.667 1711.56 460.872C1710.9 458.976 1710.9 457.082 1711.46 453.099C1710.8 451.451 1710.32 449.734 1710.04 447.979L1712.88 444.282L1714.21 447.316C1714.85 448.581 1715.42 449.879 1715.92 451.202C1716.39 450.993 1716.91 450.896 1717.43 450.918C1717.78 450.187 1718.32 449.56 1718.98 449.097C1719.64 448.632 1720.41 448.344 1721.22 448.263L1726.81 449.4L1727.75 446.747C1730.4 446.367 1731.73 446.367 1732.68 447.031C1733.18 445.531 1733.24 443.92 1732.86 442.386C1732.39 440.584 1731.16 437.171 1731.16 437.171Z" fill="white"/>
|
||||
<path id="Vector_47" d="M1727.28 451.581L1725.1 451.108C1724.06 450.824 1724.15 450.728 1721.22 448.263L1726.81 449.4L1727.75 446.747C1730.4 446.367 1731.73 446.367 1732.68 447.031C1733.18 445.531 1733.24 443.92 1732.87 442.386C1732.39 440.584 1731.16 437.171 1731.16 437.171L1733.15 438.781C1734 440.868 1734.28 443.807 1735.04 446.272C1735.8 448.737 1736.84 452.434 1736.37 454.521C1735.89 456.607 1736.27 456.795 1737.6 459.451C1738.92 462.106 1741.39 464.949 1740.53 468.173C1741.95 470.354 1741.48 471.681 1741.1 473.672C1740.72 475.664 1739.11 480.973 1735.52 480.879C1734.3 482.575 1732.6 483.863 1730.64 484.575C1728.68 485.285 1726.55 485.385 1724.53 484.859C1718.76 483.438 1712.98 479.457 1713.64 474.241C1715.44 479.171 1719.23 478.223 1719.23 478.223C1721.53 477.724 1723.88 477.502 1726.24 477.56C1727.56 475.19 1729.17 472.915 1730.5 471.966C1733.34 466.561 1731.16 460.778 1729.84 457.554L1727.28 451.581Z" fill="#D6DFFF"/>
|
||||
<path id="Vector_48" d="M1727.28 451.59C1728.7 451.875 1728.61 450.641 1728.51 449.41C1728.46 448.479 1728.2 447.572 1727.76 446.755L1726.81 449.41L1721.22 448.27C1724.16 450.735 1724.06 450.831 1725.11 451.116L1727.28 451.59Z" fill="#CAD5FC"/>
|
||||
<path id="Vector_49" d="M1716.58 442.958L1721.78 441.44C1721.34 441.192 1720.86 441.032 1720.36 440.973C1719.85 440.915 1719.35 440.958 1718.86 441.1C1718.38 441.241 1717.92 441.478 1717.53 441.798C1717.14 442.116 1716.81 442.51 1716.58 442.958Z" fill="#CFDEFF"/>
|
||||
<path id="Vector_50" d="M1725.57 440.866L1730.96 439.823C1730.1 439.267 1729.06 439.066 1728.06 439.262C1727.05 439.456 1726.16 440.03 1725.57 440.866Z" fill="#CFDEFF"/>
|
||||
<path id="Vector_51" d="M1722.92 446.651L1724.82 447.694L1722.45 447.316C1722.16 447.222 1722.07 447.222 1722.26 446.841C1722.45 446.463 1722.54 446.463 1722.92 446.651Z" fill="#7A2F28"/>
|
||||
<path id="Vector_52" d="M1729.55 453.57C1729.53 453.924 1729.39 454.261 1729.15 454.521C1728.91 454.78 1728.58 454.948 1728.23 454.991C1722.55 455.75 1720.09 454.423 1719.14 453.664C1719.02 453.556 1718.94 453.423 1718.89 453.274C1718.84 453.125 1718.83 452.965 1718.85 452.811V452.62C1721.88 453.664 1726.43 453.191 1727.47 453.001C1728.51 452.811 1728.13 452.526 1728.04 452.052C1728.24 452.052 1728.43 452.091 1728.62 452.169C1728.8 452.244 1728.97 452.355 1729.11 452.496C1729.25 452.637 1729.36 452.805 1729.44 452.99C1729.52 453.172 1729.55 453.37 1729.55 453.57Z" fill="#DE5D70"/>
|
||||
<path id="Vector_53" d="M1727.28 455.091C1726.69 454.381 1725.99 453.773 1725.2 453.289C1723.06 453.436 1720.91 453.212 1718.85 452.626V452.814C1718.83 452.969 1718.84 453.129 1718.89 453.278C1718.94 453.426 1719.02 453.56 1719.14 453.667H1719.23C1720.09 454.332 1722.36 455.66 1727.28 455.091Z" fill="#B83D50"/>
|
||||
<path id="Vector_54" d="M1750.48 513.213H1746.22C1739.31 504.585 1742.91 488.658 1745.94 482.304L1749.72 484.485C1749.72 484.485 1760.42 505.817 1750.48 513.213Z" fill="#1C1B29"/>
|
||||
<path id="Vector_55" d="M1742.71 484.293C1745.22 484.293 1747.26 482.255 1747.26 479.743C1747.26 477.229 1745.22 475.192 1742.71 475.192C1740.2 475.192 1738.17 477.229 1738.17 479.743C1738.17 482.255 1740.2 484.293 1742.71 484.293Z" fill="#F7E9CB"/>
|
||||
<path id="Vector_56" d="M1747.25 481.351C1748.51 481.351 1749.52 480.332 1749.52 479.076C1749.52 477.818 1748.51 476.8 1747.25 476.8C1746 476.8 1744.98 477.818 1744.98 479.076C1744.98 480.332 1746 481.351 1747.25 481.351Z" fill="#F7E9CB"/>
|
||||
<path id="Vector_57" d="M1748.11 478.602H1734.66C1731.92 485.449 1731.92 493.09 1734.66 499.936H1748.11C1750.76 493.072 1750.76 485.466 1748.11 478.602Z" fill="#DB7B47"/>
|
||||
<path id="Vector_58" d="M1738.46 478.602C1737.07 485.63 1736.88 492.844 1737.89 499.936H1738.55L1739.22 478.602H1738.46Z" fill="#C2612C"/>
|
||||
<path id="Vector_59" d="M1744.42 478.602C1746.6 486.756 1745.37 499.936 1745.37 499.936H1744.42L1743.57 478.602H1744.42Z" fill="#C2612C"/>
|
||||
<path id="Vector_60" d="M1722.6 428.628C1723.54 428.176 1723.65 426.432 1722.84 424.731C1722.02 423.031 1720.6 422.02 1719.65 422.472C1718.71 422.926 1718.61 424.669 1719.42 426.37C1720.23 428.07 1721.66 429.081 1722.6 428.628Z" fill="#FF9CCD"/>
|
||||
<path id="Vector_61" d="M1722.84 424.656C1722.08 422.95 1720.56 421.907 1719.62 422.381C1719.5 422.44 1719.4 422.519 1719.32 422.617C1719.24 422.715 1719.18 422.828 1719.14 422.95C1720.75 422.856 1719.9 424.752 1722.84 424.656Z" fill="#FFEBF5"/>
|
||||
<path id="Vector_62" d="M1718.86 424.089C1718.88 424.871 1719.04 425.641 1719.34 426.366L1719.71 426.935C1720 426.839 1720.66 426.65 1720.94 427.123C1721.23 427.598 1721.61 428.451 1722.65 428.641C1722.9 428.439 1723.11 428.179 1723.24 427.882C1723.37 427.584 1723.43 427.259 1723.41 426.935H1723.12C1721.13 426.935 1720 424.848 1718.86 424.089Z" fill="#FF70B7"/>
|
||||
<path id="Vector_63" d="M1712.89 434.812C1713.41 434.812 1713.83 434.26 1713.83 433.58C1713.83 432.899 1713.41 432.347 1712.89 432.347C1712.37 432.347 1711.94 432.899 1711.94 433.58C1711.94 434.26 1712.37 434.812 1712.89 434.812Z" fill="#F7D197"/>
|
||||
<path id="Vector_64" d="M1707.86 442.949C1708.39 442.949 1708.81 442.397 1708.81 441.715C1708.81 441.036 1708.39 440.484 1707.86 440.484C1707.34 440.484 1706.92 441.036 1706.92 441.715C1706.92 442.397 1707.34 442.949 1707.86 442.949Z" fill="#F7D197"/>
|
||||
<path id="Vector_65" d="M1703.51 375.545L1701.52 381.992L1696.51 384.742L1703.51 375.545Z" fill="#179DE0"/>
|
||||
<path id="Vector_66" d="M1710.04 447.98C1710.32 449.459 1710.7 450.914 1711.18 452.342C1711.18 451.204 1711.65 449.877 1712.41 449.592C1713.17 449.308 1713.26 447.412 1714.21 447.318L1712.88 444.282L1710.04 447.98Z" fill="#A8C3FF"/>
|
||||
<path id="Vector_67" d="M1719.7 458.129C1721.98 459.552 1723.11 460.405 1723.11 462.586C1721.63 461.403 1720.46 459.872 1719.7 458.129Z" fill="#D6DFFF"/>
|
||||
<path id="Vector_68" d="M1730.22 458.507C1732.59 460.878 1733.44 462.584 1733.63 463.912C1732.67 463.559 1731.77 463.045 1730.98 462.394L1730.22 458.507Z" fill="white"/>
|
||||
<path id="Vector_69" d="M1712.51 454.903C1712.62 456.381 1713.01 457.825 1713.64 459.168C1712.03 457.937 1711.94 456.893 1712.51 454.903Z" fill="#D6DFFF"/>
|
||||
<path id="Vector_70" d="M1718.1 466.094C1719.52 468.275 1722.83 468.275 1722.83 468.275C1719.8 469.887 1718.48 469.983 1718.1 466.094Z" fill="#D6DFFF"/>
|
||||
<path id="Vector_71" d="M1733.24 448.361C1734.57 449.784 1734.38 452.344 1734.38 452.344C1734.38 452.344 1736.93 450.163 1733.24 448.361Z" fill="#C7D3FC"/>
|
||||
<path id="Vector_72" d="M1737.6 467.702C1738.16 469.693 1737.6 471.399 1736.37 471.97C1736.49 470.48 1736.91 469.03 1737.6 467.702Z" fill="#C7D3FC"/>
|
||||
<path id="Vector_73" d="M1721.13 439.731C1723.21 439.103 1725.33 438.597 1727.47 438.215C1724.06 437.836 1722.17 438.405 1721.13 439.731Z" fill="#66251F"/>
|
||||
<path id="Vector_74" d="M1715.07 443.99C1715.64 443.8 1716.3 443.42 1716.87 443.99H1715.07Z" fill="#5E221D"/>
|
||||
<path id="Vector_75" d="M1715.35 445.226C1715.73 444.751 1716.2 444.182 1716.96 444.467L1715.35 445.226Z" fill="#5E221D"/>
|
||||
<path id="Vector_76" d="M1731.73 440.582C1731.16 440.676 1730.4 440.866 1730.31 441.623L1731.73 440.582Z" fill="#5E221D"/>
|
||||
<path id="Vector_77" d="M1732.3 441.623C1731.73 441.529 1730.98 441.339 1730.5 442.098L1732.3 441.623Z" fill="#5E221D"/>
|
||||
<path id="Vector_78" d="M1723.31 443.806C1723.33 444.243 1723.44 444.672 1723.63 445.064C1723.83 445.455 1724.1 445.802 1724.44 446.08C1724.92 446.461 1724.54 445.796 1723.97 444.565C1723.4 443.331 1723.12 443.047 1723.31 443.806Z" fill="#C27059"/>
|
||||
<path id="Vector_79" d="M1719.9 451.967C1719.68 451.965 1719.47 452.027 1719.28 452.144C1719.1 452.263 1718.95 452.432 1718.86 452.63C1721.89 453.673 1726.44 453.199 1727.48 453.01C1728.52 452.82 1728.14 452.536 1728.05 452.061H1727.95C1725.27 452.359 1722.57 452.327 1719.9 451.967Z" fill="#D6DFFF"/>
|
||||
<path id="Vector_80" d="M1733.15 438.781L1731.16 437.171C1731.16 437.171 1731.92 439.256 1732.49 441.058L1734 442.005C1733.83 440.904 1733.54 439.825 1733.15 438.781Z" fill="#A8C3FF"/>
|
||||
<path id="Vector_81" d="M1752.09 494.149C1752.46 494.957 1752.49 495.876 1752.19 496.708C1752.02 497.039 1751.76 497.314 1751.44 497.499C1751.13 497.685 1750.76 497.772 1750.39 497.751H1744.23C1743 497.751 1742.72 496.992 1742.72 496.804C1742.72 496.614 1742.62 495.476 1743.29 495.286C1744.59 494.934 1745.92 494.682 1747.26 494.527C1745.59 494.631 1743.92 494.631 1742.25 494.527C1740.45 494.433 1740.26 493.486 1740.26 491.874C1740.26 491.874 1738.46 492.062 1738.27 491.021C1738.08 489.978 1737.61 488.65 1739.4 488.27L1747.64 486.848L1740.54 486.375C1739.03 486.185 1738.46 486.089 1738.17 485.142C1737.89 484.195 1738.55 483.53 1739.78 483.436C1742.53 483.151 1746.98 482.867 1749.82 482.867C1750.24 482.876 1750.65 483.046 1750.96 483.34C1751.33 483.681 1751.58 484.136 1751.66 484.633C1751.75 485.132 1751.67 485.645 1751.43 486.089C1752.95 487.891 1753.14 488.27 1752.09 489.882C1752.63 490.462 1752.93 491.224 1752.93 492.015C1752.93 492.808 1752.63 493.569 1752.09 494.149Z" fill="#7A2F28"/>
|
||||
<path id="Vector_82" d="M1747.63 486.856L1750.28 486.477L1750.09 485.812L1747.25 486.761L1747.63 486.856Z" fill="#5E221D"/>
|
||||
<path id="Vector_83" d="M1749.54 489.503L1739.5 491.684L1740.26 491.874L1746.89 490.546L1749.92 490.262L1749.54 489.503Z" fill="#5E221D"/>
|
||||
<path id="Vector_84" d="M1747.25 494.531L1750.76 494.437L1750.66 493.584L1748.96 493.962L1747.25 494.531Z" fill="#5E221D"/>
|
||||
<path id="Vector_85" d="M1733.62 496.806C1733.24 491.023 1735.32 482.869 1737.12 478.602H1734.66C1732.38 484.404 1732.02 490.782 1733.62 496.806Z" fill="#FFAE82"/>
|
||||
<path id="Vector_86" d="M1741.77 478.604C1744.61 481.163 1745.46 478.604 1745.46 478.604L1742.9 477.751L1741.77 478.604Z" fill="#F7E9CB"/>
|
||||
<path id="Vector_87" d="M1697.16 498.329C1688.64 502.216 1685.52 502.406 1684.19 502.785C1682.87 503.165 1681.35 503.45 1684.19 505.44C1687.03 507.43 1687.51 507.621 1692.15 504.112C1696.79 500.604 1700.95 496.623 1697.16 498.329Z" fill="#1A3E9C"/>
|
||||
<path id="Vector_88" d="M1699.82 492.825C1698.91 489.204 1697.74 485.656 1696.31 482.206C1695.46 480.31 1695.93 479.553 1696.69 478.984C1697.45 478.415 1697.73 478.984 1698.3 481.069C1698.87 483.155 1700.67 492.162 1700.67 492.162L1699.82 492.825Z" fill="#1E397D"/>
|
||||
<path id="Vector_89" d="M1689.22 481.065C1692.25 484.952 1693.95 486.848 1694.9 488.272C1695.84 489.693 1695.56 489.409 1691.2 488.935C1686.85 488.46 1684.2 488.744 1684.58 487.132C1684.96 485.522 1686.47 482.108 1686.85 481.065C1687.23 480.022 1688.08 479.643 1689.22 481.065Z" fill="#1A3E9C"/>
|
||||
<path id="Vector_90" d="M2045.16 285.094H1752.57V394.031L2078.96 538.048V370.992L2059.55 295.713L2045.16 285.094Z" fill="url(#paint1_linear_6_63)"/>
|
||||
<path id="Vector_91" d="M2078.87 310.51H1752.57V317.734H2078.87V310.51Z" fill="#C9795F"/>
|
||||
<path id="Vector_92" d="M1915.81 370.991C1927.72 370.991 1939.13 375.726 1947.55 384.154C1955.97 392.582 1960.7 404.012 1960.7 415.932V624.041H1870.93V415.932C1870.93 404.012 1875.66 392.582 1884.08 384.154C1892.49 375.726 1903.91 370.991 1915.81 370.991Z" fill="#1C1B29"/>
|
||||
<path id="Vector_93" d="M1926.89 372.318C1917.24 374.819 1908.69 380.46 1902.59 388.354C1896.49 396.249 1893.18 405.949 1893.18 415.932V624.041H1870.93V415.932C1870.93 404.012 1875.66 392.582 1884.08 384.154C1892.49 375.726 1903.91 370.991 1915.81 370.991C1919.54 370.988 1923.26 371.434 1926.89 372.318Z" fill="#41314A"/>
|
||||
<path id="Vector_94" d="M1735.8 317.708H1722.83V343.203H1735.8V317.708Z" fill="#F7AB5B"/>
|
||||
<path id="Vector_95" d="M1735.8 317.708H1726.81V343.203H1735.8V317.708Z" fill="#F09E48"/>
|
||||
<path id="Vector_96" d="M1743.1 338.754H1730.12V364.248H1743.1V338.754Z" fill="#FFB464"/>
|
||||
<path id="Vector_97" d="M1787.13 349.093H1774.16V374.587H1787.13V349.093Z" fill="#FFB464"/>
|
||||
<path id="Vector_98" d="M1787.03 349.093H1782.01V374.587H1787.03V349.093Z" fill="#FAA255"/>
|
||||
<path id="Vector_99" d="M1854.73 345.489H1841.76V370.984H1854.73V345.489Z" fill="#FFB464"/>
|
||||
<path id="Vector_100" d="M1854.64 345.489H1848.2V370.984H1854.64V345.489Z" fill="#FAA255"/>
|
||||
<path id="Vector_101" d="M1579.46 568.191C1589.22 578.62 1594.05 603.176 1583.44 624.035H1540.07C1529.28 606.59 1532.69 582.887 1543.39 568.191H1579.46Z" fill="#914343"/>
|
||||
<path id="Vector_102" d="M1544.52 624.035H1583.44C1594.05 603.176 1589.22 578.62 1579.46 568.191H1560.81L1544.52 624.035Z" fill="#803333"/>
|
||||
<path id="Vector_103" d="M1574.54 568.191C1578.74 586.493 1579.83 605.371 1577.76 624.035H1579.47C1583.63 601.375 1580.89 584.593 1576.91 568.191H1574.54Z" fill="#732A2A"/>
|
||||
<path id="Vector_104" d="M1564.79 568.191C1567.46 586.68 1568.12 605.403 1566.78 624.035H1568.96C1571.7 601.375 1569.81 584.593 1567.35 568.191H1564.79Z" fill="#732A2A"/>
|
||||
<path id="Vector_105" d="M1534.87 584.979C1538.56 576.068 1556.08 574.456 1547.55 594.461H1536.57L1534.87 584.979Z" fill="#1A606E"/>
|
||||
<path id="Vector_106" d="M1531.27 594.462C1531.27 594.462 1520.77 581.379 1525.59 573.699C1530.42 566.02 1541.88 570.856 1540.18 594.462H1531.27Z" fill="#216C7A"/>
|
||||
<path id="Vector_107" d="M1527.68 574.744C1520.95 566.116 1509.5 566.4 1509.59 573.701C1509.69 581.002 1527.68 576.641 1527.68 576.641V574.744Z" fill="#216C7A"/>
|
||||
<path id="Vector_108" d="M1536.67 547.914C1528.43 549.335 1533.36 559.386 1530.71 573.038L1535.06 576.072C1544.63 562.798 1544.91 546.492 1536.67 547.914Z" fill="#216C7A"/>
|
||||
<path id="Vector_109" d="M1521.46 566.541C1521.91 564.284 1521.03 562.201 1519.5 561.894C1517.96 561.587 1516.34 563.169 1515.89 565.427C1515.44 567.686 1516.32 569.767 1517.86 570.076C1519.4 570.383 1521.01 568.801 1521.46 566.541Z" fill="#216C7A"/>
|
||||
<path id="Vector_110" d="M1543.67 582.33C1543.67 567.824 1545.19 561.757 1549.16 561.947C1553.14 562.135 1546.42 582.994 1546.42 582.994L1543.67 582.33Z" fill="#1A606E"/>
|
||||
<path id="Vector_111" d="M1539.04 553.399C1542.83 546.004 1549.45 547.806 1547.09 553.399C1544.72 558.994 1539.79 556.149 1539.79 556.149L1539.04 553.399Z" fill="#216C7A"/>
|
||||
<path id="Vector_112" d="M1546.04 588.493C1552.48 575.599 1558.64 565.929 1563.85 573.04C1569.05 580.151 1549.17 597.216 1549.17 597.216H1546.04V588.493Z" fill="#216C7A"/>
|
||||
<path id="Vector_113" d="M1557.5 574.166C1554.66 568.003 1552.58 563.073 1554.66 558.521C1556.74 553.972 1566.02 554.446 1560.53 573.692L1557.5 574.166Z" fill="#216C7A"/>
|
||||
<path id="Vector_114" d="M1538.09 596.459C1540.65 586.693 1547.46 585.936 1549.45 588.969C1551.44 592.003 1545.57 596.174 1545.57 596.174L1538.09 596.459Z" fill="#2A858C"/>
|
||||
<path id="Vector_115" d="M1554.56 624.052H1529.18L1521.13 609.26L1522.56 594.47H1561.19L1562.89 609.26L1554.56 624.052Z" fill="#F77C7C"/>
|
||||
<path id="Vector_116" d="M1769.99 624.046L1768.85 546.396C1768.81 543.447 1768.06 540.549 1766.68 537.944C1765.29 535.34 1763.31 533.103 1760.89 531.416L1751.43 524.685L1687.6 521.083L1693.57 526.392C1689.5 529.047 1689.59 530.943 1689.12 538.622L1683.25 624.046H1769.99Z" fill="#244AB0"/>
|
||||
<path id="Vector_117" d="M1768.85 546.396C1768.81 543.447 1768.06 540.549 1766.68 537.944C1765.3 535.34 1763.31 533.101 1760.9 531.416L1757.58 529.047H1693L1700.48 534.64C1702.5 536.15 1704.09 538.157 1705.11 540.468C1706.12 542.777 1706.52 545.309 1706.26 547.818L1699.06 624.046H1769.99L1768.85 546.396Z" fill="#203D87"/>
|
||||
<path id="Vector_118" d="M1683.25 624.044C1695.08 614.184 1698.97 613.994 1704.17 613.994C1709.38 613.994 1710.14 624.044 1710.14 624.044H1683.25Z" fill="#203D87"/>
|
||||
<path id="Vector_119" d="M1720.47 538.622C1732.21 549.904 1740.26 555.783 1742.24 557.015C1744.23 558.248 1746.69 553.981 1748.87 547.82C1751.05 541.656 1752.66 535.304 1753.51 533.218C1754.36 531.131 1757.49 526.866 1744.71 526.866C1731.92 526.866 1702 522.505 1720.47 538.622Z" fill="#1A3578"/>
|
||||
<path id="Vector_120" d="M1762.6 542.601C1753.23 556.444 1739.69 573.415 1735.8 578.535C1731.92 583.653 1726.24 579.482 1721.98 575.121C1717.72 570.76 1719.61 572.75 1721.7 579.008C1723.39 583.776 1726.34 588 1730.22 591.239C1732.39 593.135 1735.8 597.686 1744.42 581.853C1753.04 566.02 1767.53 535.491 1762.6 542.601Z" fill="#1A3578"/>
|
||||
<path id="Vector_121" d="M1692.71 624.041C1701.52 613.802 1711.08 613.137 1718.18 624.041H1692.71Z" fill="#30868C"/>
|
||||
<path id="Vector_122" d="M1700.39 617.598C1706.82 619.779 1708.81 623.478 1709.1 624.046H1718.19C1713.07 616.271 1706.82 614.376 1700.39 617.598Z" fill="#2B7585"/>
|
||||
<path id="Vector_123" d="M1755.12 617.879C1748.11 617.501 1742.71 620.534 1736.08 624.042H1761.56C1762.41 619.397 1759.95 618.163 1755.12 617.879Z" fill="#2B7585"/>
|
||||
<path id="Vector_124" d="M1677.47 590.952H1607.59V596.11H1677.47V590.952Z" fill="#3D1A10"/>
|
||||
<path id="Vector_125" d="M1647.08 541.568L1654.56 624.052H1645.09L1637.51 541.568H1647.08Z" fill="#542518"/>
|
||||
<path id="Vector_126" d="M1677.19 541.568L1684.67 624.052H1675.2L1667.53 541.568H1677.19Z" fill="#542518"/>
|
||||
<path id="Vector_127" d="M1608.82 538.62L1601.34 624.044H1610.81L1618.38 538.62H1608.82Z" fill="#542518"/>
|
||||
<path id="Vector_128" d="M1608.82 545.259L1595.38 480.029C1595.33 479.828 1595.34 479.621 1595.38 479.419C1595.43 479.219 1595.52 479.031 1595.64 478.869C1595.77 478.707 1595.93 478.575 1596.11 478.479C1596.3 478.385 1596.5 478.333 1596.7 478.323H1603.33C1603.66 478.333 1603.97 478.449 1604.23 478.655C1604.49 478.86 1604.67 479.142 1604.75 479.461L1618.38 545.259H1608.82Z" fill="#6E2B17"/>
|
||||
<path id="Vector_129" d="M1642.82 484.01H1602.01V491.206H1642.82V484.01Z" fill="#6E2B17"/>
|
||||
<path id="Vector_130" d="M1606.93 538.621H1669.8V546.016H1606.93C1606.43 546.029 1605.93 545.944 1605.47 545.763C1605 545.584 1604.58 545.317 1604.22 544.972C1603.86 544.63 1603.57 544.219 1603.37 543.763C1603.17 543.308 1603.05 542.816 1603.04 542.319C1603.05 541.82 1603.17 541.33 1603.37 540.875C1603.57 540.419 1603.86 540.008 1604.22 539.664C1604.58 539.321 1605 539.052 1605.47 538.873C1605.93 538.694 1606.43 538.609 1606.93 538.621Z" fill="#6E2B17"/>
|
||||
<path id="Vector_131" d="M1627.48 538.62H1679.46C1679.96 538.607 1680.45 538.694 1680.91 538.875C1681.36 539.055 1681.78 539.325 1682.14 539.669C1682.49 540.014 1682.77 540.426 1682.96 540.882C1683.15 541.336 1683.25 541.826 1683.25 542.319C1683.25 542.812 1683.15 543.3 1682.96 543.756C1682.77 544.211 1682.49 544.622 1682.14 544.967C1681.78 545.311 1681.36 545.582 1680.91 545.763C1680.45 545.942 1679.96 546.029 1679.46 546.015H1627.48V538.62Z" fill="#542113"/>
|
||||
<path id="Vector_132" d="M1620.84 415.734C1619.37 416.329 1618.17 417.465 1617.5 418.909C1616.84 420.353 1616.74 421.997 1617.24 423.509L1627.47 453.468L1640.63 449.581L1628.89 419.242C1628.28 417.715 1627.09 416.491 1625.58 415.836C1624.08 415.178 1622.37 415.143 1620.84 415.734Z" fill="#E66CA5"/>
|
||||
<path id="Vector_133" d="M1630.98 445.988L1636.19 445.229L1628.99 427.309C1628.9 427.042 1628.76 426.799 1628.56 426.596C1628.37 426.392 1628.13 426.234 1627.87 426.134C1627.6 426.035 1627.32 425.995 1627.04 426.018C1626.76 426.04 1626.49 426.125 1626.24 426.266C1625.82 426.473 1625.48 426.824 1625.29 427.259C1625.1 427.694 1625.07 428.183 1625.2 428.637L1630.98 445.988Z" fill="#F085B7"/>
|
||||
<path id="Vector_134" d="M1628.14 445.986L1618.01 418.11C1617.49 418.899 1617.15 419.792 1617.02 420.728C1616.89 421.662 1616.97 422.615 1617.25 423.515L1625.01 446.365L1628.14 445.986Z" fill="#FFA3B5"/>
|
||||
<path id="Vector_135" d="M1653.27 441.766L1614.67 446.785C1609.13 447.508 1605.21 452.596 1605.93 458.153L1605.97 458.424C1606.69 463.981 1611.77 467.9 1617.32 467.179L1655.91 462.16C1661.46 461.439 1665.38 456.349 1664.66 450.794L1664.62 450.521C1663.9 444.964 1658.82 441.045 1653.27 441.766Z" fill="#FF85AB"/>
|
||||
<path id="Vector_136" d="M1623.02 501.922C1620.66 499.836 1618.48 497.845 1618.01 496.992C1617.53 496.137 1618.29 496.043 1619.52 495.569C1620.75 495.096 1621.6 496.612 1622.83 498.983C1624.07 501.354 1625.11 503.819 1623.02 501.922Z" fill="#F2C591"/>
|
||||
<path id="Vector_137" d="M1655.32 476.8L1620.75 482.3C1618.48 484.291 1618.29 484.765 1616.68 486.187C1612.04 490.264 1610.81 493.582 1610.72 497.184C1610.43 502.21 1610.91 502.02 1609.87 503.822C1608.82 505.623 1607.78 506.287 1608.73 508.847C1609.38 510.475 1610.34 511.957 1611.57 513.208H1666.11C1678.33 498.891 1667.25 487.23 1655.32 476.8Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_138" d="M1660.42 513.21H1623.78C1623.78 513.21 1623.97 509.986 1624.16 501.738C1624.35 493.49 1622.74 487.801 1616.68 486.189C1617.91 484.955 1619.23 483.628 1620.75 482.302L1655.31 476.898C1657.58 478.888 1659.86 480.878 1661.94 482.965C1662.46 493.072 1661.95 503.205 1660.42 513.21Z" fill="#1F3A70"/>
|
||||
<path id="Vector_139" d="M1655.31 476.898H1654.84L1654.37 477.466C1652.97 482.639 1651.13 487.682 1648.88 492.541C1648.88 492.541 1649.06 494.437 1651.62 490.739C1654.21 487.1 1656.19 483.067 1657.49 478.794L1655.31 476.898Z" fill="#172E5C"/>
|
||||
<path id="Vector_140" d="M1624.63 482.298C1631.36 490.356 1633.63 492.253 1636.09 493.864C1638.55 495.476 1636.47 493.011 1633.91 489.219C1631.36 485.426 1628.32 480.686 1628.32 480.686L1624.63 482.298Z" fill="#172E5C"/>
|
||||
<path id="Vector_141" d="M1645.18 505.15C1642.72 504.391 1632.21 500.789 1624.16 498.892V501.736C1623.97 509.986 1623.78 513.208 1623.78 513.208H1660.43C1660.99 509.131 1661.56 504.485 1661.85 499.555L1645.18 505.15Z" fill="#172E5C"/>
|
||||
<path id="Vector_142" d="M1627.29 487.04C1627.29 487.04 1627 487.703 1625.49 488.652C1623.97 489.599 1623.69 490.074 1623.5 489.789C1622.97 488.616 1622.17 487.586 1621.16 486.78C1620.16 485.972 1618.98 485.413 1617.72 485.144C1618.67 484.101 1619.71 483.153 1620.85 482.11C1626.06 484.291 1627.29 487.04 1627.29 487.04Z" fill="#244AB0"/>
|
||||
<path id="Vector_143" d="M1652.29 476.8L1645.28 502.967L1627.48 477.655L1652.29 476.8Z" fill="#D4BF9B"/>
|
||||
<path id="Vector_144" d="M1637.14 486.004L1650.49 489.511L1645.47 497.476L1637.14 487.52C1636 486.193 1634.96 485.434 1637.14 486.004Z" fill="#CCAC89"/>
|
||||
<path id="Vector_145" d="M1631.36 481.829L1647.65 484.01C1649.45 484.2 1649.54 482.21 1650.49 478.323L1632.87 479.649L1631.36 481.829Z" fill="#DE5D98"/>
|
||||
<path id="Vector_146" d="M1657.31 458.675L1617.65 463.889C1612.42 464.576 1608.74 469.375 1609.43 474.608C1610.11 479.841 1614.91 483.526 1620.14 482.839L1659.79 477.625C1665.02 476.937 1668.7 472.139 1668.02 466.906C1667.33 461.673 1662.53 457.987 1657.31 458.675Z" fill="#FF85AB"/>
|
||||
<path id="Vector_147" d="M1659.39 478.229C1661.87 477.943 1664.16 476.711 1665.76 474.787C1667.36 472.864 1668.17 470.395 1668.01 467.896C1667.85 466.043 1667.15 464.277 1666.01 462.812C1664.87 461.347 1663.32 460.247 1661.57 459.646C1662.76 458.535 1663.67 457.159 1664.23 455.626C1664.79 454.093 1664.98 452.449 1664.79 450.83V450.545C1664.63 449.225 1664.22 447.948 1663.57 446.79C1662.92 445.632 1662.04 444.617 1660.99 443.804C1659.94 442.99 1658.74 442.397 1657.45 442.056C1656.17 441.715 1654.83 441.636 1653.52 441.823L1622.18 445.9C1628.9 450.545 1628.9 454.528 1627.76 462.111C1627.68 463.27 1627.95 464.424 1628.52 465.429C1630.04 468.094 1630.7 471.164 1630.41 474.218C1630.13 477.274 1628.9 480.165 1626.91 482.496L1659.39 478.229Z" fill="#F06EA8"/>
|
||||
<path id="Vector_148" d="M1645.75 570.001C1645.75 573.509 1643.76 576.354 1647.36 577.964C1652.66 580.335 1655.12 582.8 1659 583.938C1662.89 585.075 1669.13 586.877 1666.01 580.716C1664 576.897 1662.2 572.972 1660.61 568.958L1645.75 570.001Z" fill="#914343"/>
|
||||
<path id="Vector_149" d="M1665.35 565.353C1665.07 568.671 1662.98 571.136 1666.2 572.938C1671.03 575.592 1673.02 578.153 1676.62 579.48C1680.22 580.808 1685.81 583.177 1683.44 577.11C1681.07 571.042 1679.37 565.732 1679.37 565.732L1665.35 565.353Z" fill="#914343"/>
|
||||
<path id="Vector_150" d="M1656.54 538.799H1655.12L1662.6 570.94L1658.34 572.931C1656.15 573.931 1653.78 574.479 1651.37 574.545C1648.97 574.609 1646.57 574.191 1644.33 573.311L1636.85 538.99H1627.1C1626.5 538.978 1625.92 538.847 1625.38 538.606C1624.84 538.364 1624.35 538.018 1623.94 537.585C1623.54 537.152 1623.22 536.641 1623.01 536.086C1622.81 535.528 1622.71 534.937 1622.74 534.344L1623.21 525.906H1666.2C1668.73 525.917 1671.16 526.86 1673.03 528.559C1674.9 530.258 1676.08 532.587 1676.33 535.103L1680.69 568.76L1677.09 569.14C1672.65 569.63 1668.15 569.502 1663.74 568.76L1656.54 538.799Z" fill="#1C1B29"/>
|
||||
<path id="Vector_151" d="M1637.99 524.676H1620.75V624.076H1637.99V524.676Z" fill="#AD482C"/>
|
||||
<path id="Vector_152" d="M1627.38 524.676H1620.75V624.076H1627.38V524.676Z" fill="#EB9151"/>
|
||||
<path id="Vector_153" d="M1637.99 524.676H1620.75V542.718H1637.99V524.676Z" fill="#AD482C"/>
|
||||
<path id="Vector_154" d="M1719.05 506.858H1697.37V513.2H1719.05V506.858Z" fill="#BA4E5D"/>
|
||||
<path id="Vector_155" d="M1703.42 506.858L1701.81 511.313H1698.97L1700.77 506.858H1703.42Z" fill="#D65A6B"/>
|
||||
<path id="Vector_156" d="M1718.94 506.858H1706.44V513.2H1718.94V506.858Z" fill="#AD4452"/>
|
||||
<path id="Vector_157" d="M1805.59 507.624H1797.16V492.929H1803.88C1804.34 492.929 1804.77 493.107 1805.09 493.428C1805.41 493.748 1805.59 494.183 1805.59 494.635V507.624Z" fill="#692F1C"/>
|
||||
<path id="Vector_158" d="M1797.26 506.858H1803.51V496.002H1797.26V506.858Z" fill="#FEC9AA"/>
|
||||
<path id="Vector_159" d="M1800 491.021C1801.99 491.021 1803.6 489.407 1803.6 487.419C1803.6 485.428 1801.99 483.816 1800 483.816C1798.02 483.816 1796.4 485.428 1796.4 487.419C1796.4 489.407 1798.02 491.021 1800 491.021Z" fill="white"/>
|
||||
<path id="Vector_160" d="M1796.31 491.403C1798.97 491.403 1801.14 489.238 1801.14 486.567C1801.14 483.897 1798.97 481.732 1796.31 481.732C1793.64 481.732 1791.48 483.897 1791.48 486.567C1791.48 489.238 1793.64 491.403 1796.31 491.403Z" fill="white"/>
|
||||
<path id="Vector_161" d="M1789.58 492.817C1792.25 492.817 1794.41 490.652 1794.41 487.982C1794.41 485.311 1792.25 483.146 1789.58 483.146C1786.92 483.146 1784.75 485.311 1784.75 487.982C1784.75 490.652 1786.92 492.817 1789.58 492.817Z" fill="white"/>
|
||||
<path id="Vector_162" d="M1801.43 487.991H1782.01V513.971H1801.43V487.991Z" fill="#8C422A"/>
|
||||
<path id="Vector_163" d="M1801.42 487.991H1788.92V513.971H1801.42V487.991Z" fill="#7A3721"/>
|
||||
<path id="Vector_164" d="M1801.43 487.991H1782.01V491.633H1801.43V487.991Z" fill="#6D6996"/>
|
||||
<path id="Vector_165" d="M1787.5 487.991H1784.09V491.633H1787.5V487.991Z" fill="#807BB0"/>
|
||||
<path id="Vector_166" d="M1654.84 503.058L1648.31 508.176C1648.2 508.267 1648.09 508.334 1647.95 508.374C1647.82 508.413 1647.69 508.425 1647.55 508.408C1647.42 508.389 1647.29 508.342 1647.17 508.27C1647.06 508.197 1646.96 508.101 1646.89 507.988L1639.41 497.938C1639.27 497.715 1639.21 497.452 1639.25 497.192C1639.28 496.934 1639.41 496.695 1639.59 496.516L1646.22 491.396C1646.44 491.239 1646.71 491.172 1646.97 491.207C1647.24 491.243 1647.48 491.377 1647.64 491.586L1655.03 501.636C1655.12 501.738 1655.19 501.856 1655.23 501.986C1655.27 502.118 1655.28 502.254 1655.26 502.389C1655.24 502.525 1655.19 502.655 1655.12 502.77C1655.05 502.885 1654.95 502.983 1654.84 503.058Z" fill="#BA4E5D"/>
|
||||
<path id="Vector_167" d="M1665.35 503.165L1657.49 502.597C1657.32 502.576 1657.17 502.5 1657.05 502.38C1656.92 502.259 1656.85 502.101 1656.83 501.932L1657.4 488.754C1657.42 488.569 1657.51 488.4 1657.65 488.277C1657.79 488.155 1657.97 488.089 1658.15 488.091L1666.01 488.66C1666.2 488.682 1666.37 488.773 1666.49 488.912C1666.61 489.051 1666.68 489.232 1666.68 489.417L1666.11 502.5C1666.09 502.685 1666 502.854 1665.86 502.977C1665.72 503.099 1665.54 503.167 1665.35 503.165Z" fill="#BA4E5D"/>
|
||||
<path id="Vector_168" d="M1665.57 494.26L1662.25 490.368L1658.13 493.889L1661.45 497.781L1665.57 494.26Z" fill="#AD3B4B"/>
|
||||
<path id="Vector_169" d="M1665.45 501.363C1665.53 501.342 1665.62 501.303 1665.69 501.246C1665.76 501.192 1665.82 501.12 1665.87 501.041C1665.91 500.96 1665.94 500.872 1665.95 500.781C1665.96 500.689 1665.95 500.597 1665.92 500.51L1662.89 488.469L1658.15 488.091C1657.97 488.089 1657.79 488.155 1657.65 488.277C1657.51 488.4 1657.42 488.569 1657.4 488.754L1656.83 501.932V502.122C1656.9 502.195 1656.99 502.252 1657.09 502.284C1657.19 502.318 1657.29 502.327 1657.4 502.312L1665.45 501.363Z" fill="#872C39"/>
|
||||
<path id="Vector_170" d="M1664.41 501.269L1656.45 502.216C1656.29 502.227 1656.13 502.188 1656 502.103C1655.86 502.018 1655.75 501.89 1655.69 501.742L1652.47 488.942C1652.44 488.854 1652.43 488.759 1652.45 488.667C1652.46 488.573 1652.5 488.486 1652.56 488.411C1652.61 488.336 1652.69 488.275 1652.77 488.236C1652.85 488.196 1652.95 488.179 1653.04 488.185L1661 487.142C1661.16 487.13 1661.32 487.17 1661.45 487.255C1661.59 487.34 1661.69 487.466 1661.75 487.614L1664.97 500.414C1665 500.508 1665.01 500.608 1665 500.704C1664.98 500.802 1664.95 500.894 1664.89 500.975C1664.84 501.058 1664.77 501.126 1664.68 501.177C1664.6 501.228 1664.5 501.258 1664.41 501.269Z" fill="#BA4E5D"/>
|
||||
<path id="Vector_171" d="M1661.93 493.106L1657.84 490.032L1654.59 494.369L1658.68 497.442L1661.93 493.106Z" fill="#AD3B4B"/>
|
||||
<path id="Vector_172" d="M1649.83 496.81H1644.71V502.233H1649.83V496.81Z" fill="#AD3B4B"/>
|
||||
<path id="Vector_173" d="M1659.67 499.463L1654.37 487.991L1653.04 488.181C1652.95 488.176 1652.85 488.194 1652.77 488.234C1652.69 488.274 1652.61 488.332 1652.56 488.407C1652.5 488.483 1652.46 488.571 1652.45 488.663C1652.43 488.756 1652.44 488.852 1652.47 488.94L1655.69 501.644L1659.2 500.412C1659.38 500.346 1659.54 500.211 1659.63 500.034C1659.72 499.857 1659.73 499.653 1659.67 499.463Z" fill="#872C39"/>
|
||||
<path id="Vector_174" d="M1647.65 491.586C1647.48 491.377 1647.24 491.243 1646.98 491.207C1646.71 491.172 1646.44 491.239 1646.23 491.396L1643.77 493.292L1648.88 504.48C1648.91 504.547 1648.95 504.609 1649.01 504.662C1649.06 504.713 1649.13 504.755 1649.2 504.781C1649.27 504.807 1649.34 504.819 1649.42 504.817C1649.49 504.813 1649.57 504.796 1649.64 504.764L1654.84 503.058C1654.96 502.983 1655.05 502.885 1655.13 502.77C1655.2 502.655 1655.25 502.525 1655.26 502.389C1655.28 502.254 1655.27 502.118 1655.23 501.986C1655.19 501.856 1655.12 501.738 1655.03 501.636L1647.65 491.586Z" fill="#872C39"/>
|
||||
<path id="Vector_175" d="M1658.72 500.975L1650.11 503.819C1649.94 503.86 1649.77 503.845 1649.62 503.777C1649.46 503.708 1649.33 503.589 1649.26 503.44L1643.76 491.494C1643.57 491.115 1643.76 490.735 1644.24 490.546L1652.76 487.701C1652.92 487.661 1653.1 487.677 1653.25 487.744C1653.4 487.814 1653.53 487.931 1653.61 488.081L1659.1 500.028C1659.15 500.113 1659.18 500.207 1659.18 500.305C1659.19 500.403 1659.17 500.499 1659.13 500.591C1659.1 500.681 1659.04 500.762 1658.97 500.828C1658.9 500.894 1658.82 500.945 1658.72 500.975Z" fill="#BA4E5D"/>
|
||||
<path id="Vector_176" d="M1639.4 507.709C1638.27 506.287 1637.23 505.054 1635.52 504.579C1631.62 503.651 1627.67 502.924 1623.68 502.401C1622.57 502.192 1621.41 502.323 1620.37 502.779C1617.15 504.107 1616.11 506.287 1618.1 513.208H1637.42L1638.93 511.692C1640.35 509.89 1640.45 509.131 1639.4 507.709Z" fill="#FF8FB1"/>
|
||||
<path id="Vector_177" d="M1661.47 495.951C1664.68 497.563 1669.14 500.218 1669.14 500.218C1669.9 500.696 1670.54 501.35 1671 502.126C1671.46 502.9 1671.73 503.773 1671.79 504.674V505.527C1671.81 506.282 1671.69 507.033 1671.42 507.739C1671.15 508.445 1670.74 509.091 1670.23 509.639C1669.7 510.185 1669.08 510.624 1668.39 510.927C1667.7 511.231 1666.95 511.393 1666.2 511.406C1666.01 511.5 1665.82 511.406 1665.63 511.406C1664.88 511.338 1664.15 511.108 1663.5 510.732C1662.85 510.355 1662.28 509.841 1661.84 509.225C1660.82 507.807 1659.68 506.476 1658.44 505.242C1657.77 504.579 1655.97 503.536 1655.41 502.967C1653.51 500.881 1653.89 499.932 1655.41 497.563C1656.92 495.192 1657.87 494.149 1661.47 495.951Z" fill="#F57FB5"/>
|
||||
<path id="Vector_178" d="M1639.58 461.569C1640.41 460.921 1640.31 459.428 1639.38 458.236C1638.44 457.042 1637.01 456.6 1636.19 457.247C1635.37 457.895 1635.46 459.387 1636.4 460.58C1637.34 461.774 1638.76 462.217 1639.58 461.569Z" fill="#1E1C2B"/>
|
||||
<path id="Vector_179" d="M1656.84 457.547C1657.1 456.157 1656.52 454.882 1655.55 454.696C1654.57 454.511 1653.57 455.488 1653.3 456.878C1653.04 458.266 1653.62 459.543 1654.6 459.727C1655.57 459.912 1656.58 458.934 1656.84 457.547Z" fill="#1E1C2B"/>
|
||||
<path id="Vector_180" d="M1816.67 443.621L1813.64 444.096C1809.69 444.674 1806.08 446.619 1803.42 449.594C1803.42 449.594 1801.43 460.97 1807.77 470.452L1818.85 467.797C1822.92 478.7 1832.96 485.242 1832.96 485.242C1832.96 485.242 1837.79 500.128 1841.29 504.583C1844.8 509.041 1863.83 512.263 1895.74 484.769C1896.31 474.339 1888.26 467.987 1888.26 467.987C1888.26 467.987 1888.26 450.257 1879.55 439.354C1870.83 428.451 1816.67 443.621 1816.67 443.621Z" fill="#F7E9CB"/>
|
||||
<path id="Vector_181" d="M1899.91 613.422C1899.53 614.181 1899.53 614.559 1898.96 615.602C1899.34 618.352 1899.72 624.041 1899.72 624.041H1878.6L1868.37 570.093L1894.22 564.879C1896.5 576.635 1898.2 592.943 1899.24 605.458C1900.85 609.913 1900.85 611.335 1899.91 613.422Z" fill="#8C422A"/>
|
||||
<path id="Vector_182" d="M1854.54 568.871L1836.74 624.05H1816.67L1830.11 560.907L1854.54 568.871Z" fill="#7D361F"/>
|
||||
<path id="Vector_183" d="M1895.73 484.765L1841.28 501.357L1831.15 543.453L1825.66 558.527C1825.24 559.229 1825.02 560.024 1825 560.838C1824.99 561.651 1825.18 562.455 1825.56 563.173L1828.4 568.861L1854.54 576.541L1864.19 546.108C1863.63 550.318 1863.53 554.58 1863.91 558.811C1863.91 558.811 1862.96 563.173 1862.59 566.587C1862.54 566.976 1862.58 567.37 1862.69 567.747C1862.8 568.121 1862.99 568.47 1863.25 568.767L1865.71 571.611C1866.02 571.944 1866.41 572.204 1866.83 572.368C1867.26 572.532 1867.72 572.598 1868.17 572.56L1879.44 571.611L1892.13 573.697C1892.72 573.778 1893.32 573.697 1893.87 573.464C1894.42 573.23 1894.9 572.852 1895.25 572.37L1896.77 570.189L1899.89 566.206C1900.54 565.429 1900.91 564.457 1900.95 563.444C1900.98 562.429 1900.68 561.434 1900.08 560.613L1897.91 557.486C1897.91 557.486 1899.33 551.416 1901.31 538.428C1903.3 525.439 1906.71 502.116 1895.73 484.765Z" fill="#34355E"/>
|
||||
<path id="Vector_184" d="M1858.52 569.63L1864.2 546.117C1865.15 537.491 1867.13 517.769 1867.13 517.769C1867.13 517.769 1842.61 542.325 1838.07 546.117C1833.52 549.91 1834.09 550.004 1836.08 552.944C1838.07 555.883 1839.11 557.495 1839.11 557.495L1828.41 559.96V568.873L1854.54 576.552L1858.52 569.63Z" fill="#2C2D57"/>
|
||||
<path id="Vector_185" d="M1897.53 487.989C1896.97 486.946 1896.4 485.809 1895.74 484.765L1841.29 501.357L1839.58 507.235L1896.49 491.401L1897.53 487.989Z" fill="#451B10"/>
|
||||
<path id="Vector_186" d="M1882.39 488.842L1895.83 484.481C1897.26 484.055 1898.79 484.144 1900.16 484.733C1901.53 485.323 1902.64 486.373 1903.31 487.705L1911.17 503.822C1911.56 504.593 1911.77 505.436 1911.81 506.297C1911.84 507.155 1911.69 508.014 1911.37 508.813C1911.05 509.611 1910.56 510.33 1909.94 510.925C1909.32 511.521 1908.57 511.974 1907.76 512.261L1893.65 517.475C1892.97 517.722 1892.23 517.816 1891.5 517.754C1890.78 517.69 1890.07 517.471 1889.43 517.113C1888.79 516.754 1888.24 516.26 1887.81 515.669C1887.38 515.078 1887.08 514.4 1886.93 513.682L1882.39 488.842Z" fill="#451B10"/>
|
||||
<path id="Vector_187" d="M1856.81 431.202C1852.74 445.423 1836.36 455.189 1823.1 445.994C1809.85 436.797 1823.01 417.645 1823.01 417.645C1823.01 417.645 1815.91 399.631 1833.8 395.364C1851.7 391.098 1856.15 398.873 1856.81 431.202Z" fill="#4D7AE8"/>
|
||||
<path id="Vector_188" d="M1856.82 431.204C1856.25 402.951 1852.75 393.47 1839.97 394.323L1842.14 398.59C1840.44 401.434 1839.3 404.563 1839.21 412.243C1839.21 415.939 1840.53 416.983 1842.52 417.457C1844.51 417.932 1845.08 418.026 1845.74 418.973C1846.4 419.922 1846.21 420.775 1845.55 423.334C1844.51 427.411 1842.14 430.919 1841.95 436.04C1841.76 441.16 1841.67 444.194 1842.52 447.796C1845.94 446.203 1848.99 443.902 1851.45 441.041C1853.92 438.179 1855.75 434.827 1856.82 431.204Z" fill="#2E64E8"/>
|
||||
<path id="Vector_189" d="M1842.14 395.826L1843.46 388.81C1843.6 388.166 1843.88 387.56 1844.26 387.03C1844.66 386.5 1845.15 386.059 1845.73 385.736C1846.3 385.413 1846.93 385.216 1847.59 385.158C1848.24 385.099 1848.9 385.181 1849.53 385.397C1850.22 385.629 1850.86 386.029 1851.37 386.561C1851.88 387.093 1852.25 387.742 1852.46 388.451C1852.66 389.16 1852.69 389.909 1852.55 390.632C1852.4 391.355 1852.08 392.032 1851.61 392.602L1846.5 398.859L1842.14 395.826Z" fill="#201E2F"/>
|
||||
<path id="Vector_190" d="M1850.57 393.944C1848.09 392.986 1845.45 392.566 1842.8 392.712L1842.14 395.841L1846.5 398.874L1850.57 393.944Z" fill="#41314A"/>
|
||||
<path id="Vector_191" d="M1830.3 420.777C1832.29 420.777 1833.9 418.611 1833.9 415.941C1833.9 413.271 1832.29 411.105 1830.3 411.105C1828.31 411.105 1826.7 413.271 1826.7 415.941C1826.7 418.611 1828.31 420.777 1830.3 420.777Z" fill="#DBE7FF"/>
|
||||
<path id="Vector_192" d="M1828.77 419.412C1829.3 419.376 1829.67 418.585 1829.6 417.645C1829.54 416.704 1829.06 415.971 1828.54 416.007C1828.02 416.043 1827.65 416.834 1827.71 417.773C1827.78 418.713 1828.25 419.447 1828.77 419.412Z" fill="#201E2F"/>
|
||||
<path id="Vector_193" d="M1826.14 407.026C1826.38 406.311 1826.84 405.691 1827.45 405.253C1828.07 404.812 1828.8 404.577 1829.55 404.577C1830.3 404.577 1831.04 404.812 1831.65 405.253C1832.26 405.691 1832.72 406.311 1832.96 407.026H1826.14Z" fill="#201E2F"/>
|
||||
<path id="Vector_194" d="M1826.51 427.507C1830.01 428.454 1833.8 427.601 1836.92 424.187C1837.33 423.72 1837.89 423.421 1838.51 423.351C1839.12 423.281 1839.74 423.443 1840.24 423.809C1840.78 424.174 1841.15 424.739 1841.27 425.379C1841.4 426.018 1841.26 426.68 1840.9 427.223C1836.07 435.09 1828.59 436.23 1823.95 431.868C1823.63 431.575 1823.39 431.202 1823.25 430.786C1823.12 430.37 1823.1 429.925 1823.19 429.498C1823.26 429.136 1823.4 428.791 1823.6 428.49C1823.81 428.187 1824.08 427.933 1824.4 427.744C1824.71 427.556 1825.06 427.436 1825.43 427.396C1825.79 427.355 1826.16 427.392 1826.51 427.507Z" fill="#590942"/>
|
||||
<path id="Vector_195" d="M1826.52 433.571C1831.07 435.657 1836.94 433.761 1840.91 427.219C1841.22 426.739 1841.36 426.172 1841.31 425.605C1841.26 425.038 1841.02 424.506 1840.63 424.089L1831.44 428.166C1829.19 429.3 1827.44 431.224 1826.52 433.571Z" fill="#400015"/>
|
||||
<path id="Vector_196" d="M1841.29 425.799C1841.29 425.409 1841.19 425.025 1841.01 424.679C1840.83 424.332 1840.57 424.035 1840.25 423.809C1839.75 423.443 1839.13 423.281 1838.52 423.351C1837.91 423.421 1837.34 423.72 1836.94 424.187C1833.81 427.601 1830.02 428.454 1826.52 427.507H1825.67V429.876C1825.67 429.876 1826.99 430.825 1832.2 430.351V429.403C1835.48 428.948 1838.59 427.712 1841.29 425.799Z" fill="#DBE7FF"/>
|
||||
<path id="Vector_197" d="M1852.93 401.895C1849.72 394.404 1843.85 392.983 1833.81 395.353C1831.78 395.812 1829.83 396.581 1828.03 397.628C1827.56 400.567 1832.01 401.515 1840.44 398.765C1837.69 403.791 1843.47 412.702 1852.93 401.895Z" fill="#201E2F"/>
|
||||
<path id="Vector_198" d="M1807.77 470.455L1797.17 472.732C1796.08 472.983 1794.94 472.879 1793.92 472.436C1792.9 471.992 1792.04 471.231 1791.48 470.267C1788.74 465.431 1784.1 455.76 1783.81 444.478L1799.44 436.608L1805.78 449.218C1807.95 456.076 1808.62 463.317 1807.77 470.455Z" fill="#3467E3"/>
|
||||
<path id="Vector_199" d="M1875.38 432.432C1876.99 433.381 1876.89 433.285 1877.08 435.371C1877.27 437.458 1877.18 436.699 1878.79 437.362C1880.4 438.026 1881.25 438.785 1881.15 441.535C1855.96 431.484 1858.9 438.026 1848.67 472.726C1848.67 472.726 1842.05 477.088 1832.2 472.726C1822.35 468.365 1816.67 443.619 1816.67 443.619L1819.51 442.672C1820.55 443.939 1821.76 445.058 1823.11 445.99C1831.53 451.869 1841.29 449.973 1848.2 444.188L1848.49 440.397C1848.54 439.086 1848.89 437.806 1849.49 436.642C1850.1 435.48 1850.95 434.463 1851.99 433.665L1856.82 429.778L1856.63 424.942L1858.71 425.795C1859.68 426.251 1860.58 426.859 1861.36 427.598L1862.59 428.829L1865.34 427.786C1866.57 427.407 1868.09 426.27 1871.87 430.82C1873.12 431.164 1874.3 431.708 1875.38 432.432Z" fill="#F76574"/>
|
||||
<path id="Vector_200" d="M1881.16 441.535C1881.25 438.785 1880.87 438.216 1878.79 437.362C1876.71 436.508 1877.18 436.793 1877.09 435.371C1876.99 433.949 1876.99 433.381 1875.38 432.432C1874.31 431.708 1873.12 431.164 1871.88 430.82C1868.09 426.27 1866.57 427.407 1865.34 427.786L1862.6 428.829L1861.37 427.598C1860.58 426.859 1859.69 426.251 1858.72 425.795L1856.63 424.942L1856.82 429.778L1851.99 433.665C1850.95 434.463 1850.1 435.48 1849.5 436.642C1848.89 437.806 1848.55 439.086 1848.49 440.397L1848.2 444.188C1846.04 446.086 1843.52 447.534 1840.78 448.446C1838.05 449.357 1835.17 449.715 1832.3 449.498L1831.63 450.351C1828.7 455.091 1831.07 456.987 1831.07 456.987L1832.2 462.202L1836.75 465.616C1835.73 466.633 1834.97 467.876 1834.52 469.243C1834.08 470.61 1833.97 472.064 1834.19 473.485C1842.9 476.519 1848.68 472.726 1848.68 472.726C1858.9 438.026 1855.97 431.484 1881.16 441.535Z" fill="#EB495B"/>
|
||||
<path id="Vector_201" d="M1799.63 430.353C1799.44 427.511 1799.73 424.66 1800.48 421.914C1801.14 419.259 1801.05 418.5 1800.76 413.382C1800.77 413.205 1800.73 413.03 1800.66 412.868C1800.58 412.708 1800.48 412.567 1800.34 412.457C1800.2 412.346 1800.04 412.269 1799.86 412.233C1799.69 412.196 1799.51 412.199 1799.34 412.243L1795.56 413.002L1796.41 416.32L1794.99 418.596L1780.69 420.777L1781.64 448.082C1781.64 448.082 1796.5 447.323 1802.75 439.834L1799.63 430.353Z" fill="#542113"/>
|
||||
<path id="Vector_202" d="M1795.56 423.332H1783.63C1783.41 423.334 1783.19 423.289 1782.99 423.202C1782.79 423.116 1782.6 422.988 1782.45 422.828C1782.3 422.668 1782.19 422.479 1782.11 422.272C1782.04 422.067 1782 421.847 1782.02 421.626L1783.91 402.096C1783.91 401.901 1783.95 401.709 1784.03 401.528C1784.1 401.349 1784.22 401.189 1784.36 401.055C1784.5 400.921 1784.67 400.82 1784.85 400.754C1785.04 400.688 1785.23 400.66 1785.43 400.673H1797.45C1797.67 400.671 1797.88 400.716 1798.08 400.805C1798.28 400.891 1798.45 401.021 1798.6 401.183C1798.74 401.345 1798.85 401.535 1798.91 401.741C1798.97 401.948 1798.99 402.166 1798.97 402.381L1797.07 421.911C1797.07 422.106 1797.03 422.299 1796.96 422.477C1796.88 422.656 1796.77 422.818 1796.62 422.952C1796.48 423.086 1796.31 423.187 1796.13 423.253C1795.95 423.319 1795.75 423.346 1795.56 423.332Z" fill="#BA4E5D"/>
|
||||
<path id="Vector_203" d="M1796.51 414.231H1784.01L1785.15 402.095H1797.55L1796.51 414.231Z" fill="#F7E9CB"/>
|
||||
<path id="Vector_204" d="M1795.84 421.907H1783.44L1783.91 416.028H1796.41L1795.84 421.907Z" fill="#B53F50"/>
|
||||
<path id="Vector_205" d="M1789.97 412.998C1786.65 412.523 1786.65 409.299 1788.36 407.215C1789.32 406.121 1790.15 404.91 1790.82 403.61C1791.1 403.138 1791.39 403.326 1791.67 405.128L1792.05 406.93C1792.34 406.507 1792.59 406.062 1792.81 405.603C1793 405.034 1793.19 405.981 1793.66 407.403C1794.13 408.827 1795.56 413.851 1789.97 412.998Z" fill="#EB495B"/>
|
||||
<path id="Vector_206" d="M1781.16 433L1791.76 431.198L1792.52 422.76C1792.71 421.434 1792.81 420.391 1789.87 420.201C1786.93 420.011 1782.29 420.011 1782.29 420.011L1790.91 417.261C1792.43 416.789 1792.33 416.124 1792.24 414.892C1792.14 413.659 1791.48 412.237 1789.4 412.712L1779.93 414.702C1779.13 414.828 1778.39 415.169 1777.77 415.687C1777.15 416.205 1776.69 416.879 1776.42 417.642C1775.95 419.063 1776.8 419.632 1778.03 420.769C1779.26 421.907 1778.22 421.907 1777.65 422.76C1777.19 423.353 1776.98 424.103 1777.07 424.85C1777.16 425.596 1777.54 426.276 1778.13 426.743C1779.74 428.449 1776.42 429.967 1781.16 433Z" fill="#542113"/>
|
||||
<path id="Vector_207" d="M1730.3 524.676H1713.35V624.076H1730.3V524.676Z" fill="#EB9151"/>
|
||||
<path id="Vector_208" d="M1730.22 524.676H1719.05V624.076H1730.22V524.676Z" fill="#AD482C"/>
|
||||
<path id="Vector_209" d="M1730.3 524.676H1713.35V542.718H1730.3V524.676Z" fill="#AD482C"/>
|
||||
<path id="Vector_210" d="M1842.89 624.042H1860.03V524.642H1842.89V624.042Z" fill="#AD482C"/>
|
||||
<path id="Vector_211" d="M1793.08 524.676H1777.18V624.076H1793.08V524.676Z" fill="#A13A20"/>
|
||||
<path id="Vector_212" d="M1842.89 536.818H1860.03V524.625H1842.89V536.818Z" fill="#9C361C"/>
|
||||
<path id="Vector_213" d="M1793.08 524.676H1777.18V536.869H1793.08V524.676Z" fill="#A13A20"/>
|
||||
<path id="Vector_214" d="M1893.08 513.204H1586.1V529.066H1893.08V513.204Z" fill="#EB9151"/>
|
||||
<path id="Vector_215" d="M1893.18 513.204H1722.35V529.066H1893.18V513.204Z" fill="#C45F3D"/>
|
||||
<path id="Vector_216" d="M1845.17 416.785L1862.31 400.763C1862.46 400.613 1862.65 400.496 1862.85 400.424C1863.06 400.351 1863.27 400.323 1863.49 400.341C1863.7 400.358 1863.91 400.422 1864.1 400.528C1864.29 400.633 1864.45 400.778 1864.58 400.951C1864.77 401.189 1864.89 401.477 1864.92 401.778C1864.95 402.079 1864.9 402.385 1864.77 402.659L1851.04 428.163L1845.17 416.785Z" fill="#2E64E8"/>
|
||||
<path id="Vector_217" d="M1678.98 403.034L1682.77 401.232C1682.87 401.232 1682.87 401.138 1682.77 401.138L1678.98 399.43H1678.89L1677.18 395.543H1677L1675.29 399.43L1671.41 401.138C1671.31 401.138 1671.31 401.232 1671.41 401.232L1675.29 403.034L1677 406.921H1677.18L1678.89 403.034H1678.98Z" fill="#6ADBC6"/>
|
||||
<path id="Vector_218" d="M1801.33 398.112L1803.22 397.353L1801.33 396.5L1800.57 394.698C1800.47 394.604 1800.47 394.604 1800.47 394.698L1799.62 396.5L1797.82 397.353C1797.73 397.353 1797.73 397.447 1797.82 397.447L1799.62 398.206L1800.47 400.102H1800.57L1801.33 398.206V398.112Z" fill="#FFE091"/>
|
||||
<path id="Vector_219" d="M1926.51 541.372L1930.3 539.666C1930.39 539.666 1930.39 539.571 1930.3 539.571L1926.51 537.769H1926.41L1924.71 533.883H1924.52L1922.82 537.769L1918.93 539.571C1918.84 539.571 1918.84 539.666 1918.93 539.666L1922.82 541.372L1924.52 545.26H1924.71L1926.41 541.372H1926.51Z" fill="#4F81FF"/>
|
||||
<path id="Vector_220" d="M1551.06 537.387L1553.33 536.346C1553.43 536.346 1553.43 536.25 1553.33 536.25L1551.06 535.206L1550.02 532.932H1549.92L1548.88 535.206L1546.61 536.25C1546.52 536.25 1546.52 536.346 1546.61 536.346L1548.88 537.387L1549.92 539.664H1550.02L1551.06 537.387Z" fill="#FF85AB"/>
|
||||
<path id="Vector_221" d="M1803.13 335.444V294.675" stroke="#612D46" stroke-width="3.02085" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_222" d="M1915.82 335.444V294.675" stroke="#612D46" stroke-width="3.02085" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_223" d="M1734.01 271.633C1747.65 271.633 1755.13 276.373 1761.75 281.303L1763.93 282.915L1766.2 284.717C1772.36 289.267 1778.8 293.155 1790.54 293.155C1802.28 293.155 1808.06 289.647 1813.93 285.38L1817.15 282.915L1818.38 282.062L1817.43 281.303C1810.8 276.373 1803.32 271.633 1789.69 271.633H1734.01Z" fill="#DE548C"/>
|
||||
<path id="Vector_224" d="M1802.29 287.748H1783.54L1775.58 282.059H1793.86L1802.29 287.748Z" fill="#DE5B90"/>
|
||||
<path id="Vector_225" d="M1806.08 293.152L1793.86 284.714H1819.15L1829.18 293.152H1806.08Z" fill="#D94C86"/>
|
||||
<path id="Vector_226" d="M1794.71 274.667H1769.14L1761.85 271.633H1785.43L1794.71 274.667Z" fill="#E85A94"/>
|
||||
<path id="Vector_227" d="M1790.55 298.562H1846.22C1859.86 298.562 1867.34 293.822 1874.06 288.797L1874.82 288.228C1874.45 287.831 1874.04 287.48 1873.59 287.185L1870.56 284.72C1864.97 280.453 1858.34 277.04 1847.07 277.04C1835.81 277.04 1828.99 280.927 1822.83 285.383L1820.37 287.185L1818.38 288.797C1811.66 293.822 1804.18 298.562 1790.55 298.562Z" fill="#B03A73"/>
|
||||
<path id="Vector_228" d="M1903.6 298.562H1959.28C1972.92 298.562 1980.4 293.822 1987.12 288.797L1987.88 288.228L1986.65 287.185L1983.52 284.72C1977.94 280.453 1971.31 277.04 1960.04 277.04C1948.77 277.04 1941.95 280.927 1935.89 285.383L1933.43 287.185L1931.44 288.797C1924.72 293.822 1917.24 298.562 1903.6 298.562Z" fill="#B03A73"/>
|
||||
<path id="Vector_229" d="M1851.33 279.317H1860.99C1864.44 280.601 1867.67 282.425 1870.55 284.721L1873.58 287.186C1874.03 287.482 1874.45 287.832 1874.81 288.229L1874.06 288.798L1870.17 291.547H1833.91L1851.33 279.317Z" fill="#A3366B"/>
|
||||
<path id="Vector_230" d="M1931.44 281.96L1930.21 282.813L1926.9 285.373C1921.12 289.64 1914.68 293.148 1903.6 293.148C1892.52 293.148 1885.42 289.26 1879.27 284.71L1876.9 282.908L1875.01 281.296C1869.52 277.03 1863.08 273.048 1853.04 272.005L1850.77 271.721H1902.75C1916.96 271.626 1924.91 276.651 1931.44 281.96Z" fill="#DE548C"/>
|
||||
<path id="Vector_231" d="M1911.75 292.399C1917.27 291.275 1922.46 288.872 1926.9 285.383H1902.66L1911.75 292.399Z" fill="#D94C86"/>
|
||||
<path id="Vector_232" d="M1692.92 298.564H1733.26C1746.89 298.564 1754.38 293.823 1761.1 288.798L1761.85 288.23L1760.72 287.281H1760.62L1757.5 285.006C1752.01 280.929 1746.04 277.611 1736.1 277.137H1731.93C1719.91 277.611 1713.47 282.162 1707.5 287.281H1707.41C1696.9 296.194 1694.63 297.995 1694.63 297.995C1694.14 298.371 1693.54 298.571 1692.92 298.564Z" fill="#B03A73"/>
|
||||
<path id="Vector_233" d="M1741.97 288.135L1735.15 293.729H1695.2L1701.82 288.135H1741.97Z" fill="#A3366B"/>
|
||||
<path id="Vector_234" d="M1875.01 281.303C1868.57 276.184 1860.71 271.633 1847.07 271.633C1833.44 271.633 1825.3 276.752 1818.38 282.062L1817.15 282.915L1813.93 285.38C1808.06 289.647 1801.72 293.155 1790.54 293.155C1779.37 293.155 1772.36 289.267 1766.21 284.717L1763.93 282.915L1761.76 281.303C1755.13 276.373 1747.65 271.633 1734.01 271.633C1718.86 271.633 1710.91 277.227 1704.09 283.01L1691.21 293.724C1690.67 294.184 1690.33 294.836 1690.26 295.543C1690.19 296.25 1690.4 296.957 1690.83 297.516C1691.08 297.832 1691.4 298.089 1691.76 298.27C1692.12 298.45 1692.52 298.549 1692.92 298.559C1693.23 298.572 1693.55 298.521 1693.84 298.406C1694.13 298.292 1694.4 298.118 1694.62 297.895L1707.5 287.182C1713.84 281.778 1720.66 277.037 1734.01 277.037C1745.28 277.037 1751.63 280.64 1757.5 284.906L1760.62 287.182L1761.95 288.225C1768.86 293.439 1776.34 298.559 1790.54 298.559C1804.75 298.559 1811.66 293.818 1818.38 288.793L1820.47 287.182L1822.83 285.38C1828.99 280.924 1835.43 277.037 1847.07 277.037C1858.72 277.037 1864.97 280.45 1870.56 284.717L1877 283.01L1875.01 281.303Z" fill="#F06FA2"/>
|
||||
<path id="Vector_235" d="M1844.33 280.268L1915.82 335.447" stroke="#612D46" stroke-width="3.02085" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_236" d="M1731.64 280.268L1803.13 335.447" stroke="#612D46" stroke-width="3.02085" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_237" d="M1803.98 279.979C1803.98 280.361 1804.06 280.739 1804.21 281.09C1804.36 281.442 1804.58 281.759 1804.85 282.025C1805.12 282.29 1805.45 282.498 1805.8 282.635C1806.16 282.772 1806.54 282.836 1806.92 282.824H1867.9C1862.88 279.505 1856.63 277.04 1847.07 277.04H1806.92C1806.54 277.04 1806.15 277.116 1805.8 277.264C1805.44 277.412 1805.12 277.628 1804.84 277.901C1804.57 278.174 1804.36 278.498 1804.21 278.855C1804.06 279.211 1803.98 279.593 1803.98 279.979Z" fill="#6B3143"/>
|
||||
<path id="Vector_238" d="M1806.92 282.918C1808.54 282.918 1809.86 281.603 1809.86 279.979C1809.86 278.356 1808.54 277.04 1806.92 277.04C1805.3 277.04 1803.98 278.356 1803.98 279.979C1803.98 281.603 1805.3 282.918 1806.92 282.918Z" fill="#9C4651"/>
|
||||
<path id="Vector_239" d="M1849.92 279.979C1849.93 279.598 1849.87 279.218 1849.73 278.862C1849.59 278.506 1849.39 278.181 1849.12 277.907C1848.86 277.632 1848.54 277.414 1848.19 277.266C1847.84 277.117 1847.46 277.04 1847.08 277.04C1856.64 277.04 1862.89 279.505 1867.91 282.824H1847.08C1847.46 282.837 1847.83 282.772 1848.18 282.634C1848.53 282.496 1848.85 282.287 1849.12 282.02C1849.38 281.753 1849.59 281.434 1849.73 281.083C1849.87 280.732 1849.93 280.357 1849.92 279.979Z" fill="#522539"/>
|
||||
<path id="Vector_240" d="M1691.03 279.981C1691.01 280.358 1691.08 280.734 1691.21 281.085C1691.35 281.436 1691.56 281.755 1691.83 282.022C1692.09 282.289 1692.41 282.498 1692.76 282.636C1693.11 282.774 1693.49 282.839 1693.87 282.825H1754.56C1749.32 279.361 1743.23 277.395 1736.95 277.137H1693.87C1693.11 277.137 1692.39 277.437 1691.86 277.97C1691.33 278.503 1691.03 279.227 1691.03 279.981Z" fill="#6B3143"/>
|
||||
<path id="Vector_241" d="M1693.86 282.918C1695.48 282.918 1696.8 281.603 1696.8 279.979C1696.8 278.356 1695.48 277.04 1693.86 277.04C1692.24 277.04 1690.93 278.356 1690.93 279.979C1690.93 281.603 1692.24 282.918 1693.86 282.918Z" fill="#9C4651"/>
|
||||
<path id="Vector_242" d="M1734.01 282.824H1754.56C1749.09 279.22 1742.73 277.217 1736.19 277.04H1734.01C1734.79 277.04 1735.54 277.35 1736.08 277.901C1736.64 278.452 1736.94 279.2 1736.94 279.979C1736.95 280.361 1736.87 280.739 1736.72 281.09C1736.57 281.442 1736.35 281.759 1736.08 282.025C1735.81 282.29 1735.48 282.498 1735.13 282.635C1734.77 282.772 1734.39 282.836 1734.01 282.824Z" fill="#522539"/>
|
||||
<path id="Vector_243" d="M1783.25 319.986C1769.61 326.433 1732.68 329.372 1709.29 282.82C1720.94 322.356 1747.17 344.921 1771.32 344.921C1795.46 344.921 1821.69 322.356 1833.34 282.82C1857.48 396.972 1945.74 389.008 1950.38 281.303C1974.99 338.284 1996.4 348.144 2015.71 323.304" stroke="#735980" stroke-width="1.25869" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path id="Vector_244" d="M1737.8 289.082L1738.37 279.317" stroke="#522539" stroke-width="1.51043" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_245" d="M1743.76 279.598L1734.01 286.425" stroke="#522539" stroke-width="1.51043" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_246" d="M1852.09 289.082L1852.66 279.317" stroke="#522539" stroke-width="1.51043" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_247" d="M1858.06 279.598L1848.31 286.425" stroke="#522539" stroke-width="1.51043" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_248" d="M1879.65 273.241L1884.67 275.137H1874.63L1870.18 273.241H1879.65Z" fill="#D94C86"/>
|
||||
<path id="Vector_249" d="M1887.41 278.562L1891.67 281.311H1896.6L1892.15 278.562H1887.41Z" fill="#E85A94"/>
|
||||
<path id="Vector_250" d="M2002.85 293.724L1992.24 284.906L1990.06 283.01L1987.98 281.303C1981.54 276.184 1973.78 271.633 1960.04 271.633C1946.32 271.633 1938.36 276.752 1931.45 282.062L1930.22 282.915L1926.9 285.38C1921.13 289.647 1914.69 293.155 1903.61 293.155C1892.53 293.155 1885.33 289.267 1879.27 284.717L1876.91 282.915L1874.82 281.303C1868.1 276.373 1860.62 271.633 1847.08 271.633V277.037C1858.25 277.037 1864.69 280.64 1870.56 284.906L1873.69 287.182L1874.92 288.225C1881.93 293.439 1889.41 298.559 1903.61 298.559C1917.81 298.559 1924.73 293.818 1931.45 288.793L1933.44 287.182L1935.9 285.38C1941.96 280.924 1948.4 277.037 1960.04 277.037C1971.69 277.037 1977.94 280.45 1983.53 284.717L1986.65 287.182L1987.88 288.225L1999.44 297.895C1999.9 298.319 2000.51 298.556 2001.14 298.559C2001.55 298.563 2001.95 298.47 2002.31 298.289C2002.67 298.107 2002.98 297.843 2003.22 297.516C2003.45 297.244 2003.62 296.929 2003.73 296.59C2003.84 296.25 2003.87 295.893 2003.84 295.54C2003.8 295.186 2003.69 294.843 2003.53 294.531C2003.35 294.219 2003.12 293.944 2002.85 293.724Z" fill="#F06FA2"/>
|
||||
<path id="Vector_251" d="M1917.06 279.979C1917.05 280.361 1917.13 280.739 1917.28 281.09C1917.43 281.442 1917.65 281.759 1917.92 282.025C1918.19 282.29 1918.52 282.498 1918.88 282.635C1919.23 282.772 1919.61 282.836 1919.99 282.824H1980.97C1975.86 279.505 1969.7 277.04 1960.04 277.04H1919.99C1919.21 277.04 1918.47 277.35 1917.92 277.901C1917.36 278.452 1917.06 279.2 1917.06 279.979Z" fill="#6B3143"/>
|
||||
<path id="Vector_252" d="M1919.99 282.918C1921.61 282.918 1922.93 281.603 1922.93 279.979C1922.93 278.356 1921.61 277.04 1919.99 277.04C1918.37 277.04 1917.06 278.356 1917.06 279.979C1917.06 281.603 1918.37 282.918 1919.99 282.918Z" fill="#9C4651"/>
|
||||
<path id="Vector_253" d="M2251.67 246.887H1738.07V223.754C1738.07 223.251 1738.27 222.768 1738.62 222.413C1738.98 222.057 1739.46 221.857 1739.96 221.857H2249.68C2250.18 221.857 2250.66 222.057 2251.02 222.413C2251.38 222.768 2251.58 223.251 2251.58 223.754V246.887H2251.67Z" fill="#E46A9B"/>
|
||||
<path id="Vector_254" d="M1865.24 234.282L1889.29 231.627L1886.26 246.892H1876.98L1865.24 234.282Z" fill="#EB6EA0"/>
|
||||
<path id="Vector_255" d="M2251.67 246.888V248.025C2247.5 248.025 2242.39 250.016 2240.5 253.903H1749.24C1747.35 250.016 1742.23 248.025 1738.07 248.025V246.888H2251.67Z" fill="#C84B8B"/>
|
||||
<path id="Vector_256" d="M1738.17 227.742H2070.53V225.59H1738.17V227.742Z" fill="#E49B9B"/>
|
||||
<path id="Vector_257" d="M1738.17 243.003H2070.53V240.85H1738.17V243.003Z" fill="#E49B9B"/>
|
||||
<path id="Vector_258" d="M1994.5 649.835H1509.3V626.039C1509.3 625.509 1509.51 625.005 1509.89 624.63C1510.26 624.257 1510.77 624.048 1511.29 624.048H1992.51C1992.77 624.048 1993.03 624.099 1993.27 624.199C1993.51 624.299 1993.73 624.445 1993.91 624.63C1994.1 624.815 1994.25 625.035 1994.35 625.276C1994.45 625.519 1994.5 625.777 1994.5 626.039V649.835Z" fill="#E46A9B"/>
|
||||
<path id="Vector_259" d="M1644.14 649.83L1653.33 638.738L1665.45 634.661L1669.8 624.042H1697.36L1684.67 636.936L1691.2 641.772L1686.75 649.83H1644.14Z" fill="#E36497"/>
|
||||
<path id="Vector_260" d="M1742.05 624.042L1732.49 635.609L1743.28 638.738L1766.01 624.042H1742.05Z" fill="#E86D9E"/>
|
||||
<path id="Vector_261" d="M2067.41 649.835H1915.71V626.039C1915.71 625.509 1915.92 625.005 1916.29 624.63C1916.67 624.257 1917.17 624.048 1917.7 624.048H2067.31V649.835H2067.41Z" fill="#C45999"/>
|
||||
<path id="Vector_262" d="M1509.3 630.108H1915.72V627.89H1509.3V630.108Z" fill="#E49B9B"/>
|
||||
<path id="Vector_263" d="M1915.8 630.108H2047.8V627.89H1915.8V630.108Z" fill="#C46999"/>
|
||||
<path id="Vector_264" d="M1776.99 234.282L1785.89 231.627L1789.68 236.368L1776.99 234.282Z" fill="#EB6EA0"/>
|
||||
<path id="Vector_265" d="M1849.71 231.627L1847.82 234.282L1853.12 231.627H1849.71Z" fill="#F078A8"/>
|
||||
<path id="Vector_266" d="M1559.02 634.285L1557.98 638.077L1564.8 634.948L1559.02 634.285Z" fill="#E36497"/>
|
||||
<path id="Vector_267" d="M1594.99 624.042L1596.03 626.129L1599.82 624.042H1594.99Z" fill="#E35B91"/>
|
||||
<path id="Vector_268" d="M1792.33 639.501L1787.88 634.383H1796.4L1792.33 639.501Z" fill="#E35B91"/>
|
||||
<path id="Vector_269" d="M1734.01 338.754H1730.12V364.248H1734.01V338.754Z" fill="#FFD380"/>
|
||||
<path id="Vector_270" d="M1782.02 367.489L1774.16 361.041V356.68L1782.02 363.127V367.489Z" fill="#FFC485"/>
|
||||
<path id="Vector_271" d="M1730.12 341.225L1734.01 344.354V351.275L1730.12 345.776V341.225Z" fill="#FFE2AB"/>
|
||||
<path id="Vector_272" d="M1718.95 508.099H1699.06V508.562H1718.95V508.099Z" fill="#913945"/>
|
||||
<path id="Vector_273" d="M1719.05 509.988H1697.37V510.453H1719.05V509.988Z" fill="#913945"/>
|
||||
<path id="Vector_274" d="M1719.05 512.07H1697.37V512.536H1719.05V512.07Z" fill="#913945"/>
|
||||
<path id="Vector_275" d="M1816.01 506.479H1793.1V513.193H1816.01V506.479Z" fill="#BA4E5D"/>
|
||||
<path id="Vector_276" d="M1799.63 506.479L1797.83 511.125H1794.9L1796.79 506.479H1799.63Z" fill="#D65A6B"/>
|
||||
<path id="Vector_277" d="M1815.91 506.479H1802.75V513.193H1815.91V506.479Z" fill="#AD4452"/>
|
||||
<path id="Vector_278" d="M1816 507.807H1794.98V508.301H1816V507.807Z" fill="#913945"/>
|
||||
<path id="Vector_279" d="M1816.01 509.803H1793.1V510.297H1816.01V509.803Z" fill="#913945"/>
|
||||
<path id="Vector_280" d="M1816.01 511.984H1793.1V512.477H1816.01V511.984Z" fill="#913945"/>
|
||||
<path id="Vector_281" d="M1697.45 547.72C1690.25 579.102 1691.48 575.974 1692.81 580.051C1694.14 584.128 1694.7 584.412 1696.22 575.974C1697.73 567.536 1698.58 560.331 1699.53 552.365C1700.48 544.402 1699.91 536.722 1697.45 547.72Z" fill="#1A40A1"/>
|
||||
<path id="Vector_282" d="M1738.07 617.887C1742.16 616.354 1746.34 615.056 1750.57 614C1752.75 613.525 1753.51 613.337 1754.46 607.458C1755.4 601.581 1755.78 594.943 1755.97 593.615C1756.16 592.287 1751.43 599.588 1747.83 604.709C1744.23 609.829 1732.96 619.879 1738.07 617.887Z" fill="#1A3578"/>
|
||||
<path id="Vector_283" d="M1644.42 464.949L1646.88 466.561C1647.27 466.808 1647.7 466.97 1648.15 467.036C1648.6 467.102 1649.07 467.071 1649.5 466.945C1649.94 466.819 1650.35 466.603 1650.7 466.307C1651.05 466.013 1651.33 465.646 1651.52 465.234L1652.28 463.622" stroke="#BA4173" stroke-width="1.00695" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_284" d="M1614.69 465.239C1612.42 464.67 1609.68 463.912 1608.54 463.816C1609.62 465.066 1610.98 466.041 1612.52 466.661L1612.14 467.039L1618.01 466.755C1620.09 466.471 1619.24 466.281 1614.69 465.239Z" fill="#F071AB"/>
|
||||
<path id="Vector_285" d="M1612.5 453.095C1613.99 451.477 1614.7 449.707 1614.09 449.139C1613.47 448.57 1611.77 449.421 1610.28 451.037C1608.79 452.652 1608.08 454.424 1608.69 454.991C1609.31 455.56 1611.01 454.711 1612.5 453.095Z" fill="#FFA1BD"/>
|
||||
<path id="Vector_286" d="M1612.14 502.975L1617.35 500.794C1618.39 500.414 1617.44 500.035 1615.07 498.992C1612.71 497.949 1612.23 497.57 1612.04 499.655C1611.85 501.742 1611.1 503.353 1612.14 502.975Z" fill="#FAD596"/>
|
||||
<path id="Vector_287" d="M1618.19 501.932C1612.99 503.354 1612.89 504.016 1612.8 504.965C1612.7 505.913 1612.7 506.672 1614.69 505.25C1616.32 504.009 1618.06 502.928 1619.9 502.026C1620.84 501.647 1620.37 501.267 1618.19 501.932Z" fill="#F7D08D"/>
|
||||
<path id="Vector_288" d="M1625.01 501.838C1626.05 496.529 1625.96 495.107 1626.34 495.011C1626.71 494.917 1627.66 496.245 1628.42 497.857C1629.18 499.469 1625.01 501.838 1625.01 501.838Z" fill="#172E5C"/>
|
||||
<path id="Vector_289" d="M1620.37 502.779C1617.15 504.105 1616.11 506.285 1618.1 513.208H1618.67C1617.06 502.683 1621.6 502.683 1623.68 502.493C1622.58 502.256 1621.42 502.354 1620.37 502.779Z" fill="#F278B0"/>
|
||||
<path id="Vector_290" d="M1636 504.764C1637.33 505.427 1636.76 506.849 1635.72 509.029C1634.67 511.21 1634.11 512.159 1633.63 513.202H1637.42L1638.94 511.684C1640.36 509.882 1640.45 509.125 1639.41 507.702C1638.37 506.28 1637.42 505.237 1636 504.764Z" fill="#F278B0"/>
|
||||
<path id="Vector_291" d="M1671.79 504.683C1671.74 503.783 1671.46 502.909 1671 502.135C1670.54 501.359 1669.91 500.706 1669.14 500.228C1669.14 500.228 1665.54 498.047 1662.51 496.529C1660.73 498.147 1659.26 500.075 1658.16 502.218C1657.77 502.888 1657.51 503.628 1657.4 504.399L1658.54 505.252C1659.76 506.506 1660.89 507.835 1661.94 509.234C1662.6 510.155 1663.53 510.85 1664.6 511.225C1665.88 511.59 1667.24 511.524 1668.48 511.035C1669.54 510.538 1670.43 509.726 1671.02 508.709C1671.62 507.692 1671.88 506.519 1671.79 505.346V504.683Z" fill="#F073AB"/>
|
||||
<path id="Vector_292" d="M1655.38 494.339L1650.81 492.04L1648.38 496.885L1652.95 499.184L1655.38 494.339Z" fill="#AD3B4B"/>
|
||||
<path id="Vector_293" d="M1840.24 423.809C1839.74 423.443 1839.13 423.281 1838.51 423.351C1837.9 423.421 1837.33 423.72 1836.93 424.187C1836.63 424.553 1836.28 424.871 1835.89 425.136L1837.4 427.98C1838.77 427.383 1840.07 426.654 1841.28 425.799C1841.28 425.409 1841.18 425.025 1841 424.679C1840.82 424.332 1840.56 424.035 1840.24 423.809Z" fill="#B5CDFF"/>
|
||||
<path id="Vector_294" d="M1832.2 430.241V429.388C1830.03 429.641 1827.85 429.767 1825.67 429.769C1825.67 429.769 1826.99 430.716 1832.2 430.241Z" fill="#B5CDFF"/>
|
||||
<path id="Vector_295" d="M1837.69 421.526L1843.18 422.57C1843.18 422.57 1842.23 418.681 1837.69 421.526Z" fill="#3366E0"/>
|
||||
<path id="Vector_296" d="M1824.15 441.919C1826.99 446.184 1835.33 447.608 1839.02 442.772C1840.82 440.307 1836.27 439.926 1831.73 439.738C1827.18 439.548 1822.54 439.548 1824.15 441.919Z" fill="#3366E0"/>
|
||||
<path id="Vector_297" d="M1821.68 429.388L1823.77 435.362C1823.77 435.362 1819.79 434.13 1821.68 429.388Z" fill="#3366E0"/>
|
||||
<path id="Vector_298" d="M1826.78 403.053C1827.51 401.904 1827.78 400.767 1827.38 400.515C1826.98 400.262 1826.07 400.989 1825.34 402.14C1824.61 403.288 1824.34 404.426 1824.74 404.678C1825.14 404.931 1826.05 404.204 1826.78 403.053Z" fill="#78ACFA"/>
|
||||
<path id="Vector_299" d="M1857.57 407.879C1856.15 409.105 1854.82 410.435 1853.59 411.862C1853.03 412.621 1853.31 413.664 1852.93 415.18C1852.55 416.698 1852.08 418.31 1853.12 417.551C1853.69 417.229 1854.16 416.738 1854.45 416.144C1854.73 415.551 1854.83 414.885 1854.73 414.233C1854.45 412.715 1854.45 412.811 1855.58 411.956C1856.82 410.956 1857.82 409.693 1858.52 408.26C1859.27 406.458 1859.65 406.079 1857.57 407.879Z" fill="#204FBF"/>
|
||||
<path id="Vector_300" d="M1854.16 423.327C1852.74 424.276 1852.46 423.517 1851.98 422.284C1851.51 421.052 1851.32 420.862 1852.27 421.052C1852.71 421.157 1853.18 421.152 1853.63 421.035C1854.07 420.92 1854.48 420.698 1854.82 420.387C1855.01 421.43 1854.92 422.758 1854.16 423.327Z" fill="#2158DE"/>
|
||||
<path id="Vector_301" d="M1865.43 428.831C1859.09 431.771 1856.34 433.477 1853.6 434.898C1850.85 436.322 1851.23 435.848 1850.85 438.975C1850.47 442.105 1850.57 441.631 1855.78 437.934C1860.98 434.236 1862.59 433.004 1864.87 431.108C1867.14 429.211 1868.65 427.409 1865.43 428.831Z" fill="#D43545"/>
|
||||
<path id="Vector_302" d="M1856.81 429.771C1858.71 428.443 1859.28 428.065 1856.62 425.978L1856.81 429.771Z" fill="#A63843"/>
|
||||
<path id="Vector_303" d="M1840.53 454.144C1834.94 457.274 1833.71 458.031 1832.67 457.842C1831.63 457.652 1829.16 455.566 1827.74 454.144C1826.32 452.722 1825.09 451.585 1825.66 452.722C1828.41 458.695 1830.49 461.919 1833.05 464.194C1835.6 466.469 1837.5 469.03 1847.34 460.307C1850 458.031 1852.08 455.85 1853.88 454.05C1854.69 450.892 1855.7 447.788 1856.91 444.758L1840.53 454.144Z" fill="#D93B4C"/>
|
||||
<path id="Vector_304" d="M1877.65 436.887C1873.59 435.284 1869.15 434.891 1864.87 435.748C1862.22 436.507 1863.64 435.369 1866 434.706C1868.37 434.042 1872.82 432.714 1877.08 435.369L1877.65 436.887Z" fill="#D43545"/>
|
||||
<path id="Vector_305" d="M1817.43 443.333L1816.67 443.617C1816.67 443.617 1817.24 446.176 1818.37 449.781C1823.77 462.484 1828.03 467.414 1829.83 467.795C1831.63 468.173 1832.29 468.173 1830.97 466.942C1827.37 463.527 1824.53 459.925 1817.43 443.333Z" fill="#E84D5C"/>
|
||||
<path id="Vector_306" d="M1852.37 459.543C1847.82 465.138 1843.75 468.74 1840.82 470.162C1837.88 471.585 1832.86 473.576 1827.75 469.024C1828.95 470.567 1830.47 471.828 1832.2 472.723C1833.31 473.173 1834.45 473.551 1835.61 473.86C1837.45 473.696 1839.24 473.216 1840.91 472.438C1845.27 470.542 1849.05 466.181 1851.52 462.673L1852.37 459.543Z" fill="#D43545"/>
|
||||
<path id="Vector_307" d="M1848.2 444.195C1842.8 448.747 1835.7 450.833 1828.88 448.747C1833.43 453.489 1834.75 454.814 1848.2 444.195Z" fill="#590942"/>
|
||||
<path id="Vector_308" d="M1871.78 438.218C1874.35 438.825 1876.78 439.943 1878.91 441.506C1881.04 443.069 1882.83 445.047 1884.19 447.319C1885.23 444.192 1886.27 442.768 1880.97 440.399C1878.1 439.019 1874.96 438.275 1871.78 438.218Z" fill="#EB495B"/>
|
||||
<path id="Vector_309" d="M1861.07 438.595C1853.69 443.809 1852.55 445.137 1852.65 457.274C1851.42 458.411 1851.7 459.17 1852.08 460.686C1867.61 462.963 1876.7 468.936 1876.7 468.936L1861.07 438.595Z" fill="#F7E9CB"/>
|
||||
<path id="Vector_310" d="M1852.64 457.274C1852.64 457.274 1855.67 455.946 1856.81 455.283C1857.95 454.618 1858.04 454.618 1858.13 453.765C1858.23 452.912 1857.85 444.664 1861.07 438.595C1853.68 443.809 1852.55 445.137 1852.64 457.274Z" fill="white"/>
|
||||
<path id="Vector_311" d="M1877.74 468.93C1879.8 465.597 1881.45 462.034 1882.67 458.311C1883.52 455.656 1884.09 456.794 1883.33 461.535C1882.57 466.275 1881.72 467.034 1877.74 468.93Z" fill="#EDC993"/>
|
||||
<path id="Vector_312" d="M1876.7 468.936H1876.61C1876.13 468.557 1867.14 462.868 1852.08 460.688L1841.29 497.759L1859.66 504.679L1865.43 496.906C1868.67 492.364 1870.21 486.825 1869.79 481.261L1869.6 478.227L1876.7 468.936Z" fill="#4D7AE8"/>
|
||||
<path id="Vector_313" d="M1876.6 468.926C1876.13 468.548 1869.21 464.187 1857.47 461.625C1856.05 475.562 1854.82 476.227 1853.21 479.451C1851.6 482.673 1849.9 484.76 1848.86 487.983C1847.94 491.87 1846.16 495.499 1843.65 498.602L1859.65 504.67L1865.43 496.896C1868.67 492.354 1870.21 486.816 1869.78 481.251L1869.59 478.218L1876.69 468.926H1876.6Z" fill="#3467E3"/>
|
||||
<path id="Vector_314" d="M1862.49 504.203L1855.11 513.21H1823.1V512.072C1823.11 511.707 1823.23 511.355 1823.45 511.063C1823.67 510.773 1823.98 510.562 1824.33 510.46C1826.89 509.703 1832.95 507.807 1835.22 506.479C1838.25 502.306 1838.82 499.747 1840.53 493.68C1844.03 494.627 1857.76 498.516 1862.49 504.203Z" fill="#542113"/>
|
||||
<path id="Vector_315" d="M1868.65 479.455L1862.88 484.765C1862.88 484.765 1868.46 487.703 1868.65 479.455Z" fill="#1C53D9"/>
|
||||
<path id="Vector_316" d="M1831.15 509.798L1838.73 507.238L1844.98 495.008C1843.09 494.343 1841.48 493.964 1840.53 493.68C1838.83 499.747 1838.26 502.306 1835.23 506.479H1836.84L1831.15 509.798Z" fill="#732D1A"/>
|
||||
<path id="Vector_317" d="M1818.85 467.793L1814.87 457.27C1814.3 455.848 1814.12 456.132 1813.55 456.889C1812.98 457.648 1813.93 460.398 1815.44 463.716C1816.96 467.036 1818.85 467.793 1818.85 467.793Z" fill="#EDC993"/>
|
||||
<path id="Vector_318" d="M1792.62 449.788L1784.09 448.461C1785.12 456.14 1787.62 463.548 1791.48 470.267L1791.67 470.552L1792.52 471.593C1793.04 472 1793.61 472.32 1794.23 472.542L1790.53 464.672C1791.44 465.422 1792.39 466.119 1793.37 466.759C1795.08 467.802 1794.98 466.569 1794.89 465.81C1793.94 459.648 1792.62 449.788 1792.62 449.788Z" fill="#4D7AE8"/>
|
||||
<path id="Vector_319" d="M1794.9 469.311L1797.74 470.734C1797.74 470.734 1794.99 472.819 1794.9 469.311Z" fill="#1C53D9"/>
|
||||
<path id="Vector_320" d="M1783.34 425.517L1791.2 425.136C1791.77 425.136 1791.49 425.327 1788.83 425.705L1782.39 426.748C1782.02 426.748 1781.73 426.844 1781.64 426.18C1781.54 425.517 1782.11 425.611 1783.34 425.517Z" fill="#40180C"/>
|
||||
<path id="Vector_321" d="M1791.48 429.486L1789.11 430.055C1787.53 430.659 1785.87 431.074 1784.19 431.288C1783.53 431.383 1783.05 431.383 1784.38 432.236C1785.7 433.089 1785.99 433.563 1787.5 432.616C1789.02 431.667 1792.81 429.202 1791.48 429.486Z" fill="#40180C"/>
|
||||
<path id="Vector_322" d="M1780.12 428.929C1780.78 427.505 1780.4 426.937 1779.64 425.705C1778.89 424.472 1778.22 423.428 1779.17 422.197C1780.12 420.963 1779.64 420.206 1779.07 418.594C1778.51 416.982 1778.79 416.129 1780.49 414.517L1779.93 414.706C1779.13 414.834 1778.39 415.175 1777.77 415.691C1777.15 416.208 1776.69 416.885 1776.42 417.645C1775.95 419.067 1776.8 419.638 1778.03 420.775C1779.26 421.912 1778.22 421.912 1777.65 422.766C1777.19 423.357 1776.98 424.108 1777.07 424.854C1777.16 425.6 1777.54 426.281 1778.13 426.748C1779.74 428.454 1776.42 429.97 1781.16 433.006C1780.65 432.473 1780.28 431.82 1780.1 431.104C1779.92 430.39 1779.92 429.641 1780.12 428.929Z" fill="#732D1A"/>
|
||||
<path id="Vector_323" d="M1797.63 432.047C1793.75 435.462 1790.53 438.211 1789.11 438.97C1787.69 439.727 1788.35 440.201 1790.62 441.907C1792.9 443.615 1793.56 444.088 1795.64 440.201C1797.73 436.315 1800.09 429.773 1797.63 432.047Z" fill="#4D1D0F"/>
|
||||
<path id="Vector_324" d="M1790.62 405.407L1789.48 407.209C1791.09 407.209 1790.62 405.407 1790.62 405.407Z" fill="#FF904F"/>
|
||||
<path id="Vector_325" d="M1789.97 412.139C1788.36 411.759 1788.83 409.862 1790.82 407.588C1793.09 410.527 1792.62 412.708 1789.97 412.139Z" fill="#FF904F"/>
|
||||
<path id="Vector_326" d="M1790.34 412.339C1789.77 412.243 1789.96 411.58 1790.72 410.631C1791.57 411.768 1791.38 412.527 1790.34 412.339Z" fill="#F7E9CB"/>
|
||||
<path id="Vector_327" d="M1903.78 487.044C1903.17 485.833 1902.14 484.882 1900.89 484.36C1899.64 483.839 1898.25 483.782 1896.96 484.198L1885.12 487.991H1885.03L1886.73 487.516C1887.59 487.272 1888.5 487.36 1889.29 487.765C1890.08 488.17 1890.69 488.861 1890.99 489.697L1895.07 502.024C1895.15 502.297 1895.29 502.553 1895.48 502.774C1895.66 502.994 1895.89 503.175 1896.14 503.306C1896.4 503.438 1896.68 503.519 1896.96 503.544C1897.25 503.566 1897.54 503.534 1897.81 503.446L1908.89 499.559C1909.02 499.506 1909.15 499.427 1909.25 499.327C1909.35 499.226 1909.43 499.105 1909.48 498.971C1909.54 498.838 1909.56 498.695 1909.56 498.552C1909.55 498.407 1909.52 498.265 1909.46 498.135L1903.78 487.044Z" fill="#572214"/>
|
||||
<path id="Vector_328" d="M1892.04 555.309C1892.04 555.309 1881.35 560.333 1878.32 562.135C1875.29 563.935 1875.47 564.316 1878.6 564.6C1882.16 564.852 1885.73 564.916 1889.3 564.79C1892.33 564.6 1893.37 564.884 1893.75 561.851C1894.13 558.817 1895.07 553.887 1892.04 555.309Z" fill="#2C2D57"/>
|
||||
<path id="Vector_329" d="M1866.86 553.782C1866.57 556.247 1866.38 556.531 1869.22 557.29C1871.5 557.808 1873.81 558.156 1876.14 558.333C1877.46 558.427 1878.12 557.859 1880.4 556.531C1882.67 555.203 1883.05 554.919 1879.36 553.782C1875.66 552.644 1871.69 551.032 1869.51 550.464C1867.33 549.895 1867.42 550.085 1866.86 553.782Z" fill="#2C2D57"/>
|
||||
<path id="Vector_330" d="M1875.56 608.211C1876.32 612.288 1874.33 615.226 1871.49 617.122C1868.64 619.018 1865.8 619.208 1865.05 621.011C1864.61 621.967 1864.35 622.995 1864.29 624.044H1894.59L1875.56 608.211Z" fill="#8C422A"/>
|
||||
<path id="Vector_331" d="M1877.27 609.64C1878.31 606.322 1880.2 606.038 1887.02 612.484C1893.84 618.932 1889.01 615.708 1883.52 613.621C1878.02 611.537 1878.78 611.252 1877.27 612.768C1875.75 614.286 1876.41 612.768 1877.27 609.64Z" fill="#7D361F"/>
|
||||
<path id="Vector_332" d="M1886.65 606.032C1889.58 608.213 1892.99 610.964 1894.13 610.109C1895.27 609.256 1896.78 607.172 1896.97 606.032C1897.16 604.895 1896.21 605.464 1891.86 604.991C1887.5 604.516 1884.75 604.611 1886.65 606.032Z" fill="#7D361F"/>
|
||||
<path id="Vector_333" d="M1819.61 610.196C1818.75 614.367 1815.72 616.832 1810.23 618.822C1807.68 619.772 1806.73 619.772 1806.16 621.858C1805.93 622.56 1805.84 623.301 1805.88 624.039H1838.92V613.135L1819.61 610.196Z" fill="#7D361F"/>
|
||||
<path id="Vector_334" d="M1678.14 560.043L1680.51 562.508C1680.83 562.796 1681.06 563.184 1681.14 563.613C1681.23 564.041 1681.17 564.485 1680.98 564.879L1679.84 567.438L1678.14 560.043Z" fill="#1C1B29"/>
|
||||
<path id="Vector_335" d="M1642.54 560.043L1642.06 566.11C1641.99 566.517 1642.04 566.935 1642.19 567.319C1642.34 567.703 1642.59 568.039 1642.91 568.291L1645.47 570.756L1642.54 560.043Z" fill="#1C1B29"/>
|
||||
<path id="Vector_336" d="M1666.01 562.515L1679.65 563.747L1675.29 566.022C1674.26 566.543 1673.09 566.739 1671.94 566.589C1670.79 566.436 1669.72 565.941 1668.85 565.169L1666.01 562.515Z" fill="#13121C"/>
|
||||
<path id="Vector_337" d="M1654.56 563.745L1646.42 567.916C1646.42 567.916 1652.48 572.942 1654.56 563.745Z" fill="#13121C"/>
|
||||
<path id="Vector_338" d="M1599.35 480.88C1601.28 480.88 1602.85 479.31 1602.85 477.372C1602.85 475.434 1601.28 473.864 1599.35 473.864C1597.41 473.864 1595.84 475.434 1595.84 477.372C1595.84 479.31 1597.41 480.88 1599.35 480.88Z" fill="#6E2B17"/>
|
||||
<path id="Vector_339" d="M1647.27 513.204L1651.43 516.806L1654.18 513.204H1647.27Z" fill="#DB704C"/>
|
||||
<path id="Vector_340" d="M1521.13 609.26H1532.31L1533.73 594.47H1522.56L1521.13 609.26Z" fill="#FF9191"/>
|
||||
<path id="Vector_341" d="M1519.44 562.041C1517.92 561.756 1516.31 563.274 1515.84 565.549C1515.68 566.43 1515.71 567.336 1515.93 568.204C1513.19 568.204 1510.82 569.342 1509.97 571.522C1512.15 570.613 1514.54 570.317 1516.88 570.669C1516.88 570.669 1516.31 565.265 1519.63 562.137C1519.63 562.041 1519.53 562.041 1519.44 562.041Z" fill="#2A858C"/>
|
||||
<path id="Vector_342" d="M1539.04 553.411L1546.23 548.859C1544.44 547.912 1541.31 549.049 1539.04 553.411Z" fill="#2A858C"/>
|
||||
<path id="Vector_343" d="M1531.56 564.598C1532.5 557.393 1533.26 552.083 1536.67 547.912C1530.23 549.049 1531.84 555.403 1531.56 564.598Z" fill="#2A858C"/>
|
||||
<path id="Vector_344" d="M1554.66 558.535C1553.75 560.694 1553.58 563.097 1554.19 565.361L1558.54 556.166C1557.73 556.086 1556.91 556.275 1556.21 556.702C1555.5 557.13 1554.96 557.772 1554.66 558.535Z" fill="#2A858C"/>
|
||||
<path id="Vector_345" d="M1528.43 577.202L1527.68 578.814L1529.85 578.435L1528.43 577.202Z" fill="#2A858C"/>
|
||||
<path id="Vector_346" d="M1538.09 559.288L1536.11 561.941H1539.04L1538.09 559.288Z" fill="#2A858C"/>
|
||||
<path id="Vector_347" d="M1556.93 577.202L1555.41 578.814L1557.59 579.382L1556.93 577.202Z" fill="#2A858C"/>
|
||||
<path id="Vector_348" d="M1536.58 583.365V585.83L1538.66 584.599L1536.58 583.365Z" fill="#1A606E"/>
|
||||
<path id="Vector_349" d="M1531.27 545.07C1531.42 545.697 1531.7 546.287 1532.08 546.805C1532.47 547.322 1532.95 547.757 1533.51 548.083C1534.07 548.411 1534.68 548.624 1535.32 548.708C1535.96 548.793 1536.61 548.748 1537.23 548.578C1537.85 548.422 1538.43 548.147 1538.94 547.769C1539.45 547.388 1539.88 546.912 1540.2 546.366C1540.53 545.82 1540.74 545.215 1540.83 544.586C1540.92 543.957 1540.89 543.315 1540.73 542.699L1531.27 545.07Z" fill="#FFB869"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Left" clip-path="url(#clip2_6_63)">
|
||||
<g id="Clip path group_2">
|
||||
<mask id="mask1_6_63" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="334" width="635" height="306">
|
||||
<g id="clip0_2">
|
||||
<path id="Vector_350" d="M635 334H0V640H635V334Z" fill="white"/>
|
||||
</g>
|
||||
</mask>
|
||||
<g mask="url(#mask1_6_63)">
|
||||
<g id="Group_2">
|
||||
<path id="Vector_351" opacity="0.5" d="M467.328 623.355C466.309 566.626 398.166 482.718 310.442 510.687C274.9 346.045 20.1044 335.967 8.67201 559.378C-75.0904 548.168 -199.602 560.623 -208.431 676.462C-256.085 677.481 -315.172 683.142 -327.283 743.044H310.442L717.257 742.704C666.659 655.853 616.967 588.026 467.328 623.355Z" fill="#82A5FF"/>
|
||||
<g id="Clip path group_3">
|
||||
<mask id="mask2_6_63" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="192" y="510" width="147" height="160">
|
||||
<g id="clip1">
|
||||
<path id="Vector_352" d="M338.748 510.847H192.988V669.268H338.748V510.847Z" fill="white"/>
|
||||
</g>
|
||||
</mask>
|
||||
<g mask="url(#mask2_6_63)">
|
||||
<g id="Group_3">
|
||||
<path id="Vector_353" d="M259.697 554.687H192.983V669.275H259.697V554.687Z" fill="#FFF0DB"/>
|
||||
<path id="Vector_354" d="M252.12 669.269H300.855V536.922H252.12V669.269Z" fill="#FFF0DB"/>
|
||||
<path id="Vector_355" d="M248.477 650.915H272.102V614.275H248.477V650.915Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_356" d="M332.429 608.487H300.855V614.209H332.429V608.487Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_357" d="M312.297 608.487H283.399L274.706 595.708H303.011L312.297 608.487Z" fill="#F595BA"/>
|
||||
<path id="Vector_358" d="M338.818 614.207H300.855V669.253H338.818V614.207Z" fill="#FFF0DB"/>
|
||||
<path id="Vector_359" d="M328.265 621.715C328.935 621.715 329.577 621.98 330.052 622.455C330.526 622.928 330.791 623.57 330.791 624.241V630.929H325.739V624.241C325.739 623.57 326.006 622.928 326.479 622.455C326.954 621.98 327.596 621.715 328.265 621.715Z" fill="#FFD191"/>
|
||||
<path id="Vector_360" d="M316.605 621.715C317.276 621.715 317.918 621.98 318.393 622.455C318.866 622.928 319.133 623.57 319.133 624.241V630.929H314.08V624.241C314.08 623.57 314.346 622.928 314.819 622.455C315.294 621.98 315.937 621.715 316.605 621.715Z" fill="#FFD191"/>
|
||||
<path id="Vector_361" d="M304.942 621.715C305.611 621.715 306.255 621.98 306.728 622.455C307.201 622.928 307.468 623.57 307.468 624.241V630.929H302.417V624.241C302.417 623.57 302.682 622.928 303.156 622.455C303.63 621.98 304.272 621.715 304.942 621.715Z" fill="#FFD191"/>
|
||||
<path id="Vector_362" d="M238.301 599.421C238.632 599.421 238.961 599.487 239.267 599.613C239.573 599.74 239.852 599.926 240.087 600.161C240.322 600.396 240.507 600.674 240.635 600.981C240.761 601.287 240.827 601.617 240.827 601.947V608.635H235.774V601.947C235.774 601.617 235.839 601.287 235.967 600.981C236.094 600.674 236.28 600.396 236.513 600.161C236.748 599.926 237.028 599.74 237.333 599.613C237.639 599.487 237.968 599.421 238.301 599.421Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_363" d="M238.301 627.732C238.632 627.732 238.961 627.797 239.267 627.925C239.573 628.052 239.852 628.239 240.087 628.472C240.322 628.706 240.507 628.986 240.635 629.292C240.761 629.598 240.827 629.927 240.827 630.26V636.947H235.774V630.26C235.774 629.589 236.04 628.947 236.513 628.472C236.988 627.998 237.631 627.732 238.301 627.732Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_364" d="M296.099 543.989H292.086V551.301H296.099V543.989Z" fill="#FFD191"/>
|
||||
<path id="Vector_365" d="M281.54 543.989H277.527V551.301H281.54V543.989Z" fill="#FFD191"/>
|
||||
<path id="Vector_366" d="M265.343 554.687H192.983V558.745H265.343V554.687Z" fill="#F595BA"/>
|
||||
<path id="Vector_367" d="M244.02 620.895H232.579V622.567H244.02V620.895Z" fill="#BED3FF"/>
|
||||
<path id="Vector_368" fill-rule="evenodd" clip-rule="evenodd" d="M275.304 511.145C275.636 510.935 276.026 510.831 276.419 510.848C276.782 510.838 277.145 510.902 277.483 511.036C277.821 511.171 278.128 511.373 278.384 511.63C278.642 511.888 278.845 512.195 278.978 512.533C279.114 512.871 279.178 513.234 279.167 513.597C279.171 513.98 279.096 514.36 278.945 514.713C278.448 514.825 277.931 514.802 277.447 514.645C276.963 514.488 276.531 514.202 276.195 513.819C275.819 513.496 275.538 513.078 275.38 512.606C275.224 512.135 275.197 511.63 275.304 511.145ZM298.037 529.947H302.719C303.64 529.925 304.533 530.262 305.211 530.886C305.89 531.509 306.301 532.372 306.358 533.291C306.379 533.761 306.303 534.233 306.136 534.672C305.97 535.113 305.716 535.517 305.391 535.857C305.063 536.197 304.672 536.467 304.238 536.652C303.804 536.837 303.338 536.931 302.867 536.931H250.046C249.575 536.931 249.109 536.837 248.675 536.652C248.241 536.467 247.849 536.197 247.522 535.857C247.196 535.517 246.942 535.113 246.777 534.672C246.609 534.233 246.535 533.761 246.554 533.291C246.611 532.372 247.022 531.509 247.702 530.886C248.379 530.262 249.274 529.925 250.194 529.947H254.875C259.165 529.932 263.278 528.223 266.316 525.191L276.419 515.011L286.597 525.191C289.635 528.223 293.747 529.932 298.037 529.947Z" fill="#BED3FF"/>
|
||||
<path id="Vector_369" d="M274.706 595.708V608.637H283.399L274.706 595.708Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_370" fill-rule="evenodd" clip-rule="evenodd" d="M279.163 513.595C279.163 515.115 277.933 516.346 276.415 516.346C276.316 516.346 276.218 516.34 276.12 516.33L273.073 529.947H254.872C259.162 529.933 263.274 528.223 266.312 525.191L275.318 516.118C274.345 515.695 273.665 514.723 273.665 513.595C273.665 512.078 274.896 510.846 276.415 510.846C277.933 510.846 279.163 512.078 279.163 513.595Z" fill="#ABC5FF"/>
|
||||
<path id="Vector_371" d="M283.393 608.486H312.294L310.881 606.553H282.13L283.393 608.486Z" fill="#F08DB4"/>
|
||||
<path id="Vector_372" d="M279.085 602.097H307.689L306.276 600.238H277.822L279.085 602.097Z" fill="#F08DB4"/>
|
||||
<path id="Vector_373" d="M257.1 590.727C257.83 590.727 258.529 591.017 259.044 591.531C259.558 592.047 259.848 592.746 259.848 593.475V598.009H254.352V593.475C254.352 592.746 254.64 592.047 255.156 591.531C255.672 591.017 256.371 590.727 257.1 590.727Z" fill="#F7E5BC"/>
|
||||
<path id="Vector_374" d="M222.778 571.705C223.269 571.705 223.742 571.901 224.091 572.249C224.44 572.596 224.635 573.07 224.635 573.562V578.912H220.92V573.488C220.939 573.009 221.144 572.555 221.49 572.223C221.836 571.89 222.298 571.705 222.778 571.705Z" fill="#F7E5BC"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Clip path group_4">
|
||||
<mask id="mask3_6_63" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="-391" y="334" width="707" height="335">
|
||||
<g id="clip2">
|
||||
<path id="Vector_375" d="M315.645 334H-390.198V668.972H315.645V334Z" fill="white"/>
|
||||
</g>
|
||||
</mask>
|
||||
<g mask="url(#mask3_6_63)">
|
||||
<g id="Group_4">
|
||||
<path id="Vector_376" d="M192.54 382.223C194.397 384.898 195.141 389.951 195.884 395.153C196.626 400.354 197.666 408.751 196.404 414.992L192.54 382.223Z" fill="#C2FFCE"/>
|
||||
<path id="Vector_377" d="M43.8885 449.469C42.1798 455.414 41.6597 457.271 43.8143 459.501C45.9687 461.73 43.8885 449.469 43.8885 449.469Z" fill="#7D9FFF"/>
|
||||
<path id="Vector_378" d="M35.1952 396.787C37.5724 391.659 37.4983 391.437 41.807 389.95L36.0867 398.05L35.1952 396.787Z" fill="#FF707E"/>
|
||||
<path id="Vector_379" d="M219.585 515.675H-115.32V668.961H219.585V515.675Z" fill="#FECCAF"/>
|
||||
<path id="Vector_380" d="M124.79 544.06C122.265 562.043 118.178 557.956 114.613 549.187C111.047 540.42 108.818 531.279 108.743 536.853C108.669 542.425 113.275 554.092 105.4 560.036C97.5255 565.98 94.7767 560.78 91.7308 552.235C88.6848 543.688 83.7816 535.293 80.4385 515.675H123.453C123.453 515.675 127.316 526.079 124.79 544.06Z" fill="#ED988D"/>
|
||||
<path id="Vector_381" d="M-0.83638 613.314L32.4462 581.437L35.0463 609.599L-0.83638 649.799V613.314Z" fill="#FFC3A5"/>
|
||||
<path id="Vector_382" d="M141.359 565.832L203.839 540.792L192.843 565.832H141.359Z" fill="#FEC6A5"/>
|
||||
<path id="Vector_383" d="M219.658 515.675H-115.32V538.264L219.658 523.106V515.675Z" fill="#ED988D"/>
|
||||
<path id="Vector_384" d="M152.949 522.587L153.543 531.281C153.543 531.281 190.466 529.573 201.982 522.587H152.949Z" fill="#ED988D"/>
|
||||
<path id="Vector_385" d="M181.251 522.215C182.514 526.451 183.479 527.195 187.49 528.902C191.501 530.612 198.856 533.807 191.576 520.358L181.251 522.215Z" fill="#ED988D"/>
|
||||
<path id="Vector_386" d="M164.909 528.828C165.652 533.138 166.543 534.03 170.258 536.184C173.972 538.34 180.955 542.5 175.384 528.234L164.909 528.828Z" fill="#ED988D"/>
|
||||
<path id="Vector_387" d="M219.662 582.7L135.489 571.034L70.0387 586.712L67.7358 594.365L67.513 515.675H57.7064V527.936H26.504V515.675H16.6233L17.2177 668.969H27.0241V662.133H47.3799L45.2999 668.969H219.662V582.7ZM26.504 533.733H57.7807V560.036H26.5784L26.504 533.733ZM26.5784 565.832H57.9293V592.136H26.7269L26.5784 565.832ZM26.7269 597.932H58.0036V624.237H26.8013L26.7269 597.932ZM26.8756 656.337V630.032H57.0378L49.1629 656.337H26.8756Z" fill="url(#paint2_linear_6_63)"/>
|
||||
<path id="Vector_388" d="M156.96 596.002C153.875 596.002 150.858 596.916 148.293 598.631C145.727 600.346 143.727 602.784 142.546 605.636C141.366 608.486 141.057 611.624 141.659 614.65C142.261 617.678 143.747 620.459 145.928 622.64C148.11 624.823 150.89 626.308 153.917 626.911C156.943 627.513 160.08 627.203 162.93 626.024C165.781 624.842 168.218 622.841 169.932 620.275C171.646 617.71 172.561 614.693 172.561 611.606C172.561 607.468 170.918 603.499 167.992 600.572C165.066 597.646 161.098 596.002 156.96 596.002ZM156.96 623.049C154.697 623.049 152.485 622.378 150.604 621.121C148.722 619.863 147.256 618.077 146.39 615.986C145.524 613.894 145.298 611.594 145.739 609.373C146.181 607.155 147.27 605.114 148.87 603.515C150.47 601.914 152.509 600.825 154.728 600.384C156.947 599.941 159.248 600.168 161.338 601.035C163.429 601.899 165.216 603.367 166.473 605.249C167.73 607.13 168.401 609.343 168.401 611.606C168.401 614.641 167.196 617.552 165.05 619.697C162.905 621.845 159.994 623.049 156.96 623.049Z" fill="#CC8564"/>
|
||||
<path id="Vector_389" d="M207.478 624.536V585.525" stroke="#612D46" stroke-width="3.34136" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_390" d="M99.4584 624.536V585.525" stroke="#612D46" stroke-width="3.34136" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_391" d="M219.585 549.189H-115.32V554.099H219.585V549.189Z" fill="#F8AB64"/>
|
||||
<path id="Vector_392" d="M123.902 549.191H114.615C115.274 550.886 116.069 552.527 116.993 554.094H122.416C123.091 552.52 123.59 550.876 123.902 549.191Z" fill="#DB8669"/>
|
||||
<path id="Vector_393" d="M110.006 549.189H90.6161C90.9877 550.23 91.4334 551.271 91.7305 552.237L92.4734 554.094H109.412C109.837 552.495 110.037 550.844 110.006 549.189Z" fill="#DB8669"/>
|
||||
<path id="Vector_394" d="M67.588 549.191H57.856V554.094H67.6624L67.588 549.191Z" fill="#DB8669"/>
|
||||
<path id="Vector_395" d="M16.771 554.092H26.5775V549.189H16.771V554.092Z" fill="#DB8669"/>
|
||||
<path id="Vector_396" d="M273.747 563.456C260.672 563.456 253.539 567.987 247.075 572.742L245.071 574.304L242.842 576.012C236.972 580.323 230.806 584.038 219.589 584.038C208.371 584.038 202.798 580.695 197.152 576.681L194.033 574.304L192.843 573.411L193.736 572.742C200.198 567.987 207.33 563.456 220.331 563.456H273.747Z" fill="#DE548C"/>
|
||||
<path id="Vector_397" d="M208.294 578.912H226.273L233.925 573.413H216.393L208.294 578.912Z" fill="#DE5B90"/>
|
||||
<path id="Vector_398" d="M204.653 584.038L216.391 576.012H192.172L182.514 584.038H204.653Z" fill="#D94C86"/>
|
||||
<path id="Vector_399" d="M215.576 566.427H240.018L247.001 563.456H224.416L215.576 566.427Z" fill="#E85A94"/>
|
||||
<path id="Vector_400" d="M219.585 589.238H166.171C153.095 589.238 145.964 584.707 139.5 579.876L138.757 579.355L139.946 578.316L142.843 576.012C148.267 571.926 154.581 568.656 165.354 568.656C176.126 568.656 182.738 572.298 188.607 576.681L190.909 578.389L192.841 579.876C199.305 584.707 206.437 589.238 219.585 589.238Z" fill="#B03A73"/>
|
||||
<path id="Vector_401" d="M161.342 570.812H152.055C148.736 572.063 145.629 573.817 142.843 576.014L139.946 578.318L138.757 579.359L139.5 579.878L143.215 582.479H177.983L161.342 570.812Z" fill="#A3366B"/>
|
||||
<path id="Vector_402" d="M112.013 563.528C97.5266 563.528 89.8746 568.878 83.2627 574.377L71.0046 584.632C70.4756 585.068 70.1398 585.694 70.0702 586.375C70.0007 587.057 70.2029 587.74 70.6332 588.274C70.8817 588.565 71.1885 588.802 71.5339 588.967C71.8793 589.135 72.2559 589.227 72.639 589.238H125.98C125.606 589.236 125.237 589.147 124.902 588.98C124.568 588.813 124.276 588.571 124.049 588.274C123.61 587.749 123.395 587.073 123.45 586.391C123.506 585.71 123.828 585.078 124.346 584.632L134.524 576.16L136.678 574.377L138.61 572.742C144.776 567.839 152.279 563.528 165.355 563.528H112.013Z" fill="#DE548C"/>
|
||||
<path id="Vector_403" d="M124.346 584.634H71.0046C70.4756 585.069 70.1398 585.696 70.0702 586.377C70.0007 587.058 70.2029 587.742 70.6332 588.274C70.8817 588.567 71.1885 588.804 71.5339 588.969C71.8793 589.136 72.2559 589.229 72.639 589.24H125.98C125.606 589.238 125.237 589.149 124.902 588.982C124.568 588.814 124.276 588.572 124.049 588.274C123.61 587.75 123.395 587.074 123.451 586.393C123.506 585.712 123.828 585.08 124.346 584.634Z" fill="#B03A73"/>
|
||||
<path id="Vector_404" d="M112.089 576.683L102.282 584.262H71.4512L80.589 576.683H112.089Z" fill="#D94C86"/>
|
||||
<path id="Vector_405" d="M313.123 589.238H274.491C261.415 589.238 254.283 584.705 247.821 579.875L247.077 579.355L248.118 578.464H248.191L251.163 576.235C256.512 572.37 262.159 569.175 271.743 568.729H275.754C287.194 569.175 293.361 573.559 299.156 578.389H299.229L311.488 588.644C311.949 589.024 312.525 589.234 313.123 589.238Z" fill="#B03A73"/>
|
||||
<path id="Vector_406" d="M266.172 579.284L272.634 584.634H310.894L304.579 579.284H266.172Z" fill="#A3366B"/>
|
||||
<path id="Vector_407" d="M314.754 584.632L302.422 574.377C295.883 568.878 288.231 563.528 273.745 563.528C260.67 563.528 253.538 567.987 247.074 572.742L245.069 574.302L242.84 576.012C236.971 580.321 230.804 584.038 219.513 584.038C208.22 584.038 202.796 580.693 197.151 576.681L194.031 574.302L192.841 573.411C186.229 568.433 179.024 563.528 165.354 563.528C151.684 563.528 144.775 567.839 138.609 572.742L136.677 574.377L134.523 576.16L124.345 584.632C123.827 585.078 123.505 585.71 123.45 586.391C123.394 587.073 123.609 587.749 124.048 588.274C124.275 588.571 124.567 588.813 124.902 588.98C125.236 589.147 125.605 589.236 125.979 589.238C126.576 589.234 127.154 589.024 127.614 588.644L138.758 579.355L139.946 578.316L142.844 576.012C148.267 571.926 154.582 568.656 165.354 568.656C176.126 568.656 182.738 572.297 188.607 576.681L190.911 578.391L192.841 579.876C199.305 584.706 206.512 589.238 219.513 589.238C232.513 589.238 240.315 584.335 247.001 579.355L248.189 578.391L251.161 576.16C256.807 572.073 262.974 568.656 273.745 568.656C286.524 568.656 293.061 573.189 299.153 578.316L311.484 588.644C311.945 589.024 312.523 589.234 313.119 589.238C313.494 589.236 313.863 589.147 314.197 588.98C314.531 588.813 314.825 588.571 315.051 588.274C315.49 587.749 315.705 587.073 315.648 586.391C315.593 585.71 315.271 585.078 314.754 584.632Z" fill="#F06FA2"/>
|
||||
<path id="Vector_408" d="M-131.069 479.563H233.701C234.274 479.563 234.822 479.79 235.226 480.194C235.629 480.598 235.857 481.146 235.857 481.718V507.725H-133.223V481.718C-133.223 481.146 -132.996 480.598 -132.592 480.194C-132.188 479.79 -131.64 479.563 -131.069 479.563Z" fill="#E46A9B"/>
|
||||
<path id="Vector_409" d="M211.562 507.725H156.511C156.511 507.725 155.917 501.855 153.54 479.563H203.984L211.562 507.725Z" fill="#C84B8B"/>
|
||||
<path id="Vector_410" d="M75.9055 479.563C75.9055 479.563 75.6826 488.257 77.9113 491.972C78.9513 496.802 81.6258 504.976 81.6258 504.976V507.725H105.399V479.563H75.9055Z" fill="#C84B8B"/>
|
||||
<path id="Vector_411" d="M223.225 479.563L227.088 489.446L235.854 493.607V490.115L230.727 480.826L227.757 479.563H223.225Z" fill="#E86F9F"/>
|
||||
<path id="Vector_412" d="M235.93 483.873H-133.223V486.265H235.93V483.873Z" fill="#E49B9B"/>
|
||||
<path id="Vector_413" d="M235.93 500.889H-133.223V503.282H235.93V500.889Z" fill="#E49B9B"/>
|
||||
<path id="Vector_414" d="M105.401 483.873V486.25H76.2793C76.1351 485.466 76.0604 484.67 76.0565 483.873H105.401Z" fill="#C46999"/>
|
||||
<path id="Vector_415" d="M105.401 500.889V503.267H81.1076L80.3647 500.889H105.401Z" fill="#C46999"/>
|
||||
<path id="Vector_416" d="M-131.069 479.563H13.0565C13.6279 479.563 14.1759 479.79 14.5799 480.194C14.984 480.598 15.211 481.146 15.211 481.718V507.725H-133.223V481.718C-133.223 481.146 -132.996 480.598 -132.592 480.194C-132.188 479.79 -131.64 479.563 -131.069 479.563Z" fill="#C45999"/>
|
||||
<path id="Vector_417" d="M-133.223 507.725V509.137C-128.543 509.137 -122.822 511.292 -120.668 515.675H223.301C225.455 511.292 231.176 509.137 235.857 509.137V507.725H-133.223Z" fill="#C84B8B"/>
|
||||
<path id="Vector_418" d="M235.855 509.137H3.61995V511.113H235.855V509.137Z" fill="#B03A73"/>
|
||||
<path id="Vector_419" d="M-133.223 507.725V509.137C-128.543 509.137 -122.822 511.292 -120.668 515.675H2.65571C4.81016 511.292 10.5306 509.137 15.211 509.137V507.725H-133.223Z" fill="#B03A73"/>
|
||||
<path id="Vector_420" d="M198.933 668.97H113.2C113.2 652.92 126.202 639.694 142.174 639.694H169.885C177.615 639.733 185.014 642.838 190.461 648.326C195.906 653.813 198.952 661.238 198.933 668.97Z" fill="#CC8564"/>
|
||||
<path id="Vector_421" d="M172.633 623.047H139.499C128.308 623.047 117.575 627.495 109.661 635.41C101.748 643.325 97.3019 654.06 97.3019 665.254V668.969H101.462V665.254C101.462 655.163 105.47 645.487 112.603 638.353C119.736 631.217 129.411 627.208 139.499 627.208H172.633C182.722 627.208 192.396 631.217 199.531 638.353C206.663 645.487 210.671 655.163 210.671 665.254V668.969H214.756V665.254C214.756 654.072 210.32 643.348 202.423 635.435C194.525 627.523 183.812 623.067 172.633 623.047Z" fill="#CC8564"/>
|
||||
<path id="Vector_422" d="M177.981 596.817H169.586V618.009H177.981V596.817Z" fill="#C95A3E"/>
|
||||
<path id="Vector_423" d="M177.985 596.817H173.156V618.009H177.985V596.817Z" fill="#D15C42"/>
|
||||
<path id="Vector_424" d="M135.491 616.507H126.947V637.7H135.491V616.507Z" fill="#C95A3E"/>
|
||||
<path id="Vector_425" d="M213.645 630.404H205.1V651.596H213.645V630.404Z" fill="#C95A3E"/>
|
||||
<path id="Vector_426" d="M213.643 630.404H209.408V651.596H213.643V630.404Z" fill="#D4674C"/>
|
||||
<path id="Vector_427" d="M135.486 616.507H129.394V637.7H135.486V616.507Z" fill="#D4704C"/>
|
||||
<path id="Vector_428" d="M258.292 633.823H249.749V655.015H258.292V633.823Z" fill="#CE644A"/>
|
||||
<path id="Vector_429" d="M274.115 610.563H265.572V631.756H274.115V610.563Z" fill="#CE644A"/>
|
||||
<path id="Vector_430" d="M274.115 610.563H270.624V631.756H274.115V610.563Z" fill="#D17736"/>
|
||||
<path id="Vector_431" d="M258.292 633.823H253.018V655.015H258.292V633.823Z" fill="#E38B4C"/>
|
||||
<path id="Vector_432" d="M101.239 351.383L101.016 351.606L100.422 352.126L100.199 352.349L99.7532 352.721C89.7237 361.34 76.7971 365.056 68.1051 367.656C56.8128 371 47.4519 372.04 40.3944 372.04C31.2564 371.966 29.4734 367.21 33.2624 361.489L35.4912 358.814L46.6348 345.29L47.1549 344.621C54.5097 335.927 61.1217 331.989 75.0141 335.036L96.1128 339.568H96.1872C103.542 341.203 107.034 345.662 101.239 351.383Z" fill="url(#paint3_linear_6_63)"/>
|
||||
<path id="Vector_433" d="M76.9476 336.672C85.4169 338.752 99.8295 342.988 99.8295 342.988L103.395 343.508C102.133 341.725 99.6066 340.313 96.1892 339.57H96.1148L75.0161 335.037C68.4043 333.551 63.5009 333.699 59.3407 335.186C65.804 333.625 69.5185 334.814 76.9476 336.672Z" fill="#FFFDC4"/>
|
||||
<path id="Vector_434" d="M68.6995 368.772C76.1287 366.543 91.9526 360.227 98.1189 354.059C96.7073 355.546 98.1189 352.945 95.2957 354.282C80.7346 361.416 47.6008 371.001 40.3945 372.041C47.4521 372.487 61.1219 371.001 68.6995 368.772Z" fill="#FFFDC4"/>
|
||||
<path id="Vector_435" d="M102.951 342.988C96.4876 341.056 81.7779 342.765 65.5082 347.892C49.2383 353.019 35.0486 360.524 31.4827 365.949C31.0369 369.441 33.7857 371.968 40.3976 372.042C47.0096 372.116 56.816 371.002 68.1083 367.658C76.8003 365.057 89.7271 361.342 99.7564 352.722L100.202 352.351L100.425 352.128L101.019 351.608L101.242 351.385C104.66 348.041 104.882 345.143 102.951 342.988Z" fill="url(#paint4_linear_6_63)"/>
|
||||
<path id="Vector_436" d="M70.5981 364.033C86.3765 359.087 98.4017 352.633 97.4569 349.618C96.5122 346.603 82.9554 348.168 67.177 353.113C51.3985 358.059 39.3734 364.512 40.3182 367.528C41.2629 370.543 54.8197 368.978 70.5981 364.033Z" fill="#6B3143"/>
|
||||
<path id="Vector_437" d="M97.3754 350.79C97.5344 350.441 97.5862 350.053 97.5241 349.675L97.2269 349.23L80.8828 356.214L93.1408 348.189C92.5987 348.115 92.0487 348.115 91.5065 348.189L80.2142 355.768C79.5543 355.616 78.8682 355.616 78.2083 355.768L84.3744 348.932L82.0715 349.378L77.3169 355.843L73.9736 356.437L77.5397 350.344L75.3852 350.864L73.0821 356.66L70.8534 357.255L72.4878 351.607L69.9619 352.35L69.1447 357.7H69.3676L68.7733 357.923L66.9904 353.242L65.133 353.837L68.1047 358.072L66.6188 358.592L62.3099 354.802L60.0811 355.62L65.3559 359.038L63.7958 359.632L57.1838 356.66L54.435 357.775L62.5329 360.153L60.6756 361.044L49.1604 360.227L46.4116 361.639H59.4125L58.521 362.233L42.6971 364.091C42.0342 364.584 41.4351 365.158 40.9141 365.8L57.7039 362.902C57.6295 363.125 57.5554 363.273 57.6295 363.348C57.7039 363.422 57.7782 363.571 57.9268 363.645L40.4684 367.955C40.9066 368.415 41.4781 368.727 42.1026 368.846L59.5612 363.794C60.508 363.719 61.4504 363.595 62.3842 363.422L48.4174 368.995L50.572 368.772L64.1672 363.051H64.6873L55.9209 367.955L60.0811 367.063L66.3959 362.605L69.8134 361.639L73.8251 360.227L79.174 361.267L84.3003 359.187L76.0538 359.335H76.1281L88.6834 357.106C90.0949 356.437 91.3578 355.694 92.4722 355.025L78.5797 358.072L79.4712 357.552L97.3754 350.79Z" fill="#7A384C"/>
|
||||
<path id="Vector_438" d="M93.8096 426.88L89.9466 410.458L87.2721 416.626L83.1861 428.589L93.8096 426.88Z" fill="#1F40A1"/>
|
||||
<path id="Vector_439" d="M36.4554 396.489L92.2482 404.068C97.0029 406.297 98.4887 407.189 100.792 412.91L102.5 417.146C104.135 418.483 104.283 418.706 103.838 420.638L91.8025 428.589L98.4145 451.178L47.5249 457.345L36.7526 433.567L20.3342 423.685C19.9664 423.468 19.6597 423.161 19.4427 422.793C18.7741 421.381 18.9226 420.044 21.4486 418.855C23.0087 413.505 22.9343 412.539 24.1974 408.378C26.9461 399.089 29.1006 396.34 36.4554 396.489Z" fill="#2347A1"/>
|
||||
<path id="Vector_440" d="M82.5173 443.97C80.8462 441.585 80.0342 438.703 80.2144 435.797C80.5114 428.292 77.1683 426.137 76.1283 420.564H75.3854L73.4539 420.787C73.6767 426.434 70.7794 429.258 72.7109 436.539C73.4547 439.351 73.2458 442.33 72.1166 445.011C70.4822 448.726 70.6307 452.515 73.0081 455.562L78.8772 454.967H79.3971L83.9289 454.522C85.5633 451.029 84.9691 447.314 82.5173 443.97Z" fill="#1A378A"/>
|
||||
<path id="Vector_441" d="M92.7714 431.784L75.313 426.434L78.1361 441.816L97.6747 448.578L92.7714 431.784Z" fill="#1A378A"/>
|
||||
<path id="Vector_442" d="M42.5489 446.794C39.7259 446.943 39.5772 446.72 38.0915 444.342C36.7759 441.877 35.5858 439.348 34.5255 436.763L36.16 434.831L42.5489 446.794Z" fill="#7D9FFF"/>
|
||||
<path id="Vector_443" d="M77.4659 440.03L58.7444 435.2L57.7044 440.03L61.4933 443.448L65.3564 455.189L61.7905 455.56L45.4463 458.755L45.0005 461.133L43.812 459.498C43.4724 459.033 43.2371 458.501 43.1217 457.937C43.0062 457.372 43.0137 456.79 43.1434 456.229L43.9605 451.845L42.5489 446.792H41.8803C40.3945 446.644 40.3945 446.198 39.2802 444.266C37.4506 441.095 35.8613 437.791 34.5255 434.383L36.7542 433.566L41.8803 422.494C63.2019 429.85 70.631 433.045 79.6946 437.281C88.7582 441.516 88.9811 441.516 90.6154 442.854C92.2498 444.191 91.3584 443.523 77.4659 440.03Z" fill="#1A378A"/>
|
||||
<path id="Vector_444" d="M61.4952 417.072C48.94 428.367 45.9683 436.541 42.5511 446.795L43.9625 451.848C49.9802 440.033 52.5803 435.129 56.5177 431.042C60.4552 426.955 67.5128 420.639 67.5128 420.639L61.4952 417.072Z" fill="#242236"/>
|
||||
<path id="Vector_445" d="M43.7371 399.832L35.4908 404.439L43.7371 414.767L51.9092 408.154L43.7371 399.832Z" fill="#2A52C2"/>
|
||||
<path id="Vector_446" d="M59.709 380.662L55.8458 381.331C54.9383 381.466 54.0705 381.794 53.3014 382.294C52.5323 382.794 51.8798 383.454 51.3884 384.229L49.0853 387.796L41.8047 389.951C41.0315 390.18 40.3115 390.561 39.6866 391.071C39.0616 391.582 38.5443 392.211 38.1644 392.923L36.4557 396.49C36.4557 396.49 56.7373 424.577 72.7843 429.184C88.8312 433.791 92.2486 404.069 92.2486 404.069C92.2527 403.744 92.1639 403.424 91.9928 403.148C91.8217 402.871 91.5755 402.65 91.2827 402.508L87.0482 400.056L87.4196 394.558C87.4553 394.049 87.3655 393.538 87.1583 393.072C86.9511 392.606 86.6327 392.197 86.231 391.883L74.6415 382.891L59.709 380.662Z" fill="#EF6270"/>
|
||||
<path id="Vector_447" d="M47.4546 388.241C48.6433 385.417 49.1632 382.074 56.2953 380.662L61.4958 379.919L61.05 384.154L51.1691 390.693L47.4546 388.241Z" fill="#FF707E"/>
|
||||
<path id="Vector_448" d="M55.8458 381.331C54.9383 381.466 54.0705 381.794 53.3014 382.294C52.5323 382.794 51.8798 383.454 51.3884 384.229L49.0853 387.796L41.8047 389.951C41.0315 390.18 40.3115 390.561 39.6866 391.071C39.0616 391.582 38.5443 392.211 38.1644 392.923L36.4557 396.49C41.248 402.941 46.4859 409.049 52.1312 414.769L54.3601 409.122H67.5096C67.5096 409.122 65.9495 403.697 65.4294 401.245C64.9093 398.793 63.7207 397.381 67.361 396.787L64.315 381.405L59.709 380.662L55.8458 381.331Z" fill="#E05164"/>
|
||||
<path id="Vector_449" d="M56.5927 388.61C53.0266 385.935 53.2495 386.158 55.2553 384.895C56.444 384.088 57.8323 383.626 59.2672 383.558L56.5927 388.61Z" fill="#BD3C53"/>
|
||||
<path id="Vector_450" d="M51.9133 391.213C54.9593 395.819 73.012 415.362 75.7608 417.22C78.5097 419.077 74.6465 421.678 74.6465 421.678C69.4532 419.123 64.4393 416.219 59.6397 412.984C53.5478 408.6 49.9074 405.851 48.1988 404.216C46.49 402.581 45.9701 401.17 49.3132 403.324C52.8742 405.399 56.6319 407.117 60.5311 408.452L61.497 407.337L52.5077 394.556L51.9133 391.213Z" fill="#E05164"/>
|
||||
<path id="Vector_451" d="M81.6274 389.505C85.5647 392.923 87.5706 392.031 78.2099 404.738L75.9812 403.326L69.5179 395.969L77.7642 385.641L81.6274 389.505Z" fill="#C74153"/>
|
||||
<path id="Vector_452" d="M80.4358 355.25C80.213 354.432 74.864 355.324 68.4749 357.256C62.0859 359.188 57.1084 361.343 57.3313 362.086C58.6685 372.712 58.4456 382.074 56.5883 388.613L75.9784 403.326C84.1503 383.709 81.6245 366.321 80.4358 355.25Z" fill="#FFB685"/>
|
||||
<path id="Vector_453" d="M65.5791 385.27C68.1793 388.242 73.0083 387.499 75.0141 385.492C77.6143 388.019 79.1002 387.647 80.8832 385.418C82.6661 383.189 73.0083 381.034 73.0083 381.034L65.5791 385.27Z" fill="#FE9B77"/>
|
||||
<path id="Vector_454" d="M67.3605 396.785C66.559 390.523 66.0879 384.223 65.9489 377.912C65.6519 371.744 65.429 364.388 65.5032 358.146C60.6743 359.781 57.1826 361.415 57.3313 362.084C58.6685 372.71 58.4456 382.073 56.5883 388.612L67.3605 396.785Z" fill="#FE9B77"/>
|
||||
<g id="Group_5" style="mix-blend-mode:multiply" opacity="0.4">
|
||||
<path id="Vector_455" d="M80.4392 355.25C80.2163 354.432 74.8674 355.324 68.4783 357.256C62.0893 359.188 57.1118 361.343 57.3346 362.086C57.5575 362.829 57.6317 364.761 57.7804 366.098C64.6894 365.281 74.3473 366.321 81.6279 368.55C81.405 363.498 80.8106 359.039 80.4392 355.25Z" fill="#A8387E"/>
|
||||
</g>
|
||||
<path id="Vector_456" d="M65.8767 386.977L63.7965 383.708L65.8767 376.574C66.0651 379.044 67.0866 381.375 68.7741 383.187C69.5912 383.931 69.2198 384.079 68.7741 385.64C68.3283 387.2 66.7682 390.321 66.9167 392.996C67.0654 395.671 65.8767 386.977 65.8767 386.977Z" fill="#FE9B77"/>
|
||||
<path id="Vector_457" d="M64.0928 457.568L59.7839 479.562H100.57V491.006H110.228L110.599 498.808H132.367L131.549 491.08L134.892 487.959C135.156 487.699 135.358 487.385 135.487 487.038C135.615 486.692 135.666 486.321 135.635 485.953L133.63 464.478C133.449 462.476 132.862 460.531 131.904 458.764C130.946 456.996 129.638 455.442 128.06 454.197C126.481 452.952 124.666 452.043 122.724 451.523C120.782 451.004 118.754 450.886 116.765 451.177L64.0928 457.568Z" fill="#232233"/>
|
||||
<path id="Vector_458" d="M122.338 535.592L121.744 536.111C121.421 536.371 121.209 536.743 121.149 537.152L121.001 538.193C120.938 538.716 121.071 539.246 121.372 539.678C122.784 541.61 124.344 542.057 126.127 542.651C128.173 543.119 130.082 544.062 131.699 545.4C134.427 547.426 137.672 548.636 141.06 548.892C144.848 549.189 146.334 547.481 146.26 546.069C146.186 544.658 144.254 543.32 144.254 543.32L122.338 535.592Z" fill="#4F2431"/>
|
||||
<path id="Vector_459" d="M121.745 531.872C122.339 526.744 119.516 523.699 116.024 516.862C112.532 510.026 110.972 502.001 109.71 491.673H128.282C128.282 491.673 132.294 516.565 133.408 521.916C134.077 525.184 134.449 530.386 137.94 534.697C142.546 540.491 145.815 543.242 145.072 545.247C144.329 547.254 141.729 548.072 136.529 545.99C135.117 545.396 133.557 544.281 131.7 543.242C129.842 542.201 127.391 541.384 125.905 540.641C122.116 538.856 121.076 537.965 121.745 531.872Z" fill="#6B313F"/>
|
||||
<path id="Vector_460" d="M136.454 543.018C133.557 540.047 131.105 537.892 130.66 536.182C130.214 534.473 129.842 531.724 129.322 529.272C128.802 526.819 120.63 504.676 118.402 492.341L116.396 491.673H109.71C110.972 502.001 112.532 510.026 116.024 516.862C119.516 523.699 122.339 526.744 121.745 531.872C121.15 536.999 122.116 538.856 125.905 540.641C127.391 541.384 129.322 541.904 131.7 543.242C134.077 544.58 135.117 545.396 136.529 545.99C139.575 547.179 141.655 547.403 143.066 547.031C140.589 546.207 138.329 544.836 136.454 543.018Z" fill="#592534"/>
|
||||
<path id="Vector_461" d="M115.431 492.343C115.802 502.598 118.923 512.257 121.151 516.493C123.38 520.728 125.312 525.261 125.906 534.252" stroke="#4F2431" stroke-width="0.835339" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_462" d="M135.19 529.646C134.826 528.735 134.552 527.789 134.373 526.823C134.02 526.449 133.594 526.15 133.121 525.946C132.649 525.741 132.139 525.634 131.624 525.634C129.619 525.782 128.133 527.269 127.538 529.721C126.944 532.172 125.978 534.179 124.938 534.551C123.898 534.923 123.229 534.476 122.041 533.66C121.983 533.601 121.913 533.556 121.836 533.532C121.758 533.505 121.676 533.498 121.595 533.51V535.22C122.41 535.78 123.358 536.113 124.344 536.186L125.458 536.036C127.093 535.442 128.207 533.51 129.024 530.093C129.47 528.308 130.436 527.269 131.699 527.195C132.962 527.12 134.299 528.086 135.19 529.646Z" fill="#4F2431"/>
|
||||
<path id="Vector_463" d="M132.37 485.062C130.513 485.136 127.17 485.285 115.729 487.365L110.232 491.972L110.38 494.425L123.975 497.545C123.975 497.545 128.804 495.242 131.628 491.601V491.081L132.742 490.04C135.193 485.434 134.228 484.988 132.37 485.062Z" fill="#1C1B29"/>
|
||||
<path id="Vector_464" d="M110.599 498.807H132.367L131.549 491.079L131.401 489.073L123.303 489.593C119.811 489.89 105.027 490.113 105.027 490.113L105.325 491.005H110.228L110.599 498.807Z" fill="#28263B"/>
|
||||
<path id="Vector_465" d="M109.114 472.28C116.617 469.159 118.549 468.267 120.109 467.747C121.669 467.227 120.109 466.187 117.806 465.072C115.503 463.958 114.835 465.072 109.114 472.28Z" fill="#1C1B29"/>
|
||||
<path id="Vector_466" d="M83.8561 433.269C82.1955 430.879 81.3846 428.001 81.5532 425.095C81.8503 417.59 78.5072 415.435 77.4672 409.862H76.7242L74.7927 410.011C75.0156 415.733 72.1182 418.556 74.0497 425.838C74.7936 428.625 74.5844 431.581 73.4554 434.235C71.821 438.024 71.9695 441.814 74.3469 444.861H74.7927C78.3291 445.215 81.9004 444.809 85.2677 443.672C86.9022 440.254 86.3077 436.613 83.8561 433.269Z" fill="#B8C5FF"/>
|
||||
<path id="Vector_467" d="M80.8092 418.93C79.8435 415.883 78.2834 413.728 77.6146 410.385H77.2432C77.2432 410.385 78.9518 415.735 80.1406 418.187C80.4378 418.781 80.6607 418.93 80.8092 418.93Z" fill="#E0E6FF"/>
|
||||
<path id="Vector_468" d="M75.5317 410.013H74.7888C75.0117 415.734 72.1143 418.558 74.0458 425.84C74.2724 426.767 74.4215 427.712 74.4916 428.664L80.955 423.834C78.7838 419.378 76.9702 414.756 75.5317 410.013Z" fill="#9CA8F5"/>
|
||||
<path id="Vector_469" d="M74.1975 431.933C74.1088 432.412 73.9846 432.884 73.8261 433.344C75.3797 433.511 76.904 433.886 78.3579 434.459C78.3579 434.459 82.444 439.735 85.5642 442.93C86.7527 439.66 86.0841 436.317 83.8554 433.27C83.3371 432.469 82.8897 431.623 82.5182 430.744L75.7576 430.224L74.1975 431.933Z" fill="#9CA8F5"/>
|
||||
<path id="Vector_470" d="M106.813 427.994L103.841 420.637L93.8118 426.879L79.4736 421.678V431.486L83.8568 433.27C96.7834 438.62 99.235 441.815 104.807 441.295C110.379 440.775 109.264 434.013 106.813 427.994Z" fill="#FEA77F"/>
|
||||
<path id="Vector_471" d="M99.3085 423.462L102.355 430.224L94.0339 427.475L93.811 426.881L99.3085 423.462Z" fill="#FA8E70"/>
|
||||
<path id="Vector_472" d="M105.622 536.483L105.028 537.003C104.874 537.115 104.748 537.259 104.658 537.426C104.568 537.593 104.517 537.78 104.508 537.969L104.285 539.084C104.223 539.607 104.355 540.137 104.657 540.57C106.068 542.502 107.703 542.948 109.411 543.468C111.467 544.012 113.388 544.973 115.057 546.291C117.771 548.342 121.024 549.557 124.418 549.783C128.133 550.08 129.618 548.373 129.618 546.885C129.618 545.4 127.538 544.211 127.538 544.211L105.622 536.483Z" fill="#4F2431"/>
|
||||
<path id="Vector_473" d="M105.029 532.767C105.624 527.639 102.801 524.593 99.3088 517.757C95.8172 510.921 94.2571 502.821 92.9941 492.493H111.567C111.567 492.493 115.653 517.459 116.767 522.809C117.436 526.079 117.807 531.281 121.225 535.59C125.831 541.386 129.1 544.135 128.357 546.067C127.614 547.999 125.014 548.965 119.813 546.885C118.179 546.056 116.592 545.138 115.059 544.135C112.607 542.724 110.676 542.277 109.19 541.536C105.475 539.751 104.361 538.86 105.029 532.767Z" fill="#6B313F"/>
|
||||
<path id="Vector_474" d="M119.739 543.912C116.842 540.94 114.39 538.785 114.019 537.077C113.647 535.368 113.127 532.619 112.607 530.091C112.087 527.565 103.915 505.496 101.686 493.161L99.7546 492.493H92.9941C94.2571 502.821 95.8172 510.921 99.3088 517.757C102.801 524.593 105.624 527.639 105.029 532.767C104.435 537.894 105.475 539.751 109.19 541.536C110.676 542.277 112.607 542.724 115.059 544.135C116.592 545.138 118.179 546.056 119.813 546.885C122.859 548.074 125.014 548.296 126.425 547.851C123.923 547.07 121.635 545.724 119.739 543.912Z" fill="#612936"/>
|
||||
<path id="Vector_475" d="M98.7149 493.161C99.0865 503.489 102.207 513.149 104.435 517.31C106.664 521.471 108.596 526.152 109.19 535.143" stroke="#4F2431" stroke-width="0.835339" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_476" d="M45.4454 458.757L41.4337 479.562H82.1453L83.5569 486.77C83.7263 487.573 84.1256 488.31 84.7058 488.89C85.2862 489.471 86.0226 489.87 86.8257 490.04L90.466 490.783L92.249 498.808H114.239L113.348 492.64L116.096 491.674C116.561 491.536 116.961 491.234 117.22 490.824C117.48 490.415 117.582 489.925 117.508 489.445L115.279 464.478C115.098 462.476 114.511 460.531 113.553 458.764C112.596 456.996 111.288 455.442 109.709 454.197C108.131 452.952 106.315 452.043 104.373 451.523C102.432 451.004 100.404 450.886 98.415 451.177C98.415 451.177 62.7553 455.339 55.6233 456.379C48.4912 457.419 45.4454 458.757 45.4454 458.757Z" fill="#1C1B29"/>
|
||||
<path id="Vector_477" d="M48.8632 464.033C54.8467 460.534 61.0792 457.479 67.5101 454.893C65.5786 454.076 64.2414 454.299 58.521 456.008L44.6284 463.067L48.8632 464.033Z" fill="#733544"/>
|
||||
<path id="Vector_478" d="M93.8114 426.881L104.584 430.819C104.614 430.839 104.639 430.867 104.657 430.899C104.674 430.931 104.683 430.968 104.683 431.004C104.683 431.041 104.674 431.078 104.657 431.11C104.639 431.142 104.614 431.17 104.584 431.19L79.5474 423.017V421.679L93.8114 426.881Z" fill="#FFD096"/>
|
||||
<path id="Vector_479" d="M3.396 474.065L-9.60497 477.186L-11.3137 479.564H5.17902L3.396 474.065Z" fill="#F7DC9E"/>
|
||||
<path id="Vector_480" d="M51.2411 462.77L41.2117 463.216C40.4301 463.244 39.6795 463.528 39.0754 464.025C38.4714 464.522 38.0473 465.203 37.8686 465.965L34.5255 479.563H53.247L53.9156 465.445C53.9257 465.091 53.8636 464.738 53.7329 464.409C53.6022 464.08 53.4055 463.781 53.155 463.53C52.9046 463.28 52.6057 463.083 52.2765 462.953C51.9474 462.822 51.5951 462.76 51.2411 462.77Z" fill="#4F2431"/>
|
||||
<path id="Vector_481" d="M47.1551 479.564C47.4521 477.037 48.1207 471.39 48.4923 468.121C48.8637 464.851 49.1609 463.439 50.3496 462.771H49.3094L41.2117 463.142C40.4301 463.17 39.6795 463.455 39.0754 463.951C38.4714 464.448 38.0473 465.13 37.8686 465.891L34.5255 479.489L47.1551 479.564Z" fill="#401D2B"/>
|
||||
<path id="Vector_482" d="M175.308 507.504C175.382 510.625 173.599 513.151 176.794 514.563C181.548 516.643 183.629 518.799 187.195 519.838C190.761 520.879 196.11 522.439 193.287 517.015C190.463 511.591 188.531 506.612 188.531 506.612L175.308 507.504Z" fill="#1C1B29"/>
|
||||
<path id="Vector_483" d="M200.566 498.883C201.012 502.004 199.525 504.679 202.869 505.719C207.846 507.205 210.224 509.137 213.79 509.658C217.355 510.178 223.002 511.218 219.584 506.165C216.167 501.112 213.566 496.357 213.566 496.357L200.566 498.883Z" fill="#28263B"/>
|
||||
<path id="Vector_484" d="M214.979 469.012C214.393 466.782 213.214 464.754 211.565 463.144C209.916 461.534 207.86 460.403 205.617 459.872L200.937 458.757C197.296 433.345 201.457 428.217 182.067 420.118L165.872 417.443C165.872 417.443 149.305 415.585 142.173 423.016L147.076 451.921C147.076 451.921 141.207 469.978 141.579 479.563H163.123L168.472 510.475C203.76 509.806 221.962 495.91 221.962 495.91L214.979 469.012Z" fill="#CFDEFF"/>
|
||||
<path id="Vector_485" d="M178.951 472.651C178.058 467.599 178.133 465.667 171.818 465.072L161.937 464.181L162.68 462.249L183.928 461.357L168.475 446.644L146.262 450.434C145.56 453.206 145.162 456.046 145.073 458.905C142.473 460.54 143.067 462.62 143.588 464.701C142.399 469.828 141.433 475.475 141.582 479.562H163.126C163.275 486.25 165.281 490.485 165.652 494.795C166.023 499.105 167.584 510.548 167.584 510.548C173.55 510.392 179.504 509.895 185.413 509.062L178.951 472.651Z" fill="#ABBAFF"/>
|
||||
<path id="Vector_486" d="M147.452 458.833L168.476 460.244C168.476 460.244 162.979 458.684 157.852 457.792C154.759 457.189 151.634 456.767 148.492 456.529C147.674 456.529 147.303 457.198 147.006 458.164C146.983 458.237 146.978 458.315 146.989 458.391C147 458.467 147.028 458.54 147.071 458.604C147.113 458.667 147.17 458.721 147.236 458.761C147.301 458.801 147.375 458.825 147.452 458.833Z" fill="#8FA2FA"/>
|
||||
<path id="Vector_487" d="M175.383 462.621C183.332 464.85 184.372 465.296 188.385 471.686C192.396 478.077 192.546 477.705 195.813 474.436C199.082 471.166 203.689 466.262 205.249 464.405C206.809 462.547 205.174 462.175 194.774 460.763C184.372 459.352 170.183 461.135 175.383 462.621Z" fill="#BDD1FF"/>
|
||||
<path id="Vector_488" d="M151.908 440.848C153.392 438.043 154.468 435.041 155.102 431.931C155.696 429.628 157.257 432.674 155.994 436.613C155.119 439.215 153.583 441.545 151.536 443.374L151.908 440.848Z" fill="#B8C5FF"/>
|
||||
<path id="Vector_489" d="M146.854 417.22C167.136 441.816 186.08 459.277 186.971 424.725L146.854 417.22Z" fill="#B8C5FF"/>
|
||||
<path id="Vector_490" d="M157.849 421.233C176.719 433.271 181.473 437.507 181.622 425.989L157.849 421.233Z" fill="#5697B0"/>
|
||||
<path id="Vector_491" d="M199.155 442.781C198.04 432.08 196.777 427.399 186.971 422.346C188.903 429.183 188.383 442.781 188.383 442.781H199.155Z" fill="white"/>
|
||||
<path id="Vector_492" d="M190.239 433.939C189.842 436.691 189.194 439.403 188.307 442.038L190.014 442.261C190.916 439.619 191.612 436.911 192.095 434.161C192.467 431.041 190.758 430.52 190.239 433.939Z" fill="#DBE6FF"/>
|
||||
<path id="Vector_493" d="M171.294 388.463V382.667C171.287 380.776 170.678 378.936 169.556 377.413C168.435 375.89 166.858 374.764 165.054 374.197C163.071 373.581 160.935 373.683 159.019 374.484C157.104 375.286 155.532 376.736 154.579 378.581C151.087 385.268 145.589 396.043 141.578 405.182C135.188 419.746 154.801 425.839 174.712 426.88C194.621 427.92 197.593 419.523 196.478 406.743C195.737 398.643 194.547 390.395 193.805 385.342C193.574 383.893 192.923 382.544 191.932 381.461C190.941 380.378 189.655 379.609 188.232 379.249C186.649 378.881 184.99 379.037 183.503 379.693C182.014 380.35 180.781 381.472 179.986 382.89L177.015 388.463H171.294Z" fill="#7CE4CC"/>
|
||||
<path id="Vector_494" d="M193.063 412.316L191.726 411.647L184.223 413.208H176.794L164.461 409.047C164.461 409.047 158.889 397.381 157.849 409.418C157.181 417.74 160.078 422.942 161.936 425.394C166.16 426.137 170.429 426.609 174.714 426.806C177.937 427.04 181.176 426.916 184.371 426.434C186.898 423.759 191.059 418.558 193.063 412.316Z" fill="#AAFAE7"/>
|
||||
<path id="Vector_495" opacity="0.74" d="M157.776 408.378C156.735 403.622 155.027 393.739 157.181 386.68C159.336 379.621 161.713 373.825 165.056 374.197C163.073 373.581 160.937 373.683 159.022 374.484C157.106 375.286 155.534 376.736 154.581 378.581C151.089 385.268 145.592 396.043 141.58 405.182C135.86 418.186 150.941 424.428 168.473 426.36C164.759 425.245 160.45 420.638 157.776 408.378Z" fill="url(#paint5_linear_6_63)"/>
|
||||
<path id="Vector_496" d="M168.473 426.358L167.062 426.21L165.724 426.061L163.644 425.764L162.976 425.615L161.936 425.467C160.078 423.015 157.181 417.813 157.849 409.491C157.839 409.338 157.864 409.186 157.924 409.045C160.598 420.785 164.833 425.318 168.473 426.358Z" fill="#AAFAE7"/>
|
||||
<path id="Vector_497" opacity="0.5" d="M168.473 426.358L167.062 426.21L165.724 426.061L163.644 425.764L162.976 425.615L161.936 425.467C160.078 423.015 157.181 417.813 157.849 409.491C157.839 409.338 157.864 409.186 157.924 409.045C160.598 420.785 164.833 425.318 168.473 426.358Z" fill="url(#paint6_linear_6_63)"/>
|
||||
<path id="Vector_498" d="M191.133 410.606L190.911 412.018C182.665 415.436 181.252 416.476 162.457 409.046V407.708L163.274 408.005C179.321 413.43 182.441 414.098 191.133 410.606Z" fill="#2C4661"/>
|
||||
<path id="Vector_499" d="M160.308 413.4C162.988 413.013 164.81 410.264 164.377 407.258C163.943 404.252 161.42 402.129 158.74 402.515C156.059 402.901 154.237 405.651 154.671 408.657C155.103 411.663 157.627 413.786 160.308 413.4Z" fill="#738EFF"/>
|
||||
<path id="Vector_500" d="M195.169 411.864C196.019 409.422 195.576 407.049 194.182 406.563C192.787 406.078 190.968 407.663 190.118 410.104C189.267 412.546 189.708 414.919 191.105 415.405C192.499 415.891 194.319 414.306 195.169 411.864Z" fill="#738EFF"/>
|
||||
<path id="Vector_501" opacity="0.41" d="M176.124 404.438C175.827 403.843 176.495 403.546 177.016 403.397C177.225 403.347 177.444 403.363 177.643 403.443C177.843 403.523 178.013 403.663 178.129 403.843L179.691 406.518C180.135 407.336 179.319 407.261 178.576 406.667C177.833 406.072 176.57 405.404 176.124 404.438Z" fill="#284E7A"/>
|
||||
<path id="Vector_502" opacity="0.41" d="M184.371 406.669C184.646 406.265 184.894 405.843 185.114 405.406C185.244 405.19 185.306 404.94 185.292 404.688C185.279 404.437 185.191 404.195 185.039 403.994L184.817 403.697C184.668 403.548 184.52 403.622 184.445 403.771C183.96 404.646 183.561 405.567 183.257 406.52C183.033 407.561 183.702 407.635 184.371 406.669Z" fill="#284E7A"/>
|
||||
<path id="Vector_503" d="M192.618 438.769C194.475 433.122 199.157 430.892 204.431 431.041L199.157 438.769H192.618Z" fill="#F7AEA5"/>
|
||||
<path id="Vector_504" d="M172.56 433.862C186.749 429.032 193.065 437.875 193.065 437.875C194.687 435.699 196.902 434.037 199.445 433.088C201.989 432.139 204.751 431.943 207.403 432.525L209.779 436.834L188.31 445.231L172.56 433.862Z" fill="#FECCAF"/>
|
||||
<path id="Vector_505" d="M192.841 440.923L193.063 438.768L195.664 440.328L192.841 440.923Z" fill="#6B3143"/>
|
||||
<path id="Vector_506" d="M170.998 433.27L161.266 458.683L185.039 465.296H186.599L203.166 457.568L212.453 434.756L211.635 433.864L193.954 440.255L170.998 433.27Z" fill="#133BBA"/>
|
||||
<path id="Vector_507" d="M212.451 434.756L194.696 441.295L186.598 465.296L202.867 458.46L212.451 434.756Z" fill="#1541CC"/>
|
||||
<path id="Vector_508" d="M170.626 434.311L193.063 441.295L185.039 465.296L161.266 458.683L170.626 434.311Z" fill="#0B2585"/>
|
||||
<path id="Vector_509" d="M236.005 443.673L237.565 443.004C237.639 443.004 237.639 442.93 237.565 442.93L236.005 442.261L235.261 440.701H235.187L234.52 442.261L232.885 442.93L234.52 443.599L235.187 445.159H235.261L236.005 443.599V443.673Z" fill="#194DF2"/>
|
||||
<path id="Vector_510" d="M160.971 539.676L164.091 538.339C164.165 538.264 164.165 538.191 164.091 538.191L160.971 536.778L159.633 533.733C159.559 533.658 159.485 533.658 159.485 533.733L158.073 536.778L155.027 538.191C154.953 538.191 154.953 538.264 155.027 538.339L158.073 539.676L159.485 542.797C159.485 542.872 159.559 542.872 159.633 542.797L160.971 539.676Z" fill="white"/>
|
||||
<path id="Vector_511" d="M70.5551 479.563H60.8229L61.1199 495.836H33.335L32.9636 479.563H23.157L23.7515 507.725H33.5579L33.4094 501.632H61.2686L61.4171 507.725H71.1493L70.5551 479.563Z" fill="#C84B8B"/>
|
||||
<path id="Vector_512" d="M61.0464 475.033C63.9322 473.476 67.2876 473.026 70.4813 473.77H70.63L99.5292 668.972H89.7228L61.0464 475.033Z" fill="#8C3F49"/>
|
||||
<path id="Vector_513" d="M61.0464 475.032L89.7228 668.972H94.7746L65.8753 473.546C64.1795 473.698 62.5345 474.205 61.0464 475.032Z" fill="#632D3E"/>
|
||||
<path id="Vector_514" d="M64.6839 493.831H26.4238C24.9879 493.831 23.8237 494.996 23.8237 496.432V496.492C23.8237 497.928 24.9879 499.092 26.4238 499.092H64.6839C66.12 499.092 67.2842 497.928 67.2842 496.492V496.432C67.2842 494.996 66.12 493.831 64.6839 493.831Z" fill="#823B51"/>
|
||||
<path id="Vector_515" d="M53.9117 493.831H26.4238C24.9879 493.831 23.8237 494.996 23.8237 496.432V496.492C23.8237 497.928 24.9879 499.092 26.4238 499.092H53.9117C55.3478 499.092 56.512 497.928 56.512 496.492V496.432C56.512 494.996 55.3478 493.831 53.9117 493.831Z" fill="#753549"/>
|
||||
<path id="Vector_516" d="M44.7739 493.831H26.4238C24.9879 493.831 23.8237 494.996 23.8237 496.432V496.492C23.8237 497.928 24.9879 499.092 26.4238 499.092H44.7739C46.2099 499.092 47.374 497.928 47.374 496.492V496.432C47.374 494.996 46.2099 493.831 44.7739 493.831Z" fill="#632D3E"/>
|
||||
<path id="Vector_517" d="M68.9966 523.033H30.7365C29.3004 523.033 28.1364 524.199 28.1364 525.634V525.695C28.1364 527.13 29.3004 528.296 30.7365 528.296H68.9966C70.4325 528.296 71.5967 527.13 71.5967 525.695V525.634C71.5967 524.199 70.4325 523.033 68.9966 523.033Z" fill="#823B51"/>
|
||||
<path id="Vector_518" d="M58.2243 523.033H30.7365C29.3004 523.033 28.1364 524.199 28.1364 525.634V525.695C28.1364 527.13 29.3004 528.296 30.7365 528.296H58.2243C59.6603 528.296 60.8245 527.13 60.8245 525.695V525.634C60.8245 524.199 59.6603 523.033 58.2243 523.033Z" fill="#753549"/>
|
||||
<path id="Vector_519" d="M49.0864 523.033H30.7365C29.3004 523.033 28.1364 524.199 28.1364 525.634V525.695C28.1364 527.13 29.3004 528.296 30.7365 528.296H49.0864C50.5225 528.296 51.6867 527.13 51.6867 525.695V525.634C51.6867 524.199 50.5225 523.033 49.0864 523.033Z" fill="#632D3E"/>
|
||||
<path id="Vector_520" d="M73.3052 552.237H35.0452C33.6091 552.237 32.4449 553.4 32.4449 554.838V554.896C32.4449 556.334 33.6091 557.497 35.0452 557.497H73.3052C74.7413 557.497 75.9054 556.334 75.9054 554.896V554.838C75.9054 553.4 74.7413 552.237 73.3052 552.237Z" fill="#823B51"/>
|
||||
<path id="Vector_521" d="M62.5329 552.237H35.0452C33.6091 552.237 32.4449 553.4 32.4449 554.838V554.896C32.4449 556.334 33.6091 557.497 35.0452 557.497H62.5329C63.969 557.497 65.1332 556.334 65.1332 554.896V554.838C65.1332 553.4 63.969 552.237 62.5329 552.237Z" fill="#753549"/>
|
||||
<path id="Vector_522" d="M53.3951 552.237H35.0452C33.6091 552.237 32.4449 553.4 32.4449 554.838V554.896C32.4449 556.334 33.6091 557.497 35.0452 557.497H53.3951C54.8311 557.497 55.9953 556.334 55.9953 554.896V554.838C55.9953 553.4 54.8311 552.237 53.3951 552.237Z" fill="#632D3E"/>
|
||||
<path id="Vector_523" d="M77.613 581.438H39.3529C37.917 581.438 36.7528 582.602 36.7528 584.039V584.098C36.7528 585.536 37.917 586.699 39.3529 586.699H77.613C79.0491 586.699 80.2133 585.536 80.2133 584.098V584.039C80.2133 582.602 79.0491 581.438 77.613 581.438Z" fill="#823B51"/>
|
||||
<path id="Vector_524" d="M66.8408 581.438H39.3529C37.917 581.438 36.7528 582.602 36.7528 584.039V584.098C36.7528 585.536 37.917 586.699 39.3529 586.699H66.8408C68.2769 586.699 69.4411 585.536 69.4411 584.098V584.039C69.4411 582.602 68.2769 581.438 66.8408 581.438Z" fill="#753549"/>
|
||||
<path id="Vector_525" d="M57.703 581.438H39.3529C37.917 581.438 36.7528 582.602 36.7528 584.039V584.098C36.7528 585.536 37.917 586.699 39.3529 586.699H57.703C59.1389 586.699 60.3031 585.536 60.3031 584.098V584.039C60.3031 582.602 59.1389 581.438 57.703 581.438Z" fill="#632D3E"/>
|
||||
<path id="Vector_526" d="M81.9212 610.642H43.6613C42.2252 610.642 41.061 611.805 41.061 613.241V613.302C41.061 614.737 42.2252 615.903 43.6613 615.903H81.9212C83.3574 615.903 84.5215 614.737 84.5215 613.302V613.241C84.5215 611.805 83.3574 610.642 81.9212 610.642Z" fill="#823B51"/>
|
||||
<path id="Vector_527" d="M86.2296 639.843H47.9695C46.5334 639.843 45.3692 641.009 45.3692 642.444V642.503C45.3692 643.941 46.5334 645.104 47.9695 645.104H86.2296C87.6656 645.104 88.8297 643.941 88.8297 642.503V642.444C88.8297 641.009 87.6656 639.843 86.2296 639.843Z" fill="#823B51"/>
|
||||
<path id="Vector_528" d="M71.149 610.642H43.6613C42.2252 610.642 41.061 611.805 41.061 613.241V613.302C41.061 614.737 42.2252 615.903 43.6613 615.903H71.149C72.5851 615.903 73.7493 614.737 73.7493 613.302V613.241C73.7493 611.805 72.5851 610.642 71.149 610.642Z" fill="#753549"/>
|
||||
<path id="Vector_529" d="M62.0112 610.642H43.6613C42.2252 610.642 41.061 611.805 41.061 613.241V613.302C41.061 614.737 42.2252 615.903 43.6613 615.903H62.0112C63.4473 615.903 64.6113 614.737 64.6113 613.302V613.241C64.6113 611.805 63.4473 610.642 62.0112 610.642Z" fill="#632D3E"/>
|
||||
<path id="Vector_530" d="M86.2296 639.843H47.9695C46.5334 639.843 45.3692 641.009 45.3692 642.444V642.503C45.3692 643.941 46.5334 645.104 47.9695 645.104H86.2296C87.6656 645.104 88.8297 643.941 88.8297 642.503V642.444C88.8297 641.009 87.6656 639.843 86.2296 639.843Z" fill="#823B51"/>
|
||||
<path id="Vector_531" d="M75.4574 639.843H47.9695C46.5334 639.843 45.3692 641.009 45.3692 642.444V642.503C45.3692 643.941 46.5334 645.104 47.9695 645.104H75.4574C76.8933 645.104 78.0575 643.941 78.0575 642.503V642.444C78.0575 641.009 76.8933 639.843 75.4574 639.843Z" fill="#753549"/>
|
||||
<path id="Vector_532" d="M66.3194 639.843H47.9695C46.5334 639.843 45.3692 641.009 45.3692 642.444V642.503C45.3692 643.941 46.5334 645.104 47.9695 645.104H66.3194C67.7556 645.104 68.9197 643.941 68.9197 642.503V642.444C68.9197 641.009 67.7556 639.843 66.3194 639.843Z" fill="#632D3E"/>
|
||||
<path id="Vector_533" d="M23.3065 475.03C26.1648 473.471 29.498 473.021 32.6673 473.767H32.8902L61.7894 668.97H51.983L23.3065 475.03Z" fill="#8C3F49"/>
|
||||
<path id="Vector_534" d="M58.5207 668.97H51.983L23.3065 475.031C25.2431 473.97 27.4133 473.408 29.6212 473.396L58.5207 668.97Z" fill="#632D3E"/>
|
||||
<path id="Vector_535" d="M26.4238 499.106C27.86 499.106 29.0241 497.942 29.0241 496.506C29.0241 495.069 27.86 493.905 26.4238 493.905C24.9879 493.905 23.8237 495.069 23.8237 496.506C23.8237 497.942 24.9879 499.106 26.4238 499.106Z" fill="#753549"/>
|
||||
<path id="Vector_536" d="M30.7365 528.31C32.1726 528.31 33.3366 527.146 33.3366 525.709C33.3366 524.273 32.1726 523.108 30.7365 523.108C29.3004 523.108 28.1364 524.273 28.1364 525.709C28.1364 527.146 29.3004 528.31 30.7365 528.31Z" fill="#753549"/>
|
||||
<path id="Vector_537" d="M35.0452 557.513C36.4812 557.513 37.6454 556.348 37.6454 554.912C37.6454 553.475 36.4812 552.311 35.0452 552.311C33.6091 552.311 32.4449 553.475 32.4449 554.912C32.4449 556.348 33.6091 557.513 35.0452 557.513Z" fill="#753549"/>
|
||||
<path id="Vector_538" d="M39.4267 586.715C40.8629 586.715 42.027 585.552 42.027 584.114C42.027 582.678 40.8629 581.513 39.4267 581.513C37.9908 581.513 36.8266 582.678 36.8266 584.114C36.8266 585.552 37.9908 586.715 39.4267 586.715Z" fill="#753549"/>
|
||||
<path id="Vector_539" d="M43.7351 615.842C45.1711 615.842 46.3352 614.679 46.3352 613.241C46.3352 611.805 45.1711 610.642 43.7351 610.642C42.299 610.642 41.1348 611.805 41.1348 613.241C41.1348 614.679 42.299 615.842 43.7351 615.842Z" fill="#753549"/>
|
||||
<path id="Vector_540" d="M48.0434 645.045C49.4793 645.045 50.6435 643.88 50.6435 642.444C50.6435 641.009 49.4793 639.843 48.0434 639.843C46.6072 639.843 45.4431 641.009 45.4431 642.444C45.4431 643.88 46.6072 645.045 48.0434 645.045Z" fill="#753549"/>
|
||||
<path id="Vector_541" d="M15.211 483.873H-133.223V486.265H15.211V483.873Z" fill="#C46999"/>
|
||||
<path id="Vector_542" d="M15.211 500.889H-133.223V503.282H15.211V500.889Z" fill="#C46999"/>
|
||||
<path id="Vector_543" d="M167.955 571.703L99.4584 624.535" stroke="#612D46" stroke-width="3.34136" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_544" d="M275.974 571.703L207.478 624.535" stroke="#612D46" stroke-width="3.34136" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_545" d="M206.658 571.408C206.658 572.157 206.359 572.874 205.831 573.404C205.301 573.934 204.582 574.231 203.833 574.231H145.367C150.27 571.036 156.213 568.657 165.351 568.657H203.833C204.57 568.657 205.278 568.946 205.804 569.458C206.332 569.972 206.638 570.671 206.658 571.408Z" fill="#6B3143"/>
|
||||
<path id="Vector_546" d="M203.837 574.23C205.397 574.23 206.66 572.965 206.66 571.406C206.66 569.846 205.397 568.581 203.837 568.581C202.279 568.581 201.014 569.846 201.014 571.406C201.014 572.965 202.279 574.23 203.837 574.23Z" fill="#9C4651"/>
|
||||
<path id="Vector_547" d="M162.602 571.408C162.621 570.684 162.917 569.995 163.428 569.485C163.94 568.972 164.628 568.677 165.351 568.657C156.213 568.657 150.27 571.036 145.367 574.231H165.351C164.615 574.212 163.916 573.906 163.403 573.379C162.889 572.851 162.602 572.144 162.602 571.408Z" fill="#522539"/>
|
||||
<path id="Vector_548" d="M314.976 571.406C314.976 572.155 314.679 572.874 314.149 573.402C313.619 573.932 312.902 574.23 312.153 574.23H253.982C259.009 570.919 264.834 569.019 270.846 568.73H312.153C312.875 568.73 313.573 569.008 314.097 569.504C314.624 570.002 314.937 570.684 314.976 571.406Z" fill="#6B3143"/>
|
||||
<path id="Vector_549" d="M312.151 574.23C313.711 574.23 314.976 572.965 314.976 571.406C314.976 569.846 313.711 568.581 312.151 568.581C310.593 568.581 309.329 569.846 309.329 571.406C309.329 572.965 310.593 574.23 312.151 574.23Z" fill="#9C4651"/>
|
||||
<path id="Vector_550" d="M273.744 574.228H253.982C259.212 570.753 265.314 568.823 271.59 568.656H273.744C273.34 568.59 272.925 568.611 272.532 568.722C272.138 568.83 271.771 569.024 271.46 569.289C271.147 569.554 270.898 569.885 270.725 570.257C270.553 570.629 270.464 571.033 270.464 571.442C270.464 571.851 270.553 572.257 270.725 572.627C270.898 572.998 271.147 573.329 271.46 573.594C271.771 573.859 272.138 574.053 272.532 574.162C272.925 574.272 273.34 574.295 273.744 574.228Z" fill="#522539"/>
|
||||
<path id="Vector_551" d="M113.644 611.086C113.644 611.086 156.659 626.988 178.501 574.229C189.644 612.053 214.829 633.675 237.933 633.675C261.038 633.675 286.223 612.053 297.367 574.229C274.93 618.813 239.642 615.917 226.567 609.823" stroke="#5A4E70" stroke-width="1.04417" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path id="Vector_552" d="M270.104 580.173L269.585 570.81" stroke="#522539" stroke-width="1.25301" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_553" d="M264.386 571.107L273.747 577.572" stroke="#522539" stroke-width="1.25301" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_554" d="M160.525 580.173L160.005 570.81" stroke="#522539" stroke-width="1.25301" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_555" d="M154.879 571.107L164.165 577.572" stroke="#522539" stroke-width="1.25301" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||
<path id="Vector_556" d="M206.658 554.167H213.865V549.255H206.658V554.167Z" fill="#F8A457"/>
|
||||
<path id="Vector_557" d="M126.721 573.114H104.954L97.3757 579.357H119.292L126.721 573.114Z" fill="#CC4D80"/>
|
||||
<path id="Vector_558" d="M117.655 563.528L112.9 565.313H122.484L126.718 563.528H117.655Z" fill="#E85A94"/>
|
||||
<path id="Vector_559" d="M273.596 624.237L271.59 625.798L273.818 625.648L273.596 624.237Z" fill="#F09E48"/>
|
||||
<path id="Vector_560" d="M114.609 549.189L115.203 551.641L112.9 550.897L114.609 549.189Z" fill="#FFBD67"/>
|
||||
<path id="Vector_561" d="M138.235 566.501L134.148 569.177H129.468L133.703 566.501H138.235Z" fill="#E85A94"/>
|
||||
<path id="Vector_562" d="M231.766 574.971V573.411H233.922L231.766 574.971Z" fill="#ED5C97"/>
|
||||
<path id="Vector_563" d="M73.3041 339.124L76.9444 339.793L75.9044 341.502L73.3041 339.124Z" fill="#FFCD8F"/>
|
||||
<path id="Vector_564" d="M80.331 376.087C80.4824 375.322 80.1811 374.618 79.6578 374.514C79.1347 374.41 78.5877 374.947 78.4364 375.712C78.2848 376.476 78.5863 377.18 79.1094 377.284C79.6327 377.388 80.1797 376.852 80.331 376.087Z" fill="#543247"/>
|
||||
<path id="Vector_565" d="M71.2877 376.767C71.8608 376.447 71.9846 375.578 71.5643 374.825C71.1438 374.073 70.3386 373.723 69.7655 374.043C69.1924 374.364 69.0686 375.233 69.4891 375.985C69.9094 376.738 70.7148 377.088 71.2877 376.767Z" fill="#543247"/>
|
||||
<path id="Vector_566" d="M63.5012 335.558C63.5012 335.558 65.3584 335.409 66.1757 336.078C65.2842 337.118 63.5012 335.558 63.5012 335.558Z" fill="#FFD08F"/>
|
||||
<path id="Vector_567" d="M69.5179 335.556C73.4553 334.59 73.8267 336.671 73.8267 336.671L69.5179 335.556Z" fill="#FFFDC4"/>
|
||||
<path id="Vector_568" d="M40.2448 360.152C40.3933 361.564 43.6622 362.53 43.6622 362.53L42.325 363.496C38.9819 363.421 38.0904 361.787 38.0904 361.787C38.7108 361.124 39.4394 360.571 40.2448 360.152Z" fill="#D4655B"/>
|
||||
<path id="Vector_569" d="M31.705 366.393C32.2249 367.954 39.1341 367.062 39.1341 367.062L39.357 367.879C34.2308 368.771 32.0764 368.325 32.0764 368.325C31.774 367.729 31.6452 367.059 31.705 366.393Z" fill="#D4655B"/>
|
||||
<path id="Vector_570" d="M57.0365 351.607C57.4823 353.464 59.7852 354.728 59.7852 354.728L63.4998 353.613C62.8047 352.518 62.3022 351.311 62.0141 350.046C62.0141 350.046 59.4138 350.715 57.0365 351.607Z" fill="#DC7363"/>
|
||||
<path id="Vector_571" d="M87.2753 397.083C87.2753 397.083 87.201 398.346 87.0524 400.055C86.7574 402.562 86.2856 405.045 85.6409 407.486C85.1208 409.715 85.1208 409.641 84.378 409.121L81.7777 407.263C83.2636 405.108 85.9381 401.021 87.2753 397.083Z" fill="#D14658"/>
|
||||
<path id="Vector_572" d="M61.2711 409.121L60.5281 408.452C55.5506 404.143 46.8585 395.226 42.7725 389.653L48.9386 387.795H49.0873C53.1732 395.374 60.5281 405.183 63.7227 409.121L64.317 409.864C66.9914 412.985 65.9514 413.059 61.2711 409.121Z" fill="#CC4355"/>
|
||||
<path id="Vector_573" d="M52.8759 387.795L62.4595 397.084L64.3166 405.183L53.7672 391.808L52.8759 387.795Z" fill="#E65568"/>
|
||||
<path id="Vector_574" d="M76.5767 401.839L56.7409 387.943L56.4437 387.646C55.8494 387.126 55.4037 387.201 56.5924 388.612L75.9823 403.325C76.2052 402.805 76.3539 402.285 76.5767 401.839Z" fill="#BD3C53"/>
|
||||
<path id="Vector_575" d="M25.9092 350.492L28.3608 349.378C28.4352 349.304 28.4352 349.229 28.3608 349.229L25.9092 348.115H25.8349L24.7205 345.588H24.6462L23.5318 348.115L21.0059 349.229C20.9317 349.229 20.9317 349.304 21.0059 349.378L23.5318 350.492L24.6462 353.019H24.7205L25.8349 350.492H25.9092Z" fill="#FF7ABC"/>
|
||||
<path id="Vector_576" d="M207.698 420.86L210.521 419.597V419.448L207.698 418.185H207.624L206.361 415.361H206.286L205.023 418.185H204.948L202.126 419.448V419.597L204.948 420.86H205.023L206.286 423.683H206.361L207.624 420.86H207.698Z" fill="#FFF0DB"/>
|
||||
<path id="Vector_577" d="M40.4684 352.797C42.6718 350.737 45.1462 348.987 47.8231 347.596C44.1085 348.413 41.434 349.602 40.4684 352.797Z" fill="#EB9363"/>
|
||||
<path id="Vector_578" d="M81.1034 336.671L87.4923 338.083C86.7495 336.597 85.9322 336.374 81.1034 336.671Z" fill="#FFFDC4"/>
|
||||
<path id="Vector_579" d="M90.0942 423.537C93.5858 419.153 96.3347 416.403 97.449 415.735C98.5634 415.066 98.4149 415.363 96.706 417.741C94.9974 420.119 91.9514 425.023 91.9514 425.023L90.0942 423.537Z" fill="#1A378A"/>
|
||||
<path id="Vector_580" d="M92.7684 409.864C92.7684 409.864 92.694 416.031 92.7684 416.774C92.8427 417.517 93.0656 416.7 93.5855 414.991C94.1056 413.282 94.5513 411.944 94.6257 411.498C94.6999 411.053 94.8485 410.904 93.8084 409.938C92.7683 408.972 92.7684 408.972 92.7684 409.864Z" fill="#2A52C2"/>
|
||||
<path id="Vector_581" d="M105.622 439.66C103.684 439.547 101.788 439.042 100.05 438.174C99.0847 437.728 99.679 438.843 101.388 439.883C103.096 440.923 106.96 439.809 105.622 439.66Z" fill="#FA8E70"/>
|
||||
<path id="Vector_582" d="M72.192 432.527L77.1696 431.932C78.2754 432.893 79.6502 433.49 81.1069 433.641L88.1647 438.323L91.062 440.032C91.062 440.032 95.5195 436.762 91.062 423.684C90.6906 422.421 90.4678 422.124 88.1647 422.644L84.3015 421.307L82.37 418.557C82.1011 418.174 81.7457 417.86 81.3325 417.641C80.9195 417.422 80.4604 417.303 79.9926 417.294H71.4491C71.1536 417.294 70.8701 417.412 70.6611 417.62C70.4521 417.829 70.3347 418.113 70.3347 418.409C70.3134 418.693 70.4014 418.974 70.5811 419.195C70.7607 419.416 71.0181 419.56 71.3005 419.597L78.2839 420.861L73.1579 423.387C72.7504 423.602 72.4222 423.941 72.2217 424.356C72.0211 424.77 71.9587 425.238 72.0435 425.691C72.1638 426.203 72.3916 426.685 72.712 427.102C71.5234 428.217 72.3406 429.852 72.3406 429.852C70.929 430.298 70.4091 430.595 70.2604 431.784C70.1118 432.973 70.9291 432.75 72.192 432.527Z" fill="#592938"/>
|
||||
<path id="Vector_583" d="M89.1305 435.945L81.1069 431.189C80.3638 430.785 79.6445 430.339 78.9526 429.852C77.8382 429.034 77.9867 428.217 78.5068 428.069C78.6761 428.018 78.8313 427.928 78.959 427.806C79.0867 427.684 79.1836 427.533 79.2418 427.366C79.2998 427.199 79.3174 427.021 79.2928 426.846C79.2685 426.671 79.2026 426.504 79.1011 426.359C78.6553 425.245 78.4325 424.799 79.0267 424.205C79.6212 423.61 79.9926 423.387 79.6955 423.016C79.3983 422.644 78.7297 421.827 79.2498 421.158C79.7697 420.489 80.3641 420.712 79.9926 419.597C79.6212 418.483 79.2498 417.294 79.9926 417.294H71.4491C71.1536 417.294 70.8701 417.412 70.6611 417.62C70.4521 417.829 70.3347 418.113 70.3347 418.409C70.3134 418.693 70.4014 418.974 70.5811 419.195C70.7607 419.416 71.0181 419.56 71.3005 419.597L78.2839 420.861L73.1579 423.387C72.7504 423.602 72.4222 423.941 72.2217 424.356C72.0211 424.77 71.9587 425.238 72.0435 425.691C72.1638 426.203 72.3916 426.685 72.712 427.102C71.5234 428.217 72.3406 429.852 72.3406 429.852C70.929 430.298 70.4091 430.595 70.2604 431.784C70.1118 432.973 70.9291 432.75 72.192 432.527L77.1696 431.932C78.2754 432.893 79.6502 433.49 81.1069 433.641L88.1647 438.323L89.1305 438.917V435.945Z" fill="#4F2431"/>
|
||||
<path id="Vector_584" d="M88.1634 438.324L91.0608 440.033C91.0608 440.033 95.5182 436.764 91.0608 423.686C90.6894 422.423 90.4665 422.125 88.1634 422.646L89.1293 423.017C90.0951 426.287 90.8379 432.677 88.1634 438.324Z" fill="#6B313F"/>
|
||||
<path id="Vector_585" d="M81.6244 417.815C82.5159 422.942 80.9557 428.515 80.9557 428.515L84.7446 430.299C85.2645 428.292 85.1903 425.84 84.2988 421.308L82.3672 418.558C82.1781 418.258 81.9243 418.004 81.6244 417.815Z" fill="#733544"/>
|
||||
<path id="Vector_586" d="M72.7102 427.103C76.2018 425.394 79.0993 423.834 79.0993 423.834L78.9506 423.388L72.4129 426.732L72.7102 427.103Z" fill="#401D2B"/>
|
||||
<path id="Vector_587" d="M72.34 429.853L78.5063 428.07L78.1349 427.55L72.1915 429.556L72.34 429.853Z" fill="#401D2B"/>
|
||||
<path id="Vector_588" d="M78.282 420.86L79.2476 420.414L79.1735 419.597L77.4647 420.712L78.282 420.86Z" fill="#401D2B"/>
|
||||
<path id="Vector_589" d="M89.1293 435.944C88.8525 436.754 88.53 437.548 88.1634 438.322L91.0608 440.031C91.7057 439.457 92.1703 438.708 92.398 437.876L89.1293 435.944Z" fill="#592938"/>
|
||||
<path id="Vector_590" d="M36.7544 433.567C35.997 436.554 34.848 439.427 33.337 442.112C31.1082 445.679 26.5021 452.738 26.5021 452.738C26.5021 452.738 20.1873 466.485 13.7983 473.544L3.54613 471.166C3.54613 471.166 10.4552 451.549 12.8325 445.902C14.6155 441.666 18.7759 429.629 20.7818 423.907C28.731 427.177 36.7544 433.567 36.7544 433.567Z" fill="#D68272"/>
|
||||
<path id="Vector_591" d="M19.9657 471.537L17.8111 472.949L12.7594 479.562H-14.2827L-13.4655 478.373C-12.7962 477.467 -11.8614 476.792 -10.791 476.441L-1.65315 473.618L4.73588 459.128C4.80899 459.024 4.91331 458.947 5.03362 458.907C5.15392 458.867 5.28389 458.866 5.40454 458.905C11.3478 462.546 17.6626 467.822 20.1142 470.645C20.1695 470.711 20.2099 470.788 20.2325 470.871C20.2551 470.954 20.2595 471.041 20.2455 471.126C20.2312 471.21 20.199 471.291 20.1507 471.362C20.1023 471.433 20.0391 471.493 19.9657 471.537Z" fill="#4F2431"/>
|
||||
<path id="Vector_592" d="M22.7125 443.524C24.5699 449.245 24.9413 450.88 25.9813 449.543C26.8208 448.538 27.5435 447.441 28.1358 446.273C28.2844 445.976 28.6558 445.233 25.9071 443.524C23.1583 441.815 21.7467 440.626 22.7125 443.524Z" fill="#D4655B"/>
|
||||
<path id="Vector_593" d="M20.1112 470.645C17.6596 467.822 11.3448 462.546 5.40151 458.905C5.28087 458.866 5.1509 458.867 5.03061 458.907C4.9103 458.947 4.80598 459.024 4.73287 459.128L3.9157 461.134C13.3507 468.045 17.8081 472.949 17.8081 472.949L19.9627 471.537C20.0361 471.493 20.0993 471.433 20.1476 471.362C20.196 471.291 20.2282 471.21 20.2425 471.126C20.2565 471.041 20.2521 470.954 20.2295 470.871C20.2069 470.788 20.1665 470.711 20.1112 470.645Z" fill="#572836"/>
|
||||
<path id="Vector_594" d="M6.66678 476.814C3.62085 477.854 0.574894 479.043 -4.10547 479.563H12.7587L13.6501 478.374C14.0216 474.51 9.78702 475.773 6.66678 476.814Z" fill="#421E29"/>
|
||||
<path id="Vector_595" d="M51.2416 462.771C48.5672 462.919 48.0471 463.736 47.6013 467.675C47.1556 471.613 46.9327 472.579 46.784 473.471C46.7661 473.595 46.7034 473.709 46.6077 473.791C46.5122 473.873 46.39 473.918 46.2641 473.917H35.4919C35.3432 473.917 35.269 473.768 35.269 473.619L37.2005 466.189C37.4029 465.318 37.8956 464.541 38.5979 463.988C39.2999 463.434 40.1695 463.136 41.0637 463.142L51.2416 462.771Z" fill="#592938"/>
|
||||
<path id="Vector_596" d="M39.3524 471.464C39.3152 471.769 39.2403 472.068 39.1295 472.355C39.1295 472.395 39.1452 472.433 39.1729 472.46C39.2008 472.488 39.2386 472.504 39.278 472.504H42.3241C42.4304 472.505 42.5338 472.469 42.6156 472.401C42.6973 472.332 42.752 472.237 42.7696 472.132L42.9925 471.315C42.9925 471.241 42.9927 471.166 42.9184 471.166H39.7981C39.7039 471.171 39.6124 471.201 39.534 471.253C39.4556 471.306 39.3928 471.378 39.3524 471.464Z" fill="#733544"/>
|
||||
<path id="Vector_597" d="M125.087 464.776C127.025 465.176 128.935 465.697 130.808 466.336C131.699 466.708 131.773 466.782 130.213 468.566C128.653 470.349 128.43 471.092 126.87 468.64C125.31 466.188 124.047 464.479 125.087 464.776Z" fill="#1C1B29"/>
|
||||
<path id="Vector_598" d="M90.4681 490.784L104.955 493.608C107.258 494.053 107.629 494.128 113.35 492.642L114.241 498.809H92.2511L90.4681 490.784Z" fill="#232133"/>
|
||||
<path id="Vector_599" d="M82.1473 479.563C89.1307 475.401 90.9137 474.213 92.3994 473.544C93.8854 472.875 92.1766 471.909 89.7993 471.166C87.4219 470.423 86.8276 471.538 82.1473 479.563Z" fill="#171621"/>
|
||||
<path id="Vector_600" d="M95.2219 483.054C101.76 484.54 107.034 485.729 109.709 486.175C112.383 486.621 111.492 485.506 108.074 482.831C105.728 480.896 103.246 479.133 100.645 477.556C99.0107 476.664 98.565 477.258 95.6676 479.71C92.7703 482.162 92.6218 482.46 95.2219 483.054Z" fill="#171621"/>
|
||||
<path id="Vector_601" d="M35.7121 414.025C42.0269 421.232 43.1412 424.056 43.1412 424.056L41.804 426.434C41.804 426.434 41.2839 425.394 38.5353 420.861C35.7864 416.328 32.2205 410.086 35.7121 414.025Z" fill="#1A378A"/>
|
||||
<path id="Vector_602" d="M77.5095 409.501L74.5593 409.858C74.1927 409.903 73.9312 410.234 73.9754 410.599C74.0195 410.964 74.3524 411.223 74.719 411.179L77.6692 410.822C78.0358 410.778 78.2973 410.446 78.2532 410.081C78.2091 409.717 77.8761 409.457 77.5095 409.501Z" fill="#B8C5FF"/>
|
||||
<path id="Vector_603" d="M118.477 530.463C118.137 529.568 117.863 528.648 117.66 527.714C117.306 527.339 116.88 527.04 116.408 526.835C115.935 526.631 115.426 526.526 114.911 526.524C112.905 526.673 111.419 528.159 110.825 530.61C110.231 533.064 109.265 534.996 108.225 535.44C107.185 535.887 106.516 535.368 105.327 534.549C105.253 534.402 105.105 534.402 104.956 534.402C104.896 534.969 104.871 535.538 104.882 536.109C105.696 536.67 106.645 537.003 107.63 537.075C108.013 537.081 108.393 537.004 108.745 536.853C110.379 536.259 111.494 534.402 112.385 530.982C112.757 529.2 113.722 528.159 114.985 528.084C116.248 528.011 117.585 528.902 118.477 530.463Z" fill="#4F2431"/>
|
||||
<path id="Vector_604" d="M75.3853 409.938L77.5397 409.641L77.6882 410.235H74.7911L75.3853 409.938Z" fill="#E0E6FF"/>
|
||||
<path id="Vector_605" d="M178.278 389.951L171.295 388.465H177.015L179.986 382.891C180.781 381.473 182.016 380.351 183.503 379.694C184.99 379.038 186.649 378.882 188.234 379.251L189.57 379.771C186.302 378.656 184.668 382.371 183.405 386.978C182.736 389.505 182.661 390.842 178.278 389.951Z" fill="#61C7C7"/>
|
||||
<path id="Vector_606" d="M191.557 390.595C191.798 388.806 190.808 387.195 189.344 386.997C187.88 386.799 186.498 388.089 186.256 389.878C186.014 391.668 187.003 393.279 188.467 393.477C189.931 393.675 191.315 392.385 191.557 390.595Z" fill="#21354A"/>
|
||||
<path id="Vector_607" d="M166.968 386.236C167.374 384.477 166.536 382.781 165.097 382.449C163.658 382.116 162.162 383.273 161.756 385.033C161.35 386.792 162.187 388.488 163.627 388.82C165.066 389.152 166.562 387.995 166.968 386.236Z" fill="#21354A"/>
|
||||
<path id="Vector_608" d="M165.872 443.375C167.952 443.747 170.032 444.341 170.849 444.564C171.666 444.787 171.963 444.936 171.666 445.902C171.369 446.868 171.369 446.793 169.586 446.645L165.426 446.422L165.872 443.375Z" fill="#61C7C7"/>
|
||||
<path id="Vector_609" d="M147.076 451.921C150.122 452.367 154.059 452.59 157.551 452.887C157.656 451.466 157.956 450.065 158.442 448.726C159.268 446.518 160.367 444.421 161.711 442.484C158.962 441.89 155.619 441.221 152.87 440.775C154.059 427.028 147.819 418.706 143.361 421.976C141.233 423.538 139.774 425.847 139.275 428.44C138.904 430.447 138.681 433.865 138.458 434.608C137.789 437.06 135.932 437.58 137.492 442.484C138.309 444.936 135.486 450.361 147.076 451.921Z" fill="white"/>
|
||||
<path id="Vector_610" d="M160.151 442.112L157.328 441.592C155.916 441.295 155.247 441.443 156.065 441.889C156.882 442.335 156.956 442.707 154.802 443.004C152.647 443.301 152.87 444.416 153.539 444.936C154.207 445.456 154.653 446.273 153.019 446.794C151.384 447.314 151.087 448.057 152.053 448.651C153.019 449.246 153.539 449.989 151.904 450.509C150.27 451.029 150.493 451.921 151.904 452.441L155.619 452.664L160.151 442.112Z" fill="#FFE8AD"/>
|
||||
<path id="Vector_611" d="M157.553 452.886C157.776 450.657 158.296 447.536 161.713 442.483L166.914 443.598L166.245 446.124L169.588 448.428C170.702 449.245 170.702 449.468 170.48 449.988C170.31 450.385 170.025 450.721 169.662 450.954C169.439 451.177 168.845 450.805 167.954 450.508L165.428 449.691C164.982 449.542 164.908 449.84 165.205 450.063C165.502 450.285 167.582 451.326 168.028 451.623C168.474 451.92 168.548 452.069 168.399 452.44C168.251 452.812 168.028 453.555 167.285 453.48C166.542 453.406 163.868 452.589 163.868 452.589C162.085 453.332 159.781 453.035 157.553 452.886Z" fill="#61C7C7"/>
|
||||
<path id="Vector_612" d="M152.873 440.775C150.867 440.85 147.524 442.41 145.073 444.119C142.621 445.828 142.101 444.639 142.918 443.376C143.736 442.113 146.782 441.444 149.679 440.775C152.576 440.107 152.948 440.255 152.948 440.255L152.873 440.775Z" fill="#DBE6FF"/>
|
||||
<path id="Vector_613" d="M150.347 440.627C151.313 440.478 151.907 439.512 150.124 438.992L145.964 437.803C145.444 437.729 144.998 436.169 146.855 436.614C148.713 437.06 153.022 439.289 153.022 439.289C153.022 439.289 154.21 440.404 152.873 440.776L150.347 440.627Z" fill="#DBE6FF"/>
|
||||
<path id="Vector_614" d="M166.911 446.57L165.5 445.604L165.797 444.936L167.431 446.57H166.911Z" fill="#5697B0"/>
|
||||
<path id="Vector_615" d="M165.204 450.063L164.313 449.617L164.758 449.171L165.427 449.691L165.204 450.063Z" fill="#5697B0"/>
|
||||
<path id="Vector_616" d="M158.817 441.891C156.663 443.748 154.211 447.092 153.988 452.517L157.554 452.888C157.659 451.467 157.959 450.066 158.445 448.727C159.272 446.519 160.37 444.422 161.714 442.485L158.817 441.891Z" fill="#FFD978"/>
|
||||
<path id="Vector_617" d="M139.647 438.323C139.757 438.115 139.935 437.95 140.151 437.855C140.366 437.761 140.608 437.742 140.836 437.803C142.124 438.113 143.39 438.51 144.625 438.992C145.368 439.438 142.545 440.255 140.316 440.701C138.087 441.147 138.533 440.33 139.647 438.323Z" fill="#E6EDFF"/>
|
||||
<path id="Vector_618" d="M163.792 449.765C163.198 449.096 163.123 448.428 164.089 447.982C165.055 447.536 164.98 446.793 164.609 446.273C164.238 445.753 163.495 444.935 164.832 444.489C166.169 444.044 165.575 443.301 164.535 443.078H164.46L161.712 442.483C159.26 446.124 158.294 448.725 157.849 450.731C157.923 450.731 162.38 451.251 163.346 451.028C164.312 450.805 164.46 450.36 163.792 449.765Z" fill="#66D4CD"/>
|
||||
<path id="Vector_619" d="M208.963 443.375L205.918 444.861C205.672 444.984 205.486 445.197 205.398 445.456C205.027 446.199 204.803 446.793 205.398 446.793L208.518 446.571C210.523 445.159 210.153 444.564 208.963 443.375Z" fill="#5EC7C7"/>
|
||||
<path id="Vector_620" d="M207.999 446.052L204.879 447.538C204.653 447.683 204.472 447.889 204.358 448.133C204.061 448.875 203.764 449.47 204.358 449.47L207.48 449.247C209.484 447.835 209.112 447.241 207.999 446.052Z" fill="#5EC7C7"/>
|
||||
<path id="Vector_621" d="M206.733 449.321L205.023 450.064C204.895 450.371 204.82 450.698 204.801 451.03C204.801 451.55 205.023 451.476 205.617 451.401L207.252 451.178C207.698 451.104 207.698 451.03 207.771 450.584V449.024L206.733 449.321Z" fill="#5EC7C7"/>
|
||||
<path id="Vector_622" d="M163.121 479.562C162.081 473.395 161.932 472.206 161.709 471.389C161.487 470.571 159.926 477.407 159.852 479.562H163.121Z" fill="#7C90EB"/>
|
||||
<path id="Vector_623" d="M174.935 475.475C173.821 484.318 172.261 493.829 171.592 498.807C170.924 503.786 169.958 500.071 169.141 496.207C168.323 492.343 168.546 490.931 170.626 483.872C172.706 476.813 175.53 470.571 174.935 475.475Z" fill="#9EB0FF"/>
|
||||
<path id="Vector_624" d="M186.601 471.835C191.8 479.489 200.493 491.972 202.202 495.241C203.91 498.511 201.905 496.653 198.636 494.201C195.367 491.749 194.847 491.08 192.693 487.439C190.537 483.798 183.704 467.525 186.601 471.835Z" fill="#E0EAFF"/>
|
||||
<path id="Vector_625" d="M209.63 465.891C207.846 472.727 204.876 481.347 204.132 483.948C203.389 486.548 200.493 485.657 198.189 484.542C195.886 483.428 196.852 483.948 198.561 486.103C199.941 487.722 201.702 488.973 203.687 489.744C204.876 490.189 206.882 491.527 207.995 484.022C209.111 476.517 210.596 462.399 209.63 465.891Z" fill="#BDD1FF"/>
|
||||
<path id="Vector_626" d="M216.32 494.647C215.799 498.957 211.937 497.768 209.931 496.43C207.924 495.093 205.324 495.539 204.507 499.923C204.136 501.78 202.279 503.489 199.381 501.186C196.484 498.883 194.255 499.625 193.735 502.672C193.214 505.719 190.689 506.462 188.163 503.564C185.637 500.666 182.517 502.078 181.774 505.719C181.03 509.36 177.688 508.542 175.979 505.57C174.27 502.598 171.299 503.935 170.779 507.205C170.259 510.474 167.584 508.468 167.213 507.353L167.584 510.549C170.779 510.474 174.048 510.326 177.242 510.028C206.736 507.502 221.965 495.91 221.965 495.91L221.446 493.607C220.553 490.411 216.914 490.337 216.32 494.647Z" fill="#94A7FF"/>
|
||||
<path id="Vector_627" d="M184.152 502.226C183.037 502.672 182.145 503.935 181.774 505.719C181.18 508.691 177.688 508.542 175.979 505.57C174.27 502.598 171.299 503.935 170.779 507.205C170.259 510.474 167.584 508.468 167.213 507.353C167.361 508.691 167.51 509.731 167.584 510.177V510.549C173.551 510.393 179.504 509.896 185.415 509.063L184.152 502.226Z" fill="#7D93FF"/>
|
||||
<path id="Vector_628" d="M72.4894 385.415C74.7182 385.415 76.7984 385.341 77.467 385.936C78.1356 386.53 77.0956 387.793 75.4611 388.982C73.8267 390.171 74.4209 389.577 72.7123 388.09C71.0037 386.604 70.7808 385.415 72.4894 385.415Z" fill="#C74153"/>
|
||||
<path id="Vector_629" d="M73.3799 385.49L71.5225 385.788C71.2997 386.382 71.8198 387.348 72.7112 388.091C73.6027 388.834 74.7171 389.503 75.4601 388.983L76.203 388.388C75.9058 387.72 75.0143 386.011 73.3799 385.49Z" fill="#A82C3C"/>
|
||||
<path id="Vector_630" d="M76.7252 385.639C75.3236 385.435 73.9062 385.36 72.4907 385.417C71.5248 385.417 71.3763 385.862 71.525 386.531H76.5767C76.8739 386.606 76.7996 386.011 76.7252 385.639Z" fill="white"/>
|
||||
<path id="Vector_631" d="M84.6731 382.518C84.7474 382.444 84.7474 382.295 84.8218 382.221C85.0475 381.581 85.0687 380.887 84.8822 380.234C84.696 379.582 84.3113 379.004 83.7816 378.58C83.8629 378.779 83.8976 378.994 83.883 379.209C83.8684 379.424 83.8049 379.632 83.6973 379.819C83.5898 380.005 83.4411 380.165 83.2626 380.285C83.084 380.405 82.8805 380.482 82.6672 380.512C81.9371 380.544 81.2069 380.444 80.5128 380.215C79.6121 379.856 78.6411 379.71 77.6749 379.787C76.7087 379.865 75.7731 380.163 74.941 380.66C71.9693 379.1 69.9635 380.437 67.289 380.437C66.5596 380.454 65.8322 380.354 65.1345 380.14C62.8316 379.472 62.9057 378.431 63.4258 377.242C60.1569 377.985 60.3056 381.478 61.7914 382.964C62.6087 384.004 64.1688 384.45 66.2488 384.004C69.5177 386.754 71.0778 386.976 74.941 384.45C78.0612 387.125 81.0329 386.828 82.8159 383.558C83.1877 383.554 83.5523 383.456 83.8767 383.274C84.201 383.093 84.4749 382.833 84.6731 382.518Z" fill="#6B3143"/>
|
||||
<path id="Vector_632" d="M74.9378 384.452C78.058 387.127 81.0297 386.83 82.8127 383.56C83.1845 383.556 83.5491 383.458 83.8735 383.276C84.198 383.095 84.4717 382.835 84.67 382.52C84.7444 382.446 84.7444 382.297 84.8186 382.223C84.9096 381.883 84.9594 381.534 84.9671 381.182C84.7665 381.697 84.3817 382.119 83.8874 382.366C83.3933 382.614 82.825 382.668 82.2926 382.52C80.0639 384.378 77.6866 383.783 75.4579 382.074C75.4579 382.074 70.7776 384.601 67.3602 381.851C63.5713 382.817 60.8225 381.034 61.2683 378.582C60.8629 379.269 60.6943 380.07 60.7882 380.862C60.8821 381.654 61.2336 382.393 61.7884 382.966C62.6055 384.006 64.1656 384.452 66.2458 384.006C69.5145 386.755 71.0746 386.978 74.9378 384.452Z" fill="#5E2737"/>
|
||||
<path id="Vector_633" d="M146.778 465.072C147.223 466.186 147.892 465.666 149.081 465.369C152.721 464.329 156.435 462.843 158.07 462.694C159.704 462.546 160.299 461.877 156.955 461.951C153.612 462.025 148.858 462.248 147.372 462.397C145.886 462.546 146.035 463.214 146.778 465.072Z" fill="#8FA2FA"/>
|
||||
<path id="Vector_634" d="M166.691 374.939C169.291 377.094 169.44 381.553 169.44 383.336C169.44 385.119 169.44 388.315 169.44 389.132C169.44 389.949 169.662 390.247 172.188 391.807C174.714 393.367 173.748 392.03 172.708 390.544L171.297 388.463V382.667C171.291 381.085 170.86 379.533 170.05 378.174C169.24 376.814 168.08 375.697 166.691 374.939Z" fill="#D4FFDC"/>
|
||||
<path id="Vector_635" d="M190.319 388.165C191.284 388.686 191.21 391.063 190.319 390.023C189.427 388.983 188.981 387.497 190.319 388.165Z" fill="#335A70"/>
|
||||
<path id="Vector_636" d="M165.948 383.634C166.839 384.154 166.765 386.606 165.948 385.492C165.13 384.377 164.536 382.965 165.948 383.634Z" fill="#335A70"/>
|
||||
<g id="Group_6" style="mix-blend-mode:multiply">
|
||||
<path id="Vector_637" d="M156.291 385.267C159.485 386.753 160.897 388.536 161.862 390.691C162.828 392.846 161.342 396.264 157.851 392.474C154.359 388.685 152.947 383.706 156.291 385.267Z" fill="#DAD4FF"/>
|
||||
</g>
|
||||
<g id="Group_7" style="mix-blend-mode:multiply">
|
||||
<path id="Vector_638" d="M195.365 396.486C194.993 393.96 194.696 391.582 194.399 389.427C193.451 390.691 192.837 392.173 192.617 393.737C192.32 395.521 193.582 397.75 195.365 396.486Z" fill="#DAD4FF"/>
|
||||
</g>
|
||||
<g id="Group_8" style="mix-blend-mode:multiply">
|
||||
<path id="Vector_639" d="M152.649 396.117C156.586 398.569 157.924 398.718 159.781 398.495C161.638 398.272 161.267 396.934 158.369 394.854C155.472 392.773 153.838 392.402 151.98 393.145C150.123 393.888 151.386 395.225 152.649 396.117Z" fill="#DAD4FF"/>
|
||||
</g>
|
||||
<g id="Group_9" style="mix-blend-mode:multiply">
|
||||
<path id="Vector_640" d="M195.886 401.466L195.662 398.866C194.251 400.575 194.399 401.541 195.886 401.466Z" fill="#DAD4FF"/>
|
||||
</g>
|
||||
<path id="Vector_641" d="M162.292 410.55C163.329 410.162 163.635 408.414 162.974 406.646C162.313 404.877 160.936 403.759 159.898 404.147C158.86 404.535 158.555 406.283 159.216 408.051C159.877 409.819 161.254 410.938 162.292 410.55Z" fill="#B2A6FF"/>
|
||||
<path id="Vector_642" d="M195.306 409.652C195.459 408.471 195.121 407.455 194.552 407.381C193.983 407.307 193.396 408.204 193.243 409.384C193.09 410.564 193.428 411.581 193.997 411.655C194.566 411.729 195.153 410.832 195.306 409.652Z" fill="#B2A6FF"/>
|
||||
<path id="Vector_643" d="M191.356 382.073C192.768 383.56 192.915 385.937 191.356 384.08C189.796 382.222 189.648 380.29 191.356 382.073Z" fill="#D4FFDC"/>
|
||||
<path id="Vector_644" d="M174.863 418.407C178.874 420.042 181.847 419.447 183.704 418.704C185.561 417.961 185.338 419.968 182.069 421.602C178.801 423.237 177.983 422.643 176.275 421.231C174.566 419.819 172.56 417.441 174.863 418.407Z" fill="#7CE4CC"/>
|
||||
<path id="Vector_645" d="M150.197 490.115L152.946 491.676L151.608 493.162L150.197 490.115Z" fill="#F77BB0"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Discord | Godot">
|
||||
<g id="Discord Logo" clip-path="url(#clip3_6_63)">
|
||||
<g id="Text">
|
||||
<path id="Vector_646" d="M940.481 424.207V455.324H930.115V449.662C929.238 451.792 927.908 453.416 926.119 454.527C924.33 455.632 922.117 456.188 919.494 456.188C917.148 456.188 915.105 455.608 913.358 454.441C911.611 453.274 910.263 451.675 909.314 449.644C908.371 447.612 907.894 445.316 907.894 442.747C907.864 440.099 908.365 437.722 909.399 435.616C910.427 433.511 911.883 431.869 913.757 430.69C915.631 429.51 917.771 428.918 920.171 428.918C925.109 428.918 928.422 431.109 930.115 435.487V424.207H940.481ZM928.567 446.532C929.625 445.482 930.151 444.118 930.151 442.451C930.151 440.84 929.637 439.525 928.609 438.518C927.582 437.512 926.173 437.006 924.402 437.006C922.655 437.006 921.259 437.518 920.213 438.543C919.167 439.568 918.648 440.895 918.648 442.537C918.648 444.18 919.167 445.519 920.213 446.557C921.259 447.594 922.637 448.113 924.36 448.113C926.107 448.106 927.509 447.582 928.567 446.532Z" fill="white"/>
|
||||
<path id="Vector_647" d="M906.039 430.517V439.852C904.963 439.129 903.572 438.771 901.85 438.771C899.595 438.771 897.854 439.469 896.645 440.864C895.43 442.259 894.826 444.433 894.826 447.372V455.324H884.459V430.041H894.614V438.08C895.176 435.141 896.089 432.974 897.346 431.572C898.597 430.177 900.218 429.479 902.188 429.479C903.681 429.479 904.963 429.825 906.039 430.517Z" fill="white"/>
|
||||
<path id="Vector_648" d="M855.836 454.373C853.394 453.163 851.532 451.508 850.251 449.403C848.969 447.298 848.323 444.951 848.323 442.358C848.323 439.765 848.963 437.45 850.251 435.419C851.538 433.388 853.388 431.795 855.818 430.64C858.242 429.486 861.138 428.911 864.493 428.911C867.847 428.911 870.743 429.486 873.167 430.64C875.591 431.795 877.441 433.375 878.71 435.394C879.979 437.413 880.614 439.728 880.614 442.352C880.614 444.945 879.979 447.291 878.71 449.397C877.441 451.502 875.585 453.157 873.143 454.367C870.701 455.577 867.817 456.182 864.486 456.182C861.156 456.182 858.272 455.583 855.836 454.373ZM868.694 446.705C869.721 445.655 870.241 444.266 870.241 442.537C870.241 440.809 869.727 439.432 868.694 438.413C867.666 437.388 866.264 436.876 864.486 436.876C862.679 436.876 861.265 437.388 860.231 438.413C859.203 439.438 858.689 440.809 858.689 442.537C858.689 444.266 859.203 445.655 860.231 446.705C861.259 447.754 862.679 448.285 864.486 448.285C866.264 448.279 867.666 447.754 868.694 446.705Z" fill="white"/>
|
||||
<path id="Vector_649" d="M825.769 454.373C823.346 453.162 821.514 451.52 820.293 449.446C819.072 447.371 818.455 445.038 818.455 442.444C818.455 439.851 819.09 437.53 820.359 435.486C821.629 433.443 823.491 431.838 825.945 430.671C828.399 429.504 831.331 428.923 834.746 428.923C838.977 428.923 842.489 429.831 845.282 431.646V439.555C844.297 438.864 843.148 438.302 841.837 437.87C840.525 437.437 839.122 437.221 837.623 437.221C835 437.221 832.951 437.709 831.47 438.691C829.989 439.672 829.245 440.95 829.245 442.537C829.245 444.093 829.965 445.365 831.403 446.365C832.842 447.359 834.927 447.859 837.666 447.859C839.074 447.859 840.464 447.649 841.837 447.235C843.203 446.816 844.381 446.303 845.367 445.698V453.348C842.266 455.249 838.669 456.2 834.577 456.2C831.131 456.188 828.193 455.583 825.769 454.373Z" fill="white"/>
|
||||
<path id="Vector_650" d="M795.811 455.28C793.526 454.675 791.465 453.799 789.633 452.644V445.47C791.017 446.563 792.873 447.464 795.2 448.174C797.528 448.878 799.776 449.23 801.952 449.23C802.968 449.23 803.736 449.094 804.256 448.822C804.775 448.551 805.035 448.224 805.035 447.847C805.035 447.415 804.896 447.057 804.612 446.767C804.328 446.476 803.778 446.236 802.962 446.032L797.884 444.865C794.977 444.173 792.916 443.217 791.688 441.988C790.461 440.765 789.851 439.16 789.851 437.172C789.851 435.499 790.383 434.048 791.459 432.807C792.529 431.566 794.052 430.609 796.029 429.936C798.005 429.257 800.314 428.918 802.968 428.918C805.338 428.918 807.508 429.177 809.484 429.696C811.461 430.214 813.093 430.875 814.393 431.684V438.469C813.063 437.66 811.54 437.024 809.799 436.542C808.064 436.067 806.281 435.832 804.443 435.832C801.789 435.832 800.465 436.295 800.465 437.215C800.465 437.648 800.671 437.969 801.082 438.185C801.493 438.401 802.249 438.623 803.343 438.858L807.574 439.636C810.337 440.123 812.398 440.982 813.752 442.204C815.106 443.426 815.783 445.235 815.783 447.631C815.783 450.255 814.665 452.335 812.422 453.879C810.179 455.422 807 456.194 802.877 456.194C800.453 456.188 798.096 455.885 795.811 455.28Z" fill="white"/>
|
||||
<path id="Vector_651" d="M779.84 432.733C782.694 432.733 785.008 430.61 785.008 427.991C785.008 425.373 782.694 423.25 779.84 423.25C776.986 423.25 774.672 425.373 774.672 427.991C774.672 430.61 776.986 432.733 779.84 432.733Z" fill="white"/>
|
||||
<path id="Vector_652" d="M774.667 435.999C777.835 437.394 781.764 437.456 785.004 435.999V455.459H774.667V435.999Z" fill="white"/>
|
||||
<path id="Vector_653" d="M736.275 425.071H752.777C756.755 425.071 760.116 425.707 762.872 426.973C765.623 428.238 767.684 430.004 769.05 432.264C770.416 434.524 771.105 437.11 771.105 440.025C771.105 442.877 770.392 445.464 768.965 447.779C767.539 450.1 765.369 451.934 762.449 453.286C759.529 454.638 755.915 455.317 751.593 455.317H736.275V425.071ZM751.423 447.631C754.101 447.631 756.162 446.946 757.601 445.581C759.04 444.21 759.759 442.346 759.759 439.981C759.759 437.79 759.118 436.042 757.837 434.733C756.555 433.425 754.615 432.764 752.022 432.764H746.859V447.631H751.423Z" fill="white"/>
|
||||
</g>
|
||||
<path id="Vector_654" d="M698.103 414.877C693.128 412.549 687.808 410.857 682.247 409.894C681.564 411.129 680.766 412.79 680.216 414.111C674.304 413.222 668.447 413.222 662.644 414.111C662.094 412.79 661.278 411.129 660.588 409.894C655.021 410.857 649.696 412.555 644.721 414.889C634.686 430.052 631.966 444.839 633.326 459.416C639.982 464.386 646.432 467.405 652.773 469.38C654.338 467.226 655.734 464.935 656.937 462.521C654.646 461.651 652.452 460.576 650.379 459.329C650.929 458.922 651.467 458.496 651.987 458.057C664.632 463.972 678.372 463.972 690.867 458.057C691.393 458.496 691.931 458.922 692.475 459.329C690.395 460.583 688.195 461.657 685.904 462.527C687.107 464.935 688.497 467.232 690.069 469.387C696.416 467.411 702.872 464.392 709.527 459.416C711.123 442.518 706.801 427.867 698.103 414.877ZM658.66 450.451C654.864 450.451 651.751 446.907 651.751 442.592C651.751 438.276 654.798 434.726 658.66 434.726C662.523 434.726 665.636 438.27 665.569 442.592C665.575 446.907 662.523 450.451 658.66 450.451ZM684.193 450.451C680.397 450.451 677.284 446.907 677.284 442.592C677.284 438.276 680.331 434.726 684.193 434.726C688.056 434.726 691.169 438.27 691.103 442.592C691.103 446.907 688.056 450.451 684.193 450.451Z" fill="white"/>
|
||||
</g>
|
||||
<line id="Line 1" x1="1010.12" y1="409.897" x2="1010.12" y2="469.384" stroke="white"/>
|
||||
<g id="Godot Logo">
|
||||
<g id="Group_10">
|
||||
<path id="Vector_655" d="M1202.41 430.801C1201.3 430.801 1200.38 431.31 1199.62 432.326C1198.87 433.342 1198.5 434.769 1198.5 436.605C1198.5 438.444 1198.85 439.853 1199.57 440.835C1200.29 441.819 1201.23 442.309 1202.4 442.309C1203.56 442.309 1204.51 441.813 1205.24 440.817C1205.97 439.824 1206.33 438.403 1206.33 436.554C1206.33 434.705 1205.95 433.283 1205.2 432.289C1204.45 431.297 1203.52 430.801 1202.41 430.801ZM1202.4 449.065C1199.15 449.065 1196.5 448.003 1194.46 445.879C1192.41 443.753 1191.39 440.651 1191.39 436.572C1191.39 432.492 1192.43 429.402 1194.49 427.298C1196.56 425.197 1199.23 424.145 1202.5 424.145C1205.77 424.145 1208.41 425.178 1210.42 427.249C1212.43 429.316 1213.44 432.45 1213.44 436.641C1213.44 440.835 1212.41 443.954 1210.35 446.001C1208.29 448.044 1205.64 449.065 1202.4 449.065Z" fill="white"/>
|
||||
<path id="Vector_656" d="M1223.15 431.041V441.408C1223.15 441.892 1223.19 442.197 1223.26 442.325C1223.33 442.453 1223.53 442.516 1223.88 442.516C1225.15 442.516 1226.12 442.041 1226.77 441.094C1227.43 440.147 1227.76 438.571 1227.76 436.364C1227.76 434.156 1227.42 432.718 1226.74 432.049C1226.06 431.379 1224.98 431.041 1223.5 431.041H1223.15ZM1216.5 447.125V426.33C1216.5 425.752 1216.64 425.296 1216.93 424.958C1217.22 424.625 1217.59 424.455 1218.06 424.455H1223.85C1227.52 424.455 1230.31 425.382 1232.21 427.231C1234.12 429.079 1235.08 431.989 1235.08 435.964C1235.08 444.468 1231.45 448.719 1224.19 448.719H1218.27C1217.09 448.719 1216.5 448.189 1216.5 447.125Z" fill="white"/>
|
||||
<path id="Vector_657" d="M1248.38 430.801C1247.27 430.801 1246.34 431.31 1245.59 432.326C1244.84 433.342 1244.47 434.769 1244.47 436.605C1244.47 438.444 1244.83 439.853 1245.54 440.835C1246.26 441.819 1247.2 442.309 1248.37 442.309C1249.53 442.309 1250.48 441.813 1251.21 440.817C1251.94 439.824 1252.3 438.403 1252.3 436.554C1252.3 434.705 1251.93 433.283 1251.17 432.289C1250.42 431.297 1249.49 430.801 1248.38 430.801ZM1248.37 449.065C1245.12 449.065 1242.47 448.003 1240.43 445.879C1238.38 443.753 1237.36 440.651 1237.36 436.572C1237.36 432.492 1238.4 429.402 1240.46 427.298C1242.53 425.197 1245.2 424.145 1248.47 424.145C1251.74 424.145 1254.38 425.178 1256.39 427.249C1258.4 429.316 1259.41 432.45 1259.41 436.641C1259.41 440.835 1258.38 443.954 1256.32 446.001C1254.26 448.044 1251.61 449.065 1248.37 449.065Z" fill="white"/>
|
||||
<path id="Vector_658" d="M1272.32 448.167C1272.32 448.626 1271.18 448.859 1268.89 448.859C1266.61 448.859 1265.46 448.626 1265.46 448.167V430.766H1261.3C1260.91 430.766 1260.63 430.235 1260.47 429.17C1260.4 428.663 1260.37 428.144 1260.37 427.611C1260.37 427.082 1260.4 426.561 1260.47 426.052C1260.63 424.99 1260.91 424.455 1261.3 424.455H1276.38C1276.77 424.455 1277.05 424.99 1277.21 426.052C1277.28 426.561 1277.32 427.082 1277.32 427.611C1277.32 428.144 1277.28 428.663 1277.21 429.17C1277.05 430.235 1276.77 430.766 1276.38 430.766H1272.32V448.167Z" fill="white"/>
|
||||
<path id="Vector_659" d="M1185.26 435.85C1183.4 435.821 1181.26 436.21 1181.26 436.21V439.852H1183.41L1183.38 441.476C1183.38 442.077 1182.79 442.379 1181.6 442.379C1180.41 442.379 1179.36 441.875 1178.45 440.87C1177.53 439.863 1177.08 438.391 1177.08 436.452C1177.08 434.509 1177.52 433.077 1178.41 432.152C1179.3 431.229 1180.46 430.766 1181.89 430.766C1182.5 430.766 1183.12 430.863 1183.77 431.061C1184.41 431.257 1184.85 431.441 1185.07 431.613C1185.29 431.79 1185.49 431.874 1185.69 431.874C1185.89 431.874 1186.2 431.645 1186.64 431.182C1187.08 430.72 1187.47 430.019 1187.82 429.086C1188.17 428.147 1188.34 427.428 1188.34 426.918C1188.34 426.411 1188.33 426.062 1188.31 425.878C1187.82 425.347 1186.93 424.926 1185.62 424.613C1184.32 424.3 1182.85 424.145 1181.24 424.145C1177.68 424.145 1174.89 425.266 1172.88 427.507C1170.87 429.749 1169.87 432.66 1169.87 436.242C1169.87 440.448 1170.89 443.637 1172.95 445.809C1175.01 447.981 1177.71 449.066 1181.06 449.066C1182.86 449.066 1184.46 448.911 1185.86 448.598C1187.26 448.287 1188.19 447.968 1188.65 447.645L1188.79 436.798C1188.79 436.168 1187.13 435.882 1185.26 435.85Z" fill="white"/>
|
||||
<g id="Group_11">
|
||||
<path id="Vector_660" d="M1177.96 463.255C1177.76 463.648 1177.41 464.008 1176.9 464.334C1176.38 464.662 1175.73 464.825 1174.94 464.825C1173.89 464.825 1173.05 464.495 1172.41 463.828C1171.77 463.166 1171.45 462.211 1171.45 460.966V457.86C1171.45 456.642 1171.75 455.707 1172.35 455.055C1172.96 454.407 1173.76 454.079 1174.77 454.079C1175.75 454.079 1176.52 454.338 1177.06 454.851C1177.6 455.365 1177.88 456.083 1177.91 457.001L1177.89 457.042H1177.09C1177.06 456.339 1176.85 455.796 1176.47 455.413C1176.09 455.033 1175.52 454.841 1174.77 454.841C1174.01 454.841 1173.41 455.098 1172.97 455.613C1172.53 456.127 1172.31 456.873 1172.31 457.852V460.976C1172.31 461.991 1172.55 462.765 1173.02 463.299C1173.49 463.828 1174.13 464.093 1174.94 464.093C1175.52 464.093 1175.99 463.989 1176.35 463.776C1176.7 463.566 1176.95 463.31 1177.09 463.005V460.285H1174.92V459.529H1177.96V463.255Z" fill="white"/>
|
||||
<path id="Vector_661" d="M1181.94 464.049C1182.41 464.049 1182.84 463.914 1183.21 463.639C1183.58 463.363 1183.84 463.013 1184 462.588V460.91H1182.62C1182.03 460.91 1181.56 461.076 1181.21 461.408C1180.86 461.738 1180.68 462.15 1180.68 462.64C1180.68 463.055 1180.79 463.395 1181.01 463.657C1181.23 463.92 1181.54 464.049 1181.94 464.049ZM1184.12 464.675C1184.08 464.406 1184.05 464.188 1184.03 464.017C1184.01 463.843 1184 463.67 1184 463.494C1183.76 463.879 1183.46 464.198 1183.08 464.448C1182.71 464.7 1182.29 464.825 1181.83 464.825C1181.19 464.825 1180.69 464.626 1180.34 464.228C1180 463.828 1179.82 463.289 1179.82 462.608C1179.82 461.889 1180.07 461.312 1180.58 460.883C1181.09 460.455 1181.77 460.241 1182.64 460.241H1184V459.288C1184 458.739 1183.86 458.307 1183.58 457.995C1183.3 457.687 1182.92 457.531 1182.42 457.531C1181.95 457.531 1181.57 457.678 1181.27 457.976C1180.97 458.272 1180.83 458.634 1180.83 459.066L1180.02 459.059L1180.01 459.017C1179.98 458.431 1180.21 457.914 1180.67 457.456C1181.14 456.999 1181.73 456.771 1182.46 456.771C1183.18 456.771 1183.76 456.99 1184.2 457.425C1184.64 457.864 1184.86 458.49 1184.86 459.305V463.11C1184.86 463.388 1184.87 463.657 1184.89 463.914C1184.92 464.174 1184.96 464.425 1185.02 464.675H1184.12Z" fill="white"/>
|
||||
<path id="Vector_662" d="M1187.56 456.916L1187.63 458.12C1187.84 457.689 1188.11 457.357 1188.45 457.121C1188.79 456.888 1189.19 456.771 1189.65 456.771C1190.12 456.771 1190.51 456.908 1190.83 457.184C1191.15 457.459 1191.39 457.875 1191.54 458.434C1191.73 457.918 1192 457.51 1192.35 457.215C1192.7 456.919 1193.13 456.771 1193.62 456.771C1194.3 456.771 1194.83 457.047 1195.2 457.598C1195.58 458.15 1195.77 458.997 1195.77 460.142V464.675H1194.9V460.127C1194.9 459.176 1194.77 458.505 1194.51 458.12C1194.25 457.734 1193.89 457.54 1193.41 457.54C1192.91 457.54 1192.51 457.752 1192.23 458.183C1191.95 458.615 1191.78 459.154 1191.71 459.805V460.006V464.675H1190.85V460.132C1190.85 459.203 1190.72 458.538 1190.45 458.14C1190.19 457.743 1189.82 457.546 1189.35 457.546C1188.89 457.546 1188.53 457.684 1188.25 457.958C1187.98 458.233 1187.78 458.61 1187.66 459.089V464.675H1186.8V456.916H1187.56Z" fill="white"/>
|
||||
<path id="Vector_663" d="M1200.07 457.531C1199.53 457.531 1199.09 457.777 1198.74 458.268C1198.39 458.761 1198.21 459.369 1198.2 460.093H1201.78V459.761C1201.78 459.12 1201.63 458.587 1201.33 458.164C1201.03 457.741 1200.61 457.531 1200.07 457.531ZM1200.19 464.825C1199.36 464.825 1198.67 464.51 1198.14 463.882C1197.61 463.255 1197.35 462.452 1197.35 461.475V460.186C1197.35 459.207 1197.61 458.39 1198.14 457.741C1198.68 457.095 1199.32 456.771 1200.07 456.771C1200.88 456.771 1201.51 457.06 1201.96 457.638C1202.41 458.217 1202.64 458.996 1202.64 459.972V460.823H1198.2V461.469C1198.2 462.22 1198.38 462.845 1198.74 463.345C1199.1 463.845 1199.58 464.093 1200.19 464.093C1200.62 464.093 1200.99 464.018 1201.29 463.871C1201.6 463.72 1201.87 463.509 1202.09 463.232L1202.44 463.842C1202.2 464.139 1201.9 464.379 1201.53 464.557C1201.16 464.734 1200.71 464.825 1200.19 464.825Z" fill="white"/>
|
||||
<path id="Vector_664" d="M1209.64 457.531C1209.1 457.531 1208.66 457.777 1208.31 458.268C1207.96 458.761 1207.78 459.369 1207.77 460.093H1211.35V459.761C1211.35 459.12 1211.2 458.587 1210.9 458.164C1210.59 457.741 1210.18 457.531 1209.64 457.531ZM1209.76 464.825C1208.93 464.825 1208.24 464.51 1207.71 463.882C1207.18 463.255 1206.91 462.452 1206.91 461.475V460.186C1206.91 459.207 1207.18 458.39 1207.71 457.741C1208.25 457.095 1208.89 456.771 1209.64 456.771C1210.45 456.771 1211.09 457.06 1211.53 457.638C1211.98 458.217 1212.21 458.996 1212.21 459.972V460.823H1207.77V461.469C1207.77 462.22 1207.95 462.845 1208.31 463.345C1208.66 463.845 1209.15 464.093 1209.76 464.093C1210.19 464.093 1210.56 464.018 1210.86 463.871C1211.17 463.72 1211.44 463.509 1211.66 463.232L1212.01 463.842C1211.77 464.139 1211.47 464.379 1211.1 464.557C1210.73 464.734 1210.28 464.825 1209.76 464.825Z" fill="white"/>
|
||||
<path id="Vector_665" d="M1214.48 456.916L1214.55 458.198C1214.76 457.743 1215.03 457.39 1215.38 457.144C1215.72 456.897 1216.12 456.771 1216.58 456.771C1217.27 456.771 1217.8 457.028 1218.17 457.543C1218.54 458.057 1218.73 458.857 1218.73 459.941V464.675H1217.86V459.949C1217.86 459.063 1217.73 458.443 1217.47 458.084C1217.22 457.725 1216.84 457.546 1216.35 457.546C1215.91 457.546 1215.54 457.689 1215.24 457.98C1214.94 458.268 1214.72 458.652 1214.58 459.137V464.675H1213.71V456.916H1214.48Z" fill="white"/>
|
||||
<path id="Vector_666" d="M1221.26 461.475C1221.26 462.262 1221.41 462.889 1221.71 463.355C1222.01 463.825 1222.46 464.057 1223.07 464.057C1223.49 464.057 1223.84 463.946 1224.12 463.719C1224.41 463.492 1224.64 463.176 1224.81 462.774V458.931C1224.64 458.517 1224.42 458.183 1224.14 457.926C1223.86 457.673 1223.51 457.546 1223.08 457.546C1222.48 457.546 1222.02 457.81 1221.72 458.34C1221.41 458.871 1221.26 459.564 1221.26 460.414V461.475ZM1220.39 460.414C1220.39 459.315 1220.61 458.431 1221.05 457.766C1221.5 457.104 1222.11 456.771 1222.9 456.771C1223.33 456.771 1223.72 456.878 1224.04 457.091C1224.37 457.3 1224.64 457.606 1224.86 457.995L1224.94 456.916H1225.67V464.682C1225.67 465.677 1225.44 466.447 1224.98 466.993C1224.51 467.536 1223.86 467.811 1223.01 467.811C1222.7 467.811 1222.37 467.763 1222.02 467.67C1221.67 467.577 1221.36 467.455 1221.08 467.301L1221.32 466.545C1221.55 466.696 1221.81 466.813 1222.1 466.896C1222.39 466.981 1222.68 467.021 1222.99 467.021C1223.61 467.021 1224.06 466.823 1224.36 466.428C1224.66 466.028 1224.81 465.449 1224.81 464.682V463.744C1224.59 464.093 1224.32 464.361 1223.99 464.546C1223.68 464.732 1223.3 464.825 1222.88 464.825C1222.1 464.825 1221.49 464.52 1221.05 463.91C1220.61 463.301 1220.39 462.488 1220.39 461.475V460.414Z" fill="white"/>
|
||||
<path id="Vector_667" d="M1228.57 464.675H1227.7V456.916H1228.57V464.675ZM1228.57 454.706H1227.7V453.484H1228.57V454.706Z" fill="white"/>
|
||||
<path id="Vector_668" d="M1231.38 456.916L1231.45 458.198C1231.65 457.743 1231.93 457.39 1232.27 457.144C1232.61 456.897 1233.01 456.771 1233.47 456.771C1234.16 456.771 1234.7 457.028 1235.07 457.543C1235.44 458.057 1235.62 458.857 1235.62 459.941V464.675H1234.76V459.949C1234.76 459.063 1234.63 458.443 1234.37 458.084C1234.11 457.725 1233.73 457.546 1233.24 457.546C1232.8 457.546 1232.43 457.689 1232.14 457.98C1231.84 458.268 1231.62 458.652 1231.47 459.137V464.675H1230.61V456.916H1231.38Z" fill="white"/>
|
||||
<path id="Vector_669" d="M1239.94 457.531C1239.4 457.531 1238.96 457.777 1238.61 458.268C1238.26 458.761 1238.08 459.369 1238.07 460.093H1241.65V459.761C1241.65 459.12 1241.5 458.587 1241.2 458.164C1240.9 457.741 1240.48 457.531 1239.94 457.531ZM1240.06 464.825C1239.23 464.825 1238.54 464.51 1238.01 463.882C1237.48 463.255 1237.22 462.452 1237.22 461.475V460.186C1237.22 459.207 1237.48 458.39 1238.02 457.741C1238.55 457.095 1239.19 456.771 1239.94 456.771C1240.75 456.771 1241.39 457.06 1241.84 457.638C1242.29 458.217 1242.51 458.996 1242.51 459.972V460.823H1238.07V461.469C1238.07 462.22 1238.25 462.845 1238.61 463.345C1238.97 463.845 1239.45 464.093 1240.06 464.093C1240.49 464.093 1240.86 464.018 1241.16 463.871C1241.47 463.72 1241.74 463.509 1241.96 463.232L1242.31 463.842C1242.07 464.139 1241.77 464.379 1241.4 464.557C1241.03 464.734 1240.59 464.825 1240.06 464.825Z" fill="white"/>
|
||||
</g>
|
||||
<path id="Vector_670" d="M1115.66 407.465C1112.53 408.16 1109.44 409.128 1106.54 410.588C1106.6 413.148 1106.77 415.601 1107.11 418.093C1105.98 418.815 1104.8 419.434 1103.74 420.279C1102.68 421.101 1101.58 421.887 1100.62 422.849C1098.68 421.57 1096.64 420.368 1094.53 419.308C1092.26 421.753 1090.13 424.392 1088.4 427.346C1089.76 429.487 1091.22 431.639 1092.58 433.317V447.904V449.757V451.443C1092.61 451.443 1092.64 451.444 1092.68 451.447L1103.79 452.519C1104.37 452.575 1104.83 453.044 1104.87 453.627L1105.21 458.532L1114.91 459.224L1115.57 454.697C1115.66 454.11 1116.16 453.674 1116.76 453.674H1128.48C1129.07 453.674 1129.58 454.11 1129.66 454.697L1130.33 459.224L1140.03 458.532L1140.37 453.627C1140.41 453.044 1140.86 452.575 1141.45 452.519L1152.55 451.447C1152.59 451.444 1152.62 451.443 1152.65 451.443V449.997L1152.66 449.995V433.317C1154.22 431.347 1155.7 429.174 1156.84 427.346C1155.11 424.392 1152.98 421.753 1150.71 419.308C1148.6 420.368 1146.55 421.57 1144.62 422.849C1143.65 421.887 1142.56 421.101 1141.49 420.279C1140.44 419.434 1139.26 418.815 1138.13 418.093C1138.47 415.601 1138.63 413.148 1138.7 410.588C1135.8 409.128 1132.71 408.16 1129.58 407.465C1128.33 409.564 1127.19 411.838 1126.19 414.06C1125.01 413.863 1123.83 413.79 1122.64 413.775V413.773C1122.63 413.773 1122.63 413.775 1122.62 413.775C1122.61 413.775 1122.6 413.773 1122.6 413.773V413.775C1121.41 413.79 1120.22 413.863 1119.04 414.06C1118.05 411.838 1116.91 409.564 1115.66 407.465ZM1106.87 433.982C1110.56 433.982 1113.56 436.977 1113.56 440.675C1113.56 444.375 1110.56 447.372 1106.87 447.372C1103.17 447.372 1100.17 444.375 1100.17 440.675C1100.17 436.977 1103.17 433.982 1106.87 433.982ZM1138.37 433.982C1142.07 433.982 1145.07 436.977 1145.07 440.675C1145.07 444.375 1142.07 447.372 1138.37 447.372C1134.67 447.372 1131.67 444.375 1131.67 440.675C1131.67 436.977 1134.67 433.982 1138.37 433.982ZM1122.62 437.898C1123.81 437.898 1124.78 438.777 1124.78 439.857V446.022C1124.78 447.104 1123.81 447.981 1122.62 447.981C1121.43 447.981 1120.46 447.104 1120.46 446.022V439.857C1120.46 438.777 1121.43 437.898 1122.62 437.898Z" fill="white"/>
|
||||
<g id="Group_12">
|
||||
<path id="Vector_671" d="M1142.68 454.804L1142.34 459.736C1142.3 460.33 1141.83 460.803 1141.23 460.846L1129.4 461.69C1129.37 461.692 1129.34 461.693 1129.31 461.693C1128.72 461.693 1128.21 461.262 1128.13 460.671L1127.45 456.068H1117.79L1117.11 460.671C1117.02 461.291 1116.47 461.736 1115.84 461.69L1104.01 460.846C1103.41 460.803 1102.94 460.33 1102.9 459.736L1102.55 454.804L1092.56 453.841C1092.56 454.915 1092.58 456.091 1092.58 456.325C1092.58 466.878 1105.97 471.951 1122.6 472.009H1122.62H1122.64C1139.27 471.951 1152.65 466.878 1152.65 456.325C1152.65 456.087 1152.67 454.915 1152.67 453.841L1142.68 454.804Z" fill="white"/>
|
||||
<path id="Vector_672" d="M1111.95 441.072C1111.95 443.526 1109.96 445.515 1107.51 445.515C1105.05 445.515 1103.06 443.526 1103.06 441.072C1103.06 438.618 1105.05 436.627 1107.51 436.627C1109.96 436.627 1111.95 438.618 1111.95 441.072Z" fill="white"/>
|
||||
<path id="Vector_673" d="M1133.29 441.072C1133.29 443.526 1135.27 445.515 1137.73 445.515C1140.19 445.515 1142.17 443.526 1142.17 441.072C1142.17 438.618 1140.19 436.627 1137.73 436.627C1135.27 436.627 1133.29 438.618 1133.29 441.072Z" fill="white"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Main">
|
||||
<g id="Clyde – <3">
|
||||
<path id="Vector_674" d="M683.79 299.304C682.867 296.219 681.094 293.456 678.676 291.33C676.257 289.205 673.29 287.801 670.112 287.281C646.097 283.313 621.442 287.207 599.819 298.383C596.944 299.846 594.538 302.089 592.879 304.855C591.219 307.621 590.372 310.799 590.434 314.025C590.655 324.69 592.326 335.276 595.403 345.491C596.347 348.569 598.135 351.321 600.563 353.435C602.992 355.549 605.964 356.94 609.142 357.452C633.151 361.477 657.817 357.603 679.435 346.411C682.31 344.932 684.714 342.677 686.372 339.901C688.031 337.126 688.879 333.941 688.82 330.708C688.684 325.389 688.213 320.083 687.409 314.822C686.57 309.57 685.36 304.385 683.79 299.304V299.304Z" fill="url(#paint7_linear_6_63)"/>
|
||||
<path id="Vector_675" d="M678.576 302.738C677.97 300.565 676.751 298.611 675.066 297.11C673.38 295.609 671.298 294.625 669.069 294.274C660.853 293.097 652.498 293.304 644.35 294.887C636.102 296.537 628.184 299.543 620.919 303.781C618.927 304.959 617.29 306.651 616.178 308.68C615.066 310.709 614.521 313 614.601 315.313C614.731 319.173 615.079 323.023 615.644 326.844C616.256 330.638 617.117 334.388 618.22 338.069C618.819 340.23 620.029 342.172 621.705 343.663C623.38 345.153 625.45 346.129 627.666 346.472C635.901 347.68 644.282 347.473 652.447 345.859C660.668 344.216 668.564 341.232 675.816 337.026C677.824 335.847 679.477 334.147 680.599 332.107C681.722 330.066 682.273 327.761 682.195 325.433C682.073 321.59 681.704 317.759 681.091 313.963C680.502 310.17 679.662 306.42 678.576 302.738V302.738Z" fill="#FF5D12"/>
|
||||
<path id="Vector_676" d="M676.675 304.762C676.065 302.589 674.856 300.631 673.185 299.112C671.515 297.594 669.451 296.576 667.229 296.175C659.01 294.893 650.634 294.997 642.449 296.482C634.128 298.052 626.127 300.995 618.772 305.192C616.746 306.366 615.08 308.073 613.955 310.128C612.831 312.183 612.29 314.506 612.393 316.846C612.505 320.774 612.895 324.689 613.559 328.561C614.167 332.402 615.048 336.194 616.196 339.909C616.809 342.107 618.045 344.08 619.753 345.593C621.461 347.105 623.57 348.092 625.826 348.435C634.102 349.646 642.523 349.438 650.729 347.821C658.938 346.201 666.817 343.215 674.038 338.989C676.006 337.811 677.62 336.123 678.711 334.105C679.801 332.086 680.327 329.811 680.233 327.519C680.161 323.655 679.813 319.801 679.19 315.987C678.569 312.2 677.73 308.452 676.675 304.762V304.762Z" fill="black"/>
|
||||
<path id="Vector_677" d="M600.702 347.11C605.322 345.653 607.201 338.553 604.899 331.251C602.597 323.95 596.985 319.211 592.365 320.668C587.745 322.125 585.866 329.225 588.168 336.526C590.471 343.828 596.082 348.566 600.702 347.11Z" fill="#FFE75C"/>
|
||||
<path id="Vector_678" d="M614.601 292.004C619.999 290.348 624.109 288.692 629.629 290.287C632.205 291.084 634.659 291.514 646.252 289.551C652.815 288.386 652.201 286.3 651.833 284.153C651.22 280.841 644.534 279.798 628.586 282.681C612.638 285.564 614.601 292.004 614.601 292.004Z" fill="url(#paint8_linear_6_63)"/>
|
||||
<g id="Frame">
|
||||
<path id="Vector_679" d="M652.056 325.976L642.239 328.242L641.673 325.788L651.49 323.522L652.056 325.976ZM655.831 319.934L641.106 323.334L640.539 320.88L655.265 317.48L655.831 319.934ZM654.698 315.026L639.973 318.425L639.406 315.971L654.132 312.572L654.698 315.026ZM655.18 307.159L636.092 311.566C634.578 311.916 633.645 313.409 633.994 314.923L638.401 334.011C638.749 335.517 640.252 336.456 641.758 336.109L660.846 331.702C662.352 331.354 663.291 329.851 662.943 328.345L658.536 309.257C658.187 307.743 656.68 306.813 655.18 307.159Z" fill="#57F287"/>
|
||||
</g>
|
||||
</g>
|
||||
<path id="GAME SDK" d="M752.247 357.112C743.031 357.112 735.063 355.608 728.343 352.6C721.687 349.528 716.567 345.304 712.983 339.928C709.463 334.552 707.703 328.408 707.703 321.496C707.703 314.776 709.431 308.728 712.887 303.352C716.343 297.912 721.623 293.624 728.727 290.488C735.831 287.288 744.567 285.688 754.935 285.688C761.271 285.688 767.031 286.232 772.215 287.32C777.399 288.408 782.103 289.88 786.327 291.736V311.416C782.999 309.944 779.159 308.76 774.807 307.864C770.519 306.968 765.911 306.52 760.983 306.52C754.775 306.52 749.687 307.256 745.719 308.728C741.815 310.2 738.935 312.152 737.079 314.584C735.287 316.952 734.391 319.64 734.391 322.648C734.391 325.592 735.159 328.184 736.695 330.424C738.295 332.6 740.503 334.296 743.319 335.512C746.199 336.728 749.623 337.336 753.591 337.336C756.983 337.336 759.895 336.92 762.327 336.088C764.823 335.256 766.775 334.008 768.183 332.344C769.591 330.68 770.391 328.696 770.583 326.392L773.175 330.04H743.031L747.159 314.2H792.375V323.128C792.375 330.488 790.743 336.728 787.479 341.848C784.215 346.904 779.575 350.712 773.559 353.272C767.543 355.832 760.439 357.112 752.247 357.112ZM792.95 355L816.182 287.8H853.238L876.374 355H850.454L832.502 297.88H836.15L818.102 355H792.95ZM816.47 342.712V328.888H853.91V342.712H816.47ZM880.607 355L884.735 287.8H922.079L935.135 332.152H930.335L943.679 287.8H980.831L985.823 355H961.151L957.311 296.344L961.535 296.44L944.447 355H918.815L902.303 296.44L906.911 296.344L903.647 355H880.607ZM995.777 355V287.8H1021.31V355H995.777ZM1010.47 355V337.336H1059.33V355H1010.47ZM1010.47 328.792V313.24H1057.22V328.792H1010.47ZM1010.47 305.464V287.8H1059.04V305.464H1010.47ZM1126.45 357.016C1119.86 357.016 1113.72 356.248 1108.02 354.712C1102.39 353.176 1097.46 351.096 1093.24 348.472V330.712C1095.99 332.44 1099 333.976 1102.26 335.32C1105.53 336.6 1108.98 337.592 1112.63 338.296C1116.28 339 1119.89 339.352 1123.48 339.352C1127.13 339.352 1129.81 339.032 1131.54 338.392C1133.27 337.752 1134.13 336.728 1134.13 335.32C1134.13 334.04 1133.53 333.048 1132.31 332.344C1131.09 331.576 1128.95 330.936 1125.88 330.424L1116.37 328.792C1108.25 327.448 1102.26 325.048 1098.42 321.592C1094.58 318.072 1092.66 313.464 1092.66 307.768C1092.66 303.352 1093.94 299.512 1096.5 296.248C1099.13 292.92 1103.09 290.36 1108.41 288.568C1113.72 286.712 1120.31 285.784 1128.18 285.784C1134.77 285.784 1140.47 286.456 1145.27 287.8C1150.07 289.08 1154.04 290.616 1157.17 292.408V309.592C1154.29 307.992 1150.61 306.648 1146.13 305.56C1141.72 304.408 1136.89 303.832 1131.64 303.832C1127.41 303.832 1124.34 304.184 1122.42 304.888C1120.57 305.528 1119.64 306.456 1119.64 307.672C1119.64 308.696 1120.15 309.496 1121.17 310.072C1122.26 310.584 1124.31 311.064 1127.32 311.512L1137.88 313.144C1145.81 314.36 1151.7 316.6 1155.54 319.864C1159.38 323.064 1161.3 327.672 1161.3 333.688C1161.3 338.36 1159.83 342.488 1156.89 346.072C1154.01 349.592 1149.94 352.312 1144.69 354.232C1139.45 356.088 1133.37 357.016 1126.45 357.016ZM1170.15 355V287.8H1208.46C1217.61 287.8 1225.35 289.208 1231.69 292.024C1238.09 294.84 1242.86 298.776 1245.99 303.832C1249.13 308.824 1250.7 314.552 1250.7 321.016C1250.7 327.288 1249.06 333.016 1245.8 338.2C1242.54 343.32 1237.54 347.416 1230.82 350.488C1224.1 353.496 1215.75 355 1205.77 355H1170.15ZM1205.29 337.336C1209.13 337.336 1212.39 336.664 1215.08 335.32C1217.77 333.976 1219.78 332.088 1221.13 329.656C1222.54 327.16 1223.24 324.248 1223.24 320.92C1223.24 317.848 1222.63 315.16 1221.42 312.856C1220.26 310.552 1218.44 308.76 1215.94 307.48C1213.51 306.136 1210.41 305.464 1206.63 305.464H1195.69V337.336H1205.29ZM1307.59 355L1281.38 317.944L1308.26 287.8H1338.69L1308.55 320.152L1308.64 314.776L1338.98 355H1307.59ZM1259.68 355V287.8H1285.22V355H1259.68Z" fill="white"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_6_63" x1="229.097" y1="156.412" x2="-22.3103" y2="146.856" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#9CB5F7"/>
|
||||
<stop offset="0.85" stop-color="#A37ECD" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_6_63" x1="1915.76" y1="287.256" x2="1915.76" y2="436.107" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#E8827D"/>
|
||||
<stop offset="1" stop-color="#E2A395"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_6_63" x1="118.135" y1="525.179" x2="118.135" y2="650.34" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#E8827D"/>
|
||||
<stop offset="1" stop-color="#E2A395"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_6_63" x1="75.1182" y1="337.213" x2="61.9492" y2="371.125" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFC285"/>
|
||||
<stop offset="1" stop-color="#DB8D6B"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_6_63" x1="31.4158" y1="357.121" x2="104.154" y2="357.121" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D67569"/>
|
||||
<stop offset="1" stop-color="#E39E7F"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_6_63" x1="139.545" y1="406.156" x2="155.094" y2="402.457" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#61C7C7"/>
|
||||
<stop offset="1" stop-color="#54B9C7"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_6_63" x1="8065.89" y1="2360.09" x2="8220.82" y2="2360.09" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#61C7C7"/>
|
||||
<stop offset="1" stop-color="#54B9C7"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_6_63" x1="634.628" y1="281.338" x2="644.295" y2="360.85" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFC618"/>
|
||||
<stop offset="0.31" stop-color="#FFAD19"/>
|
||||
<stop offset="1" stop-color="#FF7D12"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_6_63" x1="27955.8" y1="-18095.7" x2="30245.7" y2="-18095.7" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#66BCFF"/>
|
||||
<stop offset="1" stop-color="#8CD9FF"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_6_63">
|
||||
<rect width="1920" height="640" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_6_63">
|
||||
<rect width="615" height="435" fill="white" transform="translate(1305 205)"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip2_6_63">
|
||||
<rect width="635" height="306" fill="white" transform="translate(0 334)"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip3_6_63">
|
||||
<rect width="307.625" height="84.2808" fill="white" transform="translate(633 397.5)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
Before Width: | Height: | Size: 197 KiB |
Before Width: | Height: | Size: 158 KiB |
BIN
project/assets/discordgodot_banner.png
Normal file
After Width: | Height: | Size: 167 KiB |
@@ -2,16 +2,16 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c0i5gy8pvdnwt"
|
||||
path="res://.godot/imported/Banner.svg-5bd63979daa8dcc3afce0089ffa91a12.ctex"
|
||||
uid="uid://c7h7lup1lw58j"
|
||||
path="res://.godot/imported/discordgodot_banner.png-eb84eabd38610228ef9dc43dbd0407a1.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/Banner.svg"
|
||||
dest_files=["res://.godot/imported/Banner.svg-5bd63979daa8dcc3afce0089ffa91a12.ctex"]
|
||||
source_file="res://assets/discordgodot_banner.png"
|
||||
dest_files=["res://.godot/imported/discordgodot_banner.png-eb84eabd38610228ef9dc43dbd0407a1.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
@@ -32,6 +32,3 @@ process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
BIN
project/assets/discordgodot_cover.png
Normal file
After Width: | Height: | Size: 27 KiB |
@@ -2,16 +2,16 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bwdma28ey44h0"
|
||||
path="res://.godot/imported/Banner_v1.png-5ed14d0906a04274d823c02cd90d1aad.ctex"
|
||||
uid="uid://dumc28wi63nnc"
|
||||
path="res://.godot/imported/discordgodot_cover.png-5ee32fcd652e9995745e14429baed069.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/Banner_v1.png"
|
||||
dest_files=["res://.godot/imported/Banner_v1.png-5ed14d0906a04274d823c02cd90d1aad.ctex"]
|
||||
source_file="res://assets/discordgodot_cover.png"
|
||||
dest_files=["res://.godot/imported/discordgodot_cover.png-5ee32fcd652e9995745e14429baed069.ctex"]
|
||||
|
||||
[params]
|
||||
|
@@ -8,7 +8,7 @@ custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="export/windows/discord-sdk-godot-demo.exe"
|
||||
export_path="export/windows/discord-rpc-godot-demo.exe"
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
encrypt_pck=false
|
||||
@@ -39,7 +39,7 @@ application/file_version=""
|
||||
application/product_version=""
|
||||
application/company_name=""
|
||||
application/product_name=""
|
||||
application/file_description="Discord SDK Godot Test"
|
||||
application/file_description="Discord RPC Godot Test"
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
application/export_angle=0
|
||||
@@ -71,7 +71,7 @@ custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="export/linux/discord-sdk-godot-demo.x86_64"
|
||||
export_path="export/linux/discord-rpc-godot-demo.x86_64"
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
encrypt_pck=false
|
||||
@@ -111,7 +111,7 @@ custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="export/macos/discord-sdk-godot-demo.zip"
|
||||
export_path="export/macos/discord-rpc-godot-demo.zip"
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
encrypt_pck=false
|
||||
@@ -126,7 +126,7 @@ custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
application/icon=""
|
||||
application/icon_interpolation=4
|
||||
application/bundle_identifier="com.vaporvee.discord-sdk-godot-demo"
|
||||
application/bundle_identifier="com.vaporvee.discord-rpc-godot-demo"
|
||||
application/signature=""
|
||||
application/app_category="Games"
|
||||
application/short_version=""
|
||||
|
@@ -2,40 +2,40 @@ extends Node
|
||||
|
||||
func _ready() -> void:
|
||||
set_activity()
|
||||
DiscordSDK.connect("activity_join_request",_on_activity_join_request)
|
||||
DiscordSDK.connect("activity_join",_on_activity_join)
|
||||
DiscordSDK.connect("activity_spectate",_on_activity_spectate)
|
||||
DiscordSDK.connect("relationships_init",_on_relationship_init)
|
||||
DiscordSDK.connect("updated_relationship", _on_updated_relationship)
|
||||
DiscordRPC.connect("activity_join_request",_on_activity_join_request)
|
||||
DiscordRPC.connect("activity_join",_on_activity_join)
|
||||
DiscordRPC.connect("activity_spectate",_on_activity_spectate)
|
||||
DiscordRPC.connect("relationships_init",_on_relationship_init)
|
||||
DiscordRPC.connect("updated_relationship", _on_updated_relationship)
|
||||
|
||||
func set_activity() -> void:
|
||||
DiscordSDK.clear(false)
|
||||
DiscordSDK.app_id = 1099618430065324082
|
||||
DiscordSDK.details = "A demo activity by vaporvee#1231"
|
||||
DiscordSDK.state = "Checkpoint 23/23"
|
||||
DiscordRPC.clear(false)
|
||||
DiscordRPC.app_id = 1099618430065324082
|
||||
DiscordRPC.details = "A demo activity by vaporvee#1231"
|
||||
DiscordRPC.state = "Checkpoint 23/23"
|
||||
|
||||
DiscordSDK.large_image = "example_game"
|
||||
DiscordSDK.large_image_text = "Try it now!"
|
||||
DiscordSDK.small_image = "boss"
|
||||
DiscordSDK.small_image_text = "Fighting the end boss! D:"
|
||||
DiscordSDK.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time
|
||||
DiscordRPC.large_image = "example_game"
|
||||
DiscordRPC.large_image_text = "Try it now!"
|
||||
DiscordRPC.small_image = "boss"
|
||||
DiscordRPC.small_image_text = "Fighting the end boss! D:"
|
||||
DiscordRPC.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time
|
||||
|
||||
# It is NOT recommended to manage secrets locally! It's meant to be a payload wich the server understands and
|
||||
# returns the other variables like current_party_size, party_id etc. Most of the values must differ from the others.
|
||||
var my_secret: String = str(randi_range(0,999999))
|
||||
|
||||
DiscordSDK.party_id = "mylobbycanbeeverything_" + my_secret
|
||||
DiscordSDK.current_party_size = 1
|
||||
DiscordSDK.max_party_size = 4
|
||||
DiscordSDK.match_secret = "m_" + my_secret #better use seeds with 1 to 1 range instead of just chars
|
||||
DiscordSDK.join_secret = "j_" + my_secret
|
||||
DiscordSDK.spectate_secret = "s_" + my_secret
|
||||
DiscordSDK.is_public_party = true
|
||||
DiscordSDK.instanced = true #required for spectate
|
||||
#DiscordSDK.start_timestamp = int(Time.get_unix_time_from_system())
|
||||
DiscordSDK.register_command("C:\\Users\\yanni\\Desktop\\demo\\DiscordSDK.exe")
|
||||
#DiscordSDK.register_steam(1389990)
|
||||
DiscordSDK.refresh()
|
||||
DiscordRPC.party_id = "mylobbycanbeeverything_" + my_secret
|
||||
DiscordRPC.current_party_size = 1
|
||||
DiscordRPC.max_party_size = 4
|
||||
DiscordRPC.match_secret = "m_" + my_secret #better use seeds with 1 to 1 range instead of just chars
|
||||
DiscordRPC.join_secret = "j_" + my_secret
|
||||
DiscordRPC.spectate_secret = "s_" + my_secret
|
||||
DiscordRPC.is_public_party = true
|
||||
DiscordRPC.instanced = true #required for spectate
|
||||
#DiscordRPC.start_timestamp = int(Time.get_unix_time_from_system())
|
||||
DiscordRPC.register_command("C:\\Users\\yanni\\Desktop\\demo\\DiscordRPC.exe")
|
||||
#DiscordRPC.register_steam(1389990)
|
||||
DiscordRPC.refresh()
|
||||
|
||||
var user_request: Dictionary;
|
||||
|
||||
@@ -44,13 +44,13 @@ func _on_activity_join_request(user_requesting) -> void:
|
||||
user_request = user_requesting
|
||||
|
||||
func _on_activity_join(secret) -> void:
|
||||
if(DiscordSDK.join_secret != secret):
|
||||
DiscordSDK.current_party_size = clamp(int(secret) + 1, 0, DiscordSDK.max_party_size)
|
||||
DiscordSDK.party_id = secret.replace("j_","mylobbycanbeeverything_")
|
||||
DiscordSDK.match_secret = secret.replace("j_","m_")
|
||||
DiscordSDK.join_secret = secret
|
||||
DiscordSDK.spectate_secret = secret.replace("j_","s_")
|
||||
DiscordSDK.refresh()
|
||||
if(DiscordRPC.join_secret != secret):
|
||||
DiscordRPC.current_party_size = clamp(int(secret) + 1, 0, DiscordRPC.max_party_size)
|
||||
DiscordRPC.party_id = secret.replace("j_","mylobbycanbeeverything_")
|
||||
DiscordRPC.match_secret = secret.replace("j_","m_")
|
||||
DiscordRPC.join_secret = secret
|
||||
DiscordRPC.spectate_secret = secret.replace("j_","s_")
|
||||
DiscordRPC.refresh()
|
||||
|
||||
func _on_activity_spectate(secret) -> void:
|
||||
print(secret)
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
[ext_resource type="Script" path="res://main.gd" id="1_kl8ri"]
|
||||
[ext_resource type="Texture2D" uid="uid://b3qm246m7pnsx" path="res://assets/Logo_V2.png" id="2_gd222"]
|
||||
[ext_resource type="Script" path="res://addons/discord-sdk-gd/nodes/debug.gd" id="6_ujijw"]
|
||||
[ext_resource type="Script" path="res://addons/discord-rpc-gd/nodes/debug.gd" id="6_ujijw"]
|
||||
|
||||
[node name="Node" type="Node"]
|
||||
script = ExtResource("1_kl8ri")
|
||||
@@ -23,7 +23,7 @@ position = Vector2(789, 330.5)
|
||||
scale = Vector2(0.408203, 0.408203)
|
||||
texture = ExtResource("2_gd222")
|
||||
|
||||
[node name="DiscordSDK Test" type="RichTextLabel" parent="."]
|
||||
[node name="DiscordRPC Test" type="RichTextLabel" parent="."]
|
||||
anchors_preset = -1
|
||||
anchor_left = 0.293
|
||||
anchor_top = 0.59
|
||||
@@ -38,7 +38,7 @@ grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
bbcode_enabled = true
|
||||
text = "[center][font s=60]DiscordSDK Test"
|
||||
text = "[center][font s=60]DiscordRPC Test"
|
||||
|
||||
[node name="DiscordSDKDebug" type="Node" parent="."]
|
||||
[node name="DiscordRPCDebug" type="Node" parent="."]
|
||||
script = ExtResource("6_ujijw")
|
||||
|
@@ -10,18 +10,18 @@ config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="GDExtension DiscordSDK Test Project"
|
||||
config/name="GDExtension DiscordRPC Test Project"
|
||||
config/tags=PackedStringArray("vaporvee")
|
||||
run/main_scene="res://main.tscn"
|
||||
config/features=PackedStringArray("4.2")
|
||||
boot_splash/bg_color=Color(0.25098, 0.305882, 0.929412, 1)
|
||||
boot_splash/image="res://assets/Banner_v1.png"
|
||||
boot_splash/image="res://assets/discordgodot_cover.png"
|
||||
boot_splash/fullsize=false
|
||||
config/icon="res://assets/Logo_V2.png"
|
||||
|
||||
[autoload]
|
||||
|
||||
DiscordSDKLoader="*res://addons/discord-sdk-gd/nodes/discord_autoload.gd"
|
||||
DiscordRPCLoader="*res://addons/discord-rpc-gd/nodes/discord_autoload.gd"
|
||||
|
||||
[display]
|
||||
|
||||
@@ -33,7 +33,7 @@ project/assembly_name="GDExtension Test Project"
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PackedStringArray("res://addons/discord-sdk-gd/plugin.cfg")
|
||||
enabled=PackedStringArray("res://addons/discord-rpc-gd/plugin.cfg")
|
||||
|
||||
[filesystem]
|
||||
|
||||
|
14
release.py
@@ -2,21 +2,21 @@ import os
|
||||
import shutil
|
||||
from distutils.dir_util import copy_tree
|
||||
|
||||
win_folder_path = "project/addons/discord-sdk-gd/bin/windows"
|
||||
win_folder_path = "project/addons/discord-rpc-gd/bin/windows"
|
||||
|
||||
matching_files = [file for file in os.listdir(win_folder_path) if file.endswith(("TMP", "exp", "lib"))]
|
||||
for file in matching_files:
|
||||
file_path = os.path.join(win_folder_path, file)
|
||||
os.remove(file_path)
|
||||
|
||||
if os.path.exists("release/ADDON-Discord-SDK-Godot/addons"):
|
||||
shutil.rmtree("release/ADDON-Discord-SDK-Godot/addons", ignore_errors=True)
|
||||
if os.path.exists("release/ADDON-Discord-RPC-Godot/addons"):
|
||||
shutil.rmtree("release/ADDON-Discord-RPC-Godot/addons", ignore_errors=True)
|
||||
|
||||
copy_tree("project/addons/", "release/temp/ADDON-Discord-SDK-Godot/addons")
|
||||
copy_tree("project/addons/", "release/temp/ADDON-Discord-RPC-Godot/addons")
|
||||
|
||||
open("release/temp/ADDON-Discord-SDK-Godot/addons/discord-sdk-gd/bin/.gdignore", "a").close()
|
||||
open("release/temp/ADDON-Discord-RPC-Godot/addons/discord-RPC-gd/bin/.gdignore", "a").close()
|
||||
|
||||
shutil.make_archive('release/ADDON-Discord-SDK-Godot', 'zip', 'release/temp/')
|
||||
shutil.make_archive('release/ADDON-Discord-RPC-Godot', 'zip', 'release/temp/')
|
||||
|
||||
shutil.rmtree("release/temp/")
|
||||
# Export Demos
|
||||
@@ -34,4 +34,4 @@ shutil.make_archive('release/Demo-Export', 'zip', temp_dir)
|
||||
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
print("ADDON-Discord-SDK-Godot.zip and Demo-Export.zip have been created successfully.")
|
||||
print("ADDON-Discord-RPC-Godot.zip and Demo-Export.zip have been created successfully.")
|
||||
|
@@ -3,27 +3,27 @@
|
||||
#include <godot_cpp/core/class_db.hpp>
|
||||
#include <godot_cpp/variant/utility_functions.hpp>
|
||||
|
||||
#define BIND_METHOD(method, ...) godot::ClassDB::bind_method(D_METHOD(#method, ##__VA_ARGS__), &DiscordSDK::method)
|
||||
#define BIND_METHOD(method, ...) godot::ClassDB::bind_method(D_METHOD(#method, ##__VA_ARGS__), &DiscordRPC::method)
|
||||
#define BIND_SET_GET(property_name, variant_type) \
|
||||
godot::ClassDB::bind_method(D_METHOD("get_" #property_name), &DiscordSDK::get_##property_name); \
|
||||
godot::ClassDB::bind_method(D_METHOD("set_" #property_name, #variant_type), &DiscordSDK::set_##property_name); \
|
||||
godot::ClassDB::bind_method(D_METHOD("get_" #property_name), &DiscordRPC::get_##property_name); \
|
||||
godot::ClassDB::bind_method(D_METHOD("set_" #property_name, #variant_type), &DiscordRPC::set_##property_name); \
|
||||
godot::ClassDB::add_property(get_class_static(), PropertyInfo(variant_type, #property_name), "set_" #property_name, "get_" #property_name)
|
||||
#define BIND_SIGNAL(signal_name, ...) godot::ClassDB::add_signal(get_class_static(), MethodInfo(#signal_name, ##__VA_ARGS__))
|
||||
#define SET_GET(variable, setter, ...) /*getter isn't mandatory for this project*/ \
|
||||
decltype(DiscordSDK::variable) DiscordSDK::get_##variable() { return variable; } \
|
||||
void DiscordSDK::set_##variable(decltype(DiscordSDK::variable) value) \
|
||||
decltype(DiscordRPC::variable) DiscordRPC::get_##variable() { return variable; } \
|
||||
void DiscordRPC::set_##variable(decltype(DiscordRPC::variable) value) \
|
||||
{ \
|
||||
variable = value; \
|
||||
setter; \
|
||||
}
|
||||
|
||||
DiscordSDK *DiscordSDK::singleton = nullptr;
|
||||
DiscordRPC *DiscordRPC::singleton = nullptr;
|
||||
discord::Core *core{};
|
||||
discord::Result result;
|
||||
discord::Activity activity{};
|
||||
discord::User user{};
|
||||
|
||||
void DiscordSDK::_bind_methods()
|
||||
void DiscordRPC::_bind_methods()
|
||||
{
|
||||
BIND_SET_GET(app_id, Variant::INT);
|
||||
BIND_SET_GET(state, Variant::STRING);
|
||||
@@ -51,7 +51,7 @@ void DiscordSDK::_bind_methods()
|
||||
BIND_METHOD(debug);
|
||||
BIND_METHOD(run_callbacks);
|
||||
BIND_METHOD(refresh);
|
||||
ClassDB::bind_method(D_METHOD("clear", "reset_values"), &DiscordSDK::clear, DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("clear", "reset_values"), &DiscordRPC::clear, DEFVAL(false));
|
||||
BIND_METHOD(unclear);
|
||||
BIND_METHOD(register_command, "command");
|
||||
BIND_METHOD(register_steam, "steam_id");
|
||||
@@ -85,13 +85,13 @@ SET_GET(spectate_secret, activity.GetSecrets().SetSpectate(value.utf8().get_data
|
||||
SET_GET(instanced, activity.SetInstance(value))
|
||||
SET_GET(is_public_party, activity.GetParty().SetPrivacy(static_cast<discord::ActivityPartyPrivacy>(value)))
|
||||
|
||||
DiscordSDK::DiscordSDK()
|
||||
DiscordRPC::DiscordRPC()
|
||||
{
|
||||
ERR_FAIL_COND(singleton != nullptr);
|
||||
singleton = this;
|
||||
}
|
||||
|
||||
DiscordSDK::~DiscordSDK()
|
||||
DiscordRPC::~DiscordRPC()
|
||||
{
|
||||
app_id = 0;
|
||||
delete core; // couldn't use destructor because it would not compile on linux
|
||||
@@ -100,17 +100,17 @@ DiscordSDK::~DiscordSDK()
|
||||
singleton = nullptr;
|
||||
}
|
||||
|
||||
DiscordSDK *DiscordSDK::get_singleton()
|
||||
DiscordRPC *DiscordRPC::get_singleton()
|
||||
{
|
||||
return singleton;
|
||||
}
|
||||
|
||||
void DiscordSDK::run_callbacks()
|
||||
void DiscordRPC::run_callbacks()
|
||||
{
|
||||
if (result == discord::Result::Ok && app_id > 0)
|
||||
::core->RunCallbacks();
|
||||
}
|
||||
void DiscordSDK::debug()
|
||||
void DiscordRPC::debug()
|
||||
{
|
||||
result = discord::Core::Create(1080224638845591692, DiscordCreateFlags_NoRequireDiscord, &core);
|
||||
activity.SetState("Test from Godot!");
|
||||
@@ -128,7 +128,7 @@ void DiscordSDK::debug()
|
||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
||||
}
|
||||
|
||||
void DiscordSDK::set_app_id(int64_t value)
|
||||
void DiscordRPC::set_app_id(int64_t value)
|
||||
{
|
||||
app_id = value;
|
||||
if (app_id > 0)
|
||||
@@ -143,34 +143,34 @@ void DiscordSDK::set_app_id(int64_t value)
|
||||
core->UserManager().GetCurrentUser(&user); });
|
||||
// signals
|
||||
core->ActivityManager().OnActivityJoin.Connect([](const char *secret)
|
||||
{ DiscordSDK::get_singleton()
|
||||
{ DiscordRPC::get_singleton()
|
||||
->emit_signal("activity_join", secret); });
|
||||
core->ActivityManager().OnActivitySpectate.Connect([](const char *secret)
|
||||
{ DiscordSDK::get_singleton()
|
||||
{ DiscordRPC::get_singleton()
|
||||
->emit_signal("activity_spectate", secret); });
|
||||
core->ActivityManager().OnActivityJoinRequest.Connect([this](discord::User const &user)
|
||||
{ DiscordSDK::get_singleton()
|
||||
{ DiscordRPC::get_singleton()
|
||||
->emit_signal("activity_join_request", user2dict(user)); });
|
||||
core->OverlayManager().OnToggle.Connect([](bool is_locked)
|
||||
{ DiscordSDK::get_singleton()
|
||||
{ DiscordRPC::get_singleton()
|
||||
->emit_signal("overlay_toggle", is_locked); });
|
||||
core->RelationshipManager().OnRefresh.Connect([&]()
|
||||
{ DiscordSDK::get_singleton()
|
||||
{ DiscordRPC::get_singleton()
|
||||
->emit_signal("relationships_init"); });
|
||||
core->RelationshipManager().OnRelationshipUpdate.Connect([&](discord::Relationship const &relationship)
|
||||
{ DiscordSDK::get_singleton()
|
||||
{ DiscordRPC::get_singleton()
|
||||
->emit_signal("updated_relationship", relationship2dict(relationship)); });
|
||||
}
|
||||
}
|
||||
}
|
||||
int64_t DiscordSDK::get_app_id()
|
||||
int64_t DiscordRPC::get_app_id()
|
||||
{
|
||||
if (app_id != 0)
|
||||
return app_id;
|
||||
return old_app_id;
|
||||
}
|
||||
|
||||
void DiscordSDK::refresh()
|
||||
void DiscordRPC::refresh()
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
{
|
||||
@@ -182,7 +182,7 @@ void DiscordSDK::refresh()
|
||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
||||
}
|
||||
|
||||
void DiscordSDK::clear(bool reset_values = false)
|
||||
void DiscordRPC::clear(bool reset_values = false)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
{
|
||||
@@ -216,7 +216,7 @@ void DiscordSDK::clear(bool reset_values = false)
|
||||
}
|
||||
}
|
||||
|
||||
void DiscordSDK::unclear()
|
||||
void DiscordRPC::unclear()
|
||||
{
|
||||
if (old_app_id > 0)
|
||||
{
|
||||
@@ -228,69 +228,69 @@ void DiscordSDK::unclear()
|
||||
UtilityFunctions::push_warning("Discord Activity couldn't be uncleared. Maybe it didn't get cleared before?");
|
||||
}
|
||||
|
||||
bool DiscordSDK::get_is_overlay_enabled()
|
||||
bool DiscordRPC::get_is_overlay_enabled()
|
||||
{
|
||||
bool ie;
|
||||
if (get_is_discord_working())
|
||||
core->OverlayManager().IsEnabled(&ie);
|
||||
return ie;
|
||||
}
|
||||
bool DiscordSDK::get_is_overlay_locked()
|
||||
bool DiscordRPC::get_is_overlay_locked()
|
||||
{
|
||||
bool il;
|
||||
if (get_is_discord_working())
|
||||
core->OverlayManager().IsLocked(&il);
|
||||
return il;
|
||||
}
|
||||
void DiscordSDK::set_is_overlay_locked(bool value)
|
||||
void DiscordRPC::set_is_overlay_locked(bool value)
|
||||
{
|
||||
is_overlay_locked = value;
|
||||
if (get_is_discord_working())
|
||||
core->OverlayManager().SetLocked(value, {});
|
||||
}
|
||||
void DiscordSDK::open_invite_overlay(bool is_spectate)
|
||||
void DiscordRPC::open_invite_overlay(bool is_spectate)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->OverlayManager().OpenActivityInvite(static_cast<discord::ActivityActionType>(is_spectate + 1), {});
|
||||
}
|
||||
void DiscordSDK::open_server_invite_overlay(String invite_code)
|
||||
void DiscordRPC::open_server_invite_overlay(String invite_code)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->OverlayManager().OpenGuildInvite(invite_code.utf8().get_data(), {});
|
||||
}
|
||||
void DiscordSDK::open_voice_settings()
|
||||
void DiscordRPC::open_voice_settings()
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->OverlayManager().OpenVoiceSettings({});
|
||||
}
|
||||
|
||||
void DiscordSDK::accept_join_request(int64_t user_id)
|
||||
void DiscordRPC::accept_join_request(int64_t user_id)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->ActivityManager().SendRequestReply(user_id, static_cast<discord::ActivityJoinRequestReply>(1), {});
|
||||
}
|
||||
void DiscordSDK::send_invite(int64_t user_id, bool is_spectate = false, String message_content = "")
|
||||
void DiscordRPC::send_invite(int64_t user_id, bool is_spectate = false, String message_content = "")
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->ActivityManager().SendInvite(user_id, static_cast<discord::ActivityActionType>(is_spectate + 1), message_content.utf8().get_data(), {});
|
||||
}
|
||||
void DiscordSDK::accept_invite(int64_t user_id)
|
||||
void DiscordRPC::accept_invite(int64_t user_id)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->ActivityManager().AcceptInvite(user_id, {});
|
||||
}
|
||||
|
||||
void DiscordSDK::register_command(String value)
|
||||
void DiscordRPC::register_command(String value)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->ActivityManager().RegisterCommand(value.utf8().get_data());
|
||||
}
|
||||
void DiscordSDK::register_steam(int32_t value)
|
||||
void DiscordRPC::register_steam(int32_t value)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
core->ActivityManager().RegisterSteam(value);
|
||||
}
|
||||
Dictionary DiscordSDK::get_current_user()
|
||||
Dictionary DiscordRPC::get_current_user()
|
||||
{
|
||||
Dictionary userdict;
|
||||
if (get_is_discord_working())
|
||||
@@ -302,7 +302,7 @@ Dictionary DiscordSDK::get_current_user()
|
||||
return userdict;
|
||||
}
|
||||
|
||||
Dictionary DiscordSDK::get_relationship(int64_t user_id)
|
||||
Dictionary DiscordRPC::get_relationship(int64_t user_id)
|
||||
{
|
||||
if (get_is_discord_working())
|
||||
{
|
||||
@@ -314,7 +314,7 @@ Dictionary DiscordSDK::get_relationship(int64_t user_id)
|
||||
return dict;
|
||||
}
|
||||
|
||||
Array DiscordSDK::get_all_relationships()
|
||||
Array DiscordRPC::get_all_relationships()
|
||||
{
|
||||
Array all_relationships;
|
||||
core->RelationshipManager().Filter(
|
||||
@@ -331,12 +331,12 @@ Array DiscordSDK::get_all_relationships()
|
||||
return all_relationships;
|
||||
}
|
||||
|
||||
int DiscordSDK::get_result_int()
|
||||
int DiscordRPC::get_result_int()
|
||||
{
|
||||
return static_cast<int>(result);
|
||||
}
|
||||
|
||||
Dictionary DiscordSDK::user2dict(discord::User user)
|
||||
Dictionary DiscordRPC::user2dict(discord::User user)
|
||||
{
|
||||
Dictionary userdict;
|
||||
userdict["avatar"] = user.GetAvatar(); // can be empty when user has no avatar
|
||||
@@ -352,7 +352,7 @@ Dictionary DiscordSDK::user2dict(discord::User user)
|
||||
return userdict;
|
||||
}
|
||||
|
||||
Dictionary DiscordSDK::relationship2dict(discord::Relationship relationship)
|
||||
Dictionary DiscordRPC::relationship2dict(discord::Relationship relationship)
|
||||
{
|
||||
Dictionary dict_relationship;
|
||||
Dictionary presence;
|
||||
@@ -424,7 +424,7 @@ Dictionary DiscordSDK::relationship2dict(discord::Relationship relationship)
|
||||
return dict_relationship;
|
||||
}
|
||||
|
||||
bool DiscordSDK::get_is_discord_working()
|
||||
bool DiscordRPC::get_is_discord_working()
|
||||
{
|
||||
return result == discord::Result::Ok && app_id > 0;
|
||||
}
|
@@ -13,21 +13,21 @@
|
||||
|
||||
using namespace godot;
|
||||
|
||||
class DiscordSDK : public Object
|
||||
class DiscordRPC : public Object
|
||||
{
|
||||
GDCLASS(DiscordSDK, Object);
|
||||
GDCLASS(DiscordRPC, Object);
|
||||
|
||||
static DiscordSDK *singleton;
|
||||
static DiscordRPC *singleton;
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
static DiscordSDK *
|
||||
static DiscordRPC *
|
||||
get_singleton();
|
||||
|
||||
DiscordSDK();
|
||||
~DiscordSDK();
|
||||
DiscordRPC();
|
||||
~DiscordRPC();
|
||||
|
||||
// INTERBNAL
|
||||
int64_t old_app_id;
|
||||
|
BIN
src/lib/discord_game_sdk/bin/discord_game_sdk.bundle
Normal file
BIN
src/lib/discord_game_sdk/bin/discord_game_sdk.dll
Normal file
BIN
src/lib/discord_game_sdk/bin/discord_game_sdk.dylib
Normal file
BIN
src/lib/discord_game_sdk/bin/discord_game_sdk_aarch64.dylib
Normal file
BIN
src/lib/discord_game_sdk/bin/discord_game_sdk_x86.dll
Normal file
BIN
src/lib/discord_game_sdk/bin/libdiscord_game_sdk.so
Normal file
99
src/lib/discord_game_sdk/cpp/achievement_manager.cpp
Normal file
@@ -0,0 +1,99 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "achievement_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class AchievementEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnUserAchievementUpdate(void* callbackData,
|
||||
DiscordUserAchievement* userAchievement)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->AchievementManager();
|
||||
module.OnUserAchievementUpdate(*reinterpret_cast<UserAchievement const*>(userAchievement));
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordAchievementEvents AchievementManager::events_{
|
||||
&AchievementEvents::OnUserAchievementUpdate,
|
||||
};
|
||||
|
||||
void AchievementManager::SetUserAchievement(Snowflake achievementId,
|
||||
std::uint8_t percentComplete,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->set_user_achievement(
|
||||
internal_, achievementId, percentComplete, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void AchievementManager::FetchUserAchievements(std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->fetch_user_achievements(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void AchievementManager::CountUserAchievements(std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->count_user_achievements(internal_, reinterpret_cast<int32_t*>(count));
|
||||
}
|
||||
|
||||
Result AchievementManager::GetUserAchievement(Snowflake userAchievementId,
|
||||
UserAchievement* userAchievement)
|
||||
{
|
||||
if (!userAchievement) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_user_achievement(
|
||||
internal_, userAchievementId, reinterpret_cast<DiscordUserAchievement*>(userAchievement));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result AchievementManager::GetUserAchievementAt(std::int32_t index,
|
||||
UserAchievement* userAchievement)
|
||||
{
|
||||
if (!userAchievement) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_user_achievement_at(
|
||||
internal_, index, reinterpret_cast<DiscordUserAchievement*>(userAchievement));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
34
src/lib/discord_game_sdk/cpp/achievement_manager.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class AchievementManager final {
|
||||
public:
|
||||
~AchievementManager() = default;
|
||||
|
||||
void SetUserAchievement(Snowflake achievementId,
|
||||
std::uint8_t percentComplete,
|
||||
std::function<void(Result)> callback);
|
||||
void FetchUserAchievements(std::function<void(Result)> callback);
|
||||
void CountUserAchievements(std::int32_t* count);
|
||||
Result GetUserAchievement(Snowflake userAchievementId, UserAchievement* userAchievement);
|
||||
Result GetUserAchievementAt(std::int32_t index, UserAchievement* userAchievement);
|
||||
|
||||
Event<UserAchievement const&> OnUserAchievementUpdate;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
AchievementManager() = default;
|
||||
AchievementManager(AchievementManager const& rhs) = delete;
|
||||
AchievementManager& operator=(AchievementManager const& rhs) = delete;
|
||||
AchievementManager(AchievementManager&& rhs) = delete;
|
||||
AchievementManager& operator=(AchievementManager&& rhs) = delete;
|
||||
|
||||
IDiscordAchievementManager* internal_;
|
||||
static IDiscordAchievementEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
177
src/lib/discord_game_sdk/cpp/activity_manager.cpp
Normal file
@@ -0,0 +1,177 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "activity_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class ActivityEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnActivityJoin(void* callbackData, char const* secret)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->ActivityManager();
|
||||
module.OnActivityJoin(static_cast<const char*>(secret));
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnActivitySpectate(void* callbackData, char const* secret)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->ActivityManager();
|
||||
module.OnActivitySpectate(static_cast<const char*>(secret));
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnActivityJoinRequest(void* callbackData, DiscordUser* user)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->ActivityManager();
|
||||
module.OnActivityJoinRequest(*reinterpret_cast<User const*>(user));
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnActivityInvite(void* callbackData,
|
||||
EDiscordActivityActionType type,
|
||||
DiscordUser* user,
|
||||
DiscordActivity* activity)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->ActivityManager();
|
||||
module.OnActivityInvite(static_cast<ActivityActionType>(type),
|
||||
*reinterpret_cast<User const*>(user),
|
||||
*reinterpret_cast<Activity const*>(activity));
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordActivityEvents ActivityManager::events_{
|
||||
&ActivityEvents::OnActivityJoin,
|
||||
&ActivityEvents::OnActivitySpectate,
|
||||
&ActivityEvents::OnActivityJoinRequest,
|
||||
&ActivityEvents::OnActivityInvite,
|
||||
};
|
||||
|
||||
Result ActivityManager::RegisterCommand(char const* command)
|
||||
{
|
||||
auto result = internal_->register_command(internal_, const_cast<char*>(command));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result ActivityManager::RegisterSteam(std::uint32_t steamId)
|
||||
{
|
||||
auto result = internal_->register_steam(internal_, steamId);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void ActivityManager::UpdateActivity(Activity const& activity, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->update_activity(internal_,
|
||||
reinterpret_cast<DiscordActivity*>(const_cast<Activity*>(&activity)),
|
||||
cb.release(),
|
||||
wrapper);
|
||||
}
|
||||
|
||||
void ActivityManager::ClearActivity(std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->clear_activity(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void ActivityManager::SendRequestReply(UserId userId,
|
||||
ActivityJoinRequestReply reply,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->send_request_reply(internal_,
|
||||
userId,
|
||||
static_cast<EDiscordActivityJoinRequestReply>(reply),
|
||||
cb.release(),
|
||||
wrapper);
|
||||
}
|
||||
|
||||
void ActivityManager::SendInvite(UserId userId,
|
||||
ActivityActionType type,
|
||||
char const* content,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->send_invite(internal_,
|
||||
userId,
|
||||
static_cast<EDiscordActivityActionType>(type),
|
||||
const_cast<char*>(content),
|
||||
cb.release(),
|
||||
wrapper);
|
||||
}
|
||||
|
||||
void ActivityManager::AcceptInvite(UserId userId, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->accept_invite(internal_, userId, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
} // namespace discord
|
42
src/lib/discord_game_sdk/cpp/activity_manager.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class ActivityManager final {
|
||||
public:
|
||||
~ActivityManager() = default;
|
||||
|
||||
Result RegisterCommand(char const* command);
|
||||
Result RegisterSteam(std::uint32_t steamId);
|
||||
void UpdateActivity(Activity const& activity, std::function<void(Result)> callback);
|
||||
void ClearActivity(std::function<void(Result)> callback);
|
||||
void SendRequestReply(UserId userId,
|
||||
ActivityJoinRequestReply reply,
|
||||
std::function<void(Result)> callback);
|
||||
void SendInvite(UserId userId,
|
||||
ActivityActionType type,
|
||||
char const* content,
|
||||
std::function<void(Result)> callback);
|
||||
void AcceptInvite(UserId userId, std::function<void(Result)> callback);
|
||||
|
||||
Event<char const*> OnActivityJoin;
|
||||
Event<char const*> OnActivitySpectate;
|
||||
Event<User const&> OnActivityJoinRequest;
|
||||
Event<ActivityActionType, User const&, Activity const&> OnActivityInvite;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
ActivityManager() = default;
|
||||
ActivityManager(ActivityManager const& rhs) = delete;
|
||||
ActivityManager& operator=(ActivityManager const& rhs) = delete;
|
||||
ActivityManager(ActivityManager&& rhs) = delete;
|
||||
ActivityManager& operator=(ActivityManager&& rhs) = delete;
|
||||
|
||||
IDiscordActivityManager* internal_;
|
||||
static IDiscordActivityEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
78
src/lib/discord_game_sdk/cpp/application_manager.cpp
Normal file
@@ -0,0 +1,78 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "application_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
void ApplicationManager::ValidateOrExit(std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->validate_or_exit(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void ApplicationManager::GetCurrentLocale(char locale[128])
|
||||
{
|
||||
if (!locale) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->get_current_locale(internal_, reinterpret_cast<DiscordLocale*>(locale));
|
||||
}
|
||||
|
||||
void ApplicationManager::GetCurrentBranch(char branch[4096])
|
||||
{
|
||||
if (!branch) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->get_current_branch(internal_, reinterpret_cast<DiscordBranch*>(branch));
|
||||
}
|
||||
|
||||
void ApplicationManager::GetOAuth2Token(std::function<void(Result, OAuth2Token const&)> callback)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordResult result, DiscordOAuth2Token* oauth2Token) -> void {
|
||||
std::unique_ptr<std::function<void(Result, OAuth2Token const&)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, OAuth2Token const&)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), *reinterpret_cast<OAuth2Token const*>(oauth2Token));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, OAuth2Token const&)>> cb{};
|
||||
cb.reset(new std::function<void(Result, OAuth2Token const&)>(std::move(callback)));
|
||||
internal_->get_oauth2_token(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void ApplicationManager::GetTicket(std::function<void(Result, char const*)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result, char const* data) -> void {
|
||||
std::unique_ptr<std::function<void(Result, char const*)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, char const*)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), static_cast<const char*>(data));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, char const*)>> cb{};
|
||||
cb.reset(new std::function<void(Result, char const*)>(std::move(callback)));
|
||||
internal_->get_ticket(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
} // namespace discord
|
30
src/lib/discord_game_sdk/cpp/application_manager.h
Normal file
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class ApplicationManager final {
|
||||
public:
|
||||
~ApplicationManager() = default;
|
||||
|
||||
void ValidateOrExit(std::function<void(Result)> callback);
|
||||
void GetCurrentLocale(char locale[128]);
|
||||
void GetCurrentBranch(char branch[4096]);
|
||||
void GetOAuth2Token(std::function<void(Result, OAuth2Token const&)> callback);
|
||||
void GetTicket(std::function<void(Result, char const*)> callback);
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
ApplicationManager() = default;
|
||||
ApplicationManager(ApplicationManager const& rhs) = delete;
|
||||
ApplicationManager& operator=(ApplicationManager const& rhs) = delete;
|
||||
ApplicationManager(ApplicationManager&& rhs) = delete;
|
||||
ApplicationManager& operator=(ApplicationManager&& rhs) = delete;
|
||||
|
||||
IDiscordApplicationManager* internal_;
|
||||
static IDiscordApplicationEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
182
src/lib/discord_game_sdk/cpp/core.cpp
Normal file
@@ -0,0 +1,182 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
Result Core::Create(ClientId clientId, std::uint64_t flags, Core** instance)
|
||||
{
|
||||
if (!instance) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
(*instance) = new Core();
|
||||
DiscordCreateParams params{};
|
||||
DiscordCreateParamsSetDefault(¶ms);
|
||||
params.client_id = clientId;
|
||||
params.flags = flags;
|
||||
params.events = nullptr;
|
||||
params.event_data = *instance;
|
||||
params.user_events = &UserManager::events_;
|
||||
params.activity_events = &ActivityManager::events_;
|
||||
params.relationship_events = &RelationshipManager::events_;
|
||||
params.lobby_events = &LobbyManager::events_;
|
||||
params.network_events = &NetworkManager::events_;
|
||||
params.overlay_events = &OverlayManager::events_;
|
||||
params.store_events = &StoreManager::events_;
|
||||
params.voice_events = &VoiceManager::events_;
|
||||
params.achievement_events = &AchievementManager::events_;
|
||||
auto result = DiscordCreate(DISCORD_VERSION, ¶ms, &((*instance)->internal_));
|
||||
if (result != DiscordResult_Ok || !(*instance)->internal_) {
|
||||
delete (*instance);
|
||||
(*instance) = nullptr;
|
||||
}
|
||||
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Core::~Core()
|
||||
{
|
||||
if (internal_) {
|
||||
internal_->destroy(internal_);
|
||||
internal_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
Result Core::RunCallbacks()
|
||||
{
|
||||
auto result = internal_->run_callbacks(internal_);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void Core::SetLogHook(LogLevel minLevel, std::function<void(LogLevel, char const*)> hook)
|
||||
{
|
||||
setLogHook_.DisconnectAll();
|
||||
setLogHook_.Connect(std::move(hook));
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordLogLevel level, char const* message) -> void {
|
||||
auto cb(reinterpret_cast<decltype(setLogHook_)*>(callbackData));
|
||||
if (!cb) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<LogLevel>(level), static_cast<const char*>(message));
|
||||
};
|
||||
|
||||
internal_->set_log_hook(
|
||||
internal_, static_cast<EDiscordLogLevel>(minLevel), &setLogHook_, wrapper);
|
||||
}
|
||||
|
||||
discord::ApplicationManager& Core::ApplicationManager()
|
||||
{
|
||||
if (!applicationManager_.internal_) {
|
||||
applicationManager_.internal_ = internal_->get_application_manager(internal_);
|
||||
}
|
||||
|
||||
return applicationManager_;
|
||||
}
|
||||
|
||||
discord::UserManager& Core::UserManager()
|
||||
{
|
||||
if (!userManager_.internal_) {
|
||||
userManager_.internal_ = internal_->get_user_manager(internal_);
|
||||
}
|
||||
|
||||
return userManager_;
|
||||
}
|
||||
|
||||
discord::ImageManager& Core::ImageManager()
|
||||
{
|
||||
if (!imageManager_.internal_) {
|
||||
imageManager_.internal_ = internal_->get_image_manager(internal_);
|
||||
}
|
||||
|
||||
return imageManager_;
|
||||
}
|
||||
|
||||
discord::ActivityManager& Core::ActivityManager()
|
||||
{
|
||||
if (!activityManager_.internal_) {
|
||||
activityManager_.internal_ = internal_->get_activity_manager(internal_);
|
||||
}
|
||||
|
||||
return activityManager_;
|
||||
}
|
||||
|
||||
discord::RelationshipManager& Core::RelationshipManager()
|
||||
{
|
||||
if (!relationshipManager_.internal_) {
|
||||
relationshipManager_.internal_ = internal_->get_relationship_manager(internal_);
|
||||
}
|
||||
|
||||
return relationshipManager_;
|
||||
}
|
||||
|
||||
discord::LobbyManager& Core::LobbyManager()
|
||||
{
|
||||
if (!lobbyManager_.internal_) {
|
||||
lobbyManager_.internal_ = internal_->get_lobby_manager(internal_);
|
||||
}
|
||||
|
||||
return lobbyManager_;
|
||||
}
|
||||
|
||||
discord::NetworkManager& Core::NetworkManager()
|
||||
{
|
||||
if (!networkManager_.internal_) {
|
||||
networkManager_.internal_ = internal_->get_network_manager(internal_);
|
||||
}
|
||||
|
||||
return networkManager_;
|
||||
}
|
||||
|
||||
discord::OverlayManager& Core::OverlayManager()
|
||||
{
|
||||
if (!overlayManager_.internal_) {
|
||||
overlayManager_.internal_ = internal_->get_overlay_manager(internal_);
|
||||
}
|
||||
|
||||
return overlayManager_;
|
||||
}
|
||||
|
||||
discord::StorageManager& Core::StorageManager()
|
||||
{
|
||||
if (!storageManager_.internal_) {
|
||||
storageManager_.internal_ = internal_->get_storage_manager(internal_);
|
||||
}
|
||||
|
||||
return storageManager_;
|
||||
}
|
||||
|
||||
discord::StoreManager& Core::StoreManager()
|
||||
{
|
||||
if (!storeManager_.internal_) {
|
||||
storeManager_.internal_ = internal_->get_store_manager(internal_);
|
||||
}
|
||||
|
||||
return storeManager_;
|
||||
}
|
||||
|
||||
discord::VoiceManager& Core::VoiceManager()
|
||||
{
|
||||
if (!voiceManager_.internal_) {
|
||||
voiceManager_.internal_ = internal_->get_voice_manager(internal_);
|
||||
}
|
||||
|
||||
return voiceManager_;
|
||||
}
|
||||
|
||||
discord::AchievementManager& Core::AchievementManager()
|
||||
{
|
||||
if (!achievementManager_.internal_) {
|
||||
achievementManager_.internal_ = internal_->get_achievement_manager(internal_);
|
||||
}
|
||||
|
||||
return achievementManager_;
|
||||
}
|
||||
|
||||
} // namespace discord
|
64
src/lib/discord_game_sdk/cpp/core.h
Normal file
@@ -0,0 +1,64 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
#include "application_manager.h"
|
||||
#include "user_manager.h"
|
||||
#include "image_manager.h"
|
||||
#include "activity_manager.h"
|
||||
#include "relationship_manager.h"
|
||||
#include "lobby_manager.h"
|
||||
#include "network_manager.h"
|
||||
#include "overlay_manager.h"
|
||||
#include "storage_manager.h"
|
||||
#include "store_manager.h"
|
||||
#include "voice_manager.h"
|
||||
#include "achievement_manager.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class Core final {
|
||||
public:
|
||||
static Result Create(ClientId clientId, std::uint64_t flags, Core** instance);
|
||||
|
||||
~Core();
|
||||
|
||||
Result RunCallbacks();
|
||||
void SetLogHook(LogLevel minLevel, std::function<void(LogLevel, char const*)> hook);
|
||||
|
||||
discord::ApplicationManager& ApplicationManager();
|
||||
discord::UserManager& UserManager();
|
||||
discord::ImageManager& ImageManager();
|
||||
discord::ActivityManager& ActivityManager();
|
||||
discord::RelationshipManager& RelationshipManager();
|
||||
discord::LobbyManager& LobbyManager();
|
||||
discord::NetworkManager& NetworkManager();
|
||||
discord::OverlayManager& OverlayManager();
|
||||
discord::StorageManager& StorageManager();
|
||||
discord::StoreManager& StoreManager();
|
||||
discord::VoiceManager& VoiceManager();
|
||||
discord::AchievementManager& AchievementManager();
|
||||
|
||||
private:
|
||||
Core() = default;
|
||||
Core(Core const& rhs) = delete;
|
||||
Core& operator=(Core const& rhs) = delete;
|
||||
Core(Core&& rhs) = delete;
|
||||
Core& operator=(Core&& rhs) = delete;
|
||||
|
||||
IDiscordCore* internal_;
|
||||
Event<LogLevel, char const*> setLogHook_;
|
||||
discord::ApplicationManager applicationManager_;
|
||||
discord::UserManager userManager_;
|
||||
discord::ImageManager imageManager_;
|
||||
discord::ActivityManager activityManager_;
|
||||
discord::RelationshipManager relationshipManager_;
|
||||
discord::LobbyManager lobbyManager_;
|
||||
discord::NetworkManager networkManager_;
|
||||
discord::OverlayManager overlayManager_;
|
||||
discord::StorageManager storageManager_;
|
||||
discord::StoreManager storeManager_;
|
||||
discord::VoiceManager voiceManager_;
|
||||
discord::AchievementManager achievementManager_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
16
src/lib/discord_game_sdk/cpp/discord.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
#include "core.h"
|
||||
#include "application_manager.h"
|
||||
#include "user_manager.h"
|
||||
#include "image_manager.h"
|
||||
#include "activity_manager.h"
|
||||
#include "relationship_manager.h"
|
||||
#include "lobby_manager.h"
|
||||
#include "network_manager.h"
|
||||
#include "overlay_manager.h"
|
||||
#include "storage_manager.h"
|
||||
#include "store_manager.h"
|
||||
#include "voice_manager.h"
|
||||
#include "achievement_manager.h"
|
59
src/lib/discord_game_sdk/cpp/event.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <vector>
|
||||
|
||||
namespace discord {
|
||||
|
||||
template <typename... Args>
|
||||
class Event final {
|
||||
public:
|
||||
using Token = int;
|
||||
|
||||
Event() { slots_.reserve(4); }
|
||||
|
||||
Event(Event const&) = default;
|
||||
Event(Event&&) = default;
|
||||
~Event() = default;
|
||||
|
||||
Event& operator=(Event const&) = default;
|
||||
Event& operator=(Event&&) = default;
|
||||
|
||||
template <typename EventHandler>
|
||||
Token Connect(EventHandler slot)
|
||||
{
|
||||
slots_.emplace_back(Slot{nextToken_, std::move(slot)});
|
||||
return nextToken_++;
|
||||
}
|
||||
|
||||
void Disconnect(Token token)
|
||||
{
|
||||
for (auto& slot : slots_) {
|
||||
if (slot.token == token) {
|
||||
slot = slots_.back();
|
||||
slots_.pop_back();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DisconnectAll() { slots_ = {}; }
|
||||
|
||||
void operator()(Args... args)
|
||||
{
|
||||
for (auto const& slot : slots_) {
|
||||
slot.fn(std::forward<Args>(args)...);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
struct Slot {
|
||||
Token token;
|
||||
std::function<void(Args...)> fn;
|
||||
};
|
||||
|
||||
Token nextToken_{};
|
||||
std::vector<Slot> slots_{};
|
||||
};
|
||||
|
||||
} // namespace discord
|
1113
src/lib/discord_game_sdk/cpp/ffi.h
Normal file
57
src/lib/discord_game_sdk/cpp/image_manager.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "image_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
void ImageManager::Fetch(ImageHandle handle,
|
||||
bool refresh,
|
||||
std::function<void(Result, ImageHandle)> callback)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordResult result, DiscordImageHandle handleResult) -> void {
|
||||
std::unique_ptr<std::function<void(Result, ImageHandle)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, ImageHandle)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), *reinterpret_cast<ImageHandle const*>(&handleResult));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, ImageHandle)>> cb{};
|
||||
cb.reset(new std::function<void(Result, ImageHandle)>(std::move(callback)));
|
||||
internal_->fetch(internal_,
|
||||
*reinterpret_cast<DiscordImageHandle const*>(&handle),
|
||||
(refresh ? 1 : 0),
|
||||
cb.release(),
|
||||
wrapper);
|
||||
}
|
||||
|
||||
Result ImageManager::GetDimensions(ImageHandle handle, ImageDimensions* dimensions)
|
||||
{
|
||||
if (!dimensions) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_dimensions(internal_,
|
||||
*reinterpret_cast<DiscordImageHandle const*>(&handle),
|
||||
reinterpret_cast<DiscordImageDimensions*>(dimensions));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result ImageManager::GetData(ImageHandle handle, std::uint8_t* data, std::uint32_t dataLength)
|
||||
{
|
||||
auto result = internal_->get_data(internal_,
|
||||
*reinterpret_cast<DiscordImageHandle const*>(&handle),
|
||||
reinterpret_cast<uint8_t*>(data),
|
||||
dataLength);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
28
src/lib/discord_game_sdk/cpp/image_manager.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class ImageManager final {
|
||||
public:
|
||||
~ImageManager() = default;
|
||||
|
||||
void Fetch(ImageHandle handle, bool refresh, std::function<void(Result, ImageHandle)> callback);
|
||||
Result GetDimensions(ImageHandle handle, ImageDimensions* dimensions);
|
||||
Result GetData(ImageHandle handle, std::uint8_t* data, std::uint32_t dataLength);
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
ImageManager() = default;
|
||||
ImageManager(ImageManager const& rhs) = delete;
|
||||
ImageManager& operator=(ImageManager const& rhs) = delete;
|
||||
ImageManager(ImageManager&& rhs) = delete;
|
||||
ImageManager& operator=(ImageManager&& rhs) = delete;
|
||||
|
||||
IDiscordImageManager* internal_;
|
||||
static IDiscordImageEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
554
src/lib/discord_game_sdk/cpp/lobby_manager.cpp
Normal file
@@ -0,0 +1,554 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "lobby_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class LobbyEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnLobbyUpdate(void* callbackData, int64_t lobbyId)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnLobbyUpdate(lobbyId);
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnLobbyDelete(void* callbackData, int64_t lobbyId, uint32_t reason)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnLobbyDelete(lobbyId, reason);
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnMemberConnect(void* callbackData,
|
||||
int64_t lobbyId,
|
||||
int64_t userId)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnMemberConnect(lobbyId, userId);
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnMemberUpdate(void* callbackData, int64_t lobbyId, int64_t userId)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnMemberUpdate(lobbyId, userId);
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnMemberDisconnect(void* callbackData,
|
||||
int64_t lobbyId,
|
||||
int64_t userId)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnMemberDisconnect(lobbyId, userId);
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnLobbyMessage(void* callbackData,
|
||||
int64_t lobbyId,
|
||||
int64_t userId,
|
||||
uint8_t* data,
|
||||
uint32_t dataLength)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnLobbyMessage(lobbyId, userId, data, dataLength);
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnSpeaking(void* callbackData,
|
||||
int64_t lobbyId,
|
||||
int64_t userId,
|
||||
bool speaking)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnSpeaking(lobbyId, userId, (speaking != 0));
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnNetworkMessage(void* callbackData,
|
||||
int64_t lobbyId,
|
||||
int64_t userId,
|
||||
uint8_t channelId,
|
||||
uint8_t* data,
|
||||
uint32_t dataLength)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->LobbyManager();
|
||||
module.OnNetworkMessage(lobbyId, userId, channelId, data, dataLength);
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordLobbyEvents LobbyManager::events_{
|
||||
&LobbyEvents::OnLobbyUpdate,
|
||||
&LobbyEvents::OnLobbyDelete,
|
||||
&LobbyEvents::OnMemberConnect,
|
||||
&LobbyEvents::OnMemberUpdate,
|
||||
&LobbyEvents::OnMemberDisconnect,
|
||||
&LobbyEvents::OnLobbyMessage,
|
||||
&LobbyEvents::OnSpeaking,
|
||||
&LobbyEvents::OnNetworkMessage,
|
||||
};
|
||||
|
||||
Result LobbyManager::GetLobbyCreateTransaction(LobbyTransaction* transaction)
|
||||
{
|
||||
if (!transaction) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_lobby_create_transaction(internal_, transaction->Receive());
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetLobbyUpdateTransaction(LobbyId lobbyId, LobbyTransaction* transaction)
|
||||
{
|
||||
if (!transaction) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_lobby_update_transaction(internal_, lobbyId, transaction->Receive());
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetMemberUpdateTransaction(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
LobbyMemberTransaction* transaction)
|
||||
{
|
||||
if (!transaction) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_member_update_transaction(internal_, lobbyId, userId, transaction->Receive());
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void LobbyManager::CreateLobby(LobbyTransaction const& transaction,
|
||||
std::function<void(Result, Lobby const&)> callback)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordResult result, DiscordLobby* lobby) -> void {
|
||||
std::unique_ptr<std::function<void(Result, Lobby const&)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, Lobby const&)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), *reinterpret_cast<Lobby const*>(lobby));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, Lobby const&)>> cb{};
|
||||
cb.reset(new std::function<void(Result, Lobby const&)>(std::move(callback)));
|
||||
internal_->create_lobby(
|
||||
internal_, const_cast<LobbyTransaction&>(transaction).Internal(), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::UpdateLobby(LobbyId lobbyId,
|
||||
LobbyTransaction const& transaction,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->update_lobby(internal_,
|
||||
lobbyId,
|
||||
const_cast<LobbyTransaction&>(transaction).Internal(),
|
||||
cb.release(),
|
||||
wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::DeleteLobby(LobbyId lobbyId, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->delete_lobby(internal_, lobbyId, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::ConnectLobby(LobbyId lobbyId,
|
||||
LobbySecret secret,
|
||||
std::function<void(Result, Lobby const&)> callback)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordResult result, DiscordLobby* lobby) -> void {
|
||||
std::unique_ptr<std::function<void(Result, Lobby const&)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, Lobby const&)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), *reinterpret_cast<Lobby const*>(lobby));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, Lobby const&)>> cb{};
|
||||
cb.reset(new std::function<void(Result, Lobby const&)>(std::move(callback)));
|
||||
internal_->connect_lobby(internal_, lobbyId, const_cast<char*>(secret), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::ConnectLobbyWithActivitySecret(
|
||||
LobbySecret activitySecret,
|
||||
std::function<void(Result, Lobby const&)> callback)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordResult result, DiscordLobby* lobby) -> void {
|
||||
std::unique_ptr<std::function<void(Result, Lobby const&)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, Lobby const&)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), *reinterpret_cast<Lobby const*>(lobby));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, Lobby const&)>> cb{};
|
||||
cb.reset(new std::function<void(Result, Lobby const&)>(std::move(callback)));
|
||||
internal_->connect_lobby_with_activity_secret(
|
||||
internal_, const_cast<char*>(activitySecret), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::DisconnectLobby(LobbyId lobbyId, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->disconnect_lobby(internal_, lobbyId, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetLobby(LobbyId lobbyId, Lobby* lobby)
|
||||
{
|
||||
if (!lobby) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_lobby(internal_, lobbyId, reinterpret_cast<DiscordLobby*>(lobby));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetLobbyActivitySecret(LobbyId lobbyId, char secret[128])
|
||||
{
|
||||
if (!secret) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_lobby_activity_secret(
|
||||
internal_, lobbyId, reinterpret_cast<DiscordLobbySecret*>(secret));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetLobbyMetadataValue(LobbyId lobbyId, MetadataKey key, char value[4096])
|
||||
{
|
||||
if (!value) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_lobby_metadata_value(
|
||||
internal_, lobbyId, const_cast<char*>(key), reinterpret_cast<DiscordMetadataValue*>(value));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetLobbyMetadataKey(LobbyId lobbyId, std::int32_t index, char key[256])
|
||||
{
|
||||
if (!key) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_lobby_metadata_key(
|
||||
internal_, lobbyId, index, reinterpret_cast<DiscordMetadataKey*>(key));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::LobbyMetadataCount(LobbyId lobbyId, std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->lobby_metadata_count(internal_, lobbyId, reinterpret_cast<int32_t*>(count));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::MemberCount(LobbyId lobbyId, std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->member_count(internal_, lobbyId, reinterpret_cast<int32_t*>(count));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetMemberUserId(LobbyId lobbyId, std::int32_t index, UserId* userId)
|
||||
{
|
||||
if (!userId) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_member_user_id(internal_, lobbyId, index, reinterpret_cast<int64_t*>(userId));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetMemberUser(LobbyId lobbyId, UserId userId, User* user)
|
||||
{
|
||||
if (!user) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_member_user(internal_, lobbyId, userId, reinterpret_cast<DiscordUser*>(user));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetMemberMetadataValue(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
MetadataKey key,
|
||||
char value[4096])
|
||||
{
|
||||
if (!value) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_member_metadata_value(internal_,
|
||||
lobbyId,
|
||||
userId,
|
||||
const_cast<char*>(key),
|
||||
reinterpret_cast<DiscordMetadataValue*>(value));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetMemberMetadataKey(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
std::int32_t index,
|
||||
char key[256])
|
||||
{
|
||||
if (!key) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_member_metadata_key(
|
||||
internal_, lobbyId, userId, index, reinterpret_cast<DiscordMetadataKey*>(key));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::MemberMetadataCount(LobbyId lobbyId, UserId userId, std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->member_metadata_count(
|
||||
internal_, lobbyId, userId, reinterpret_cast<int32_t*>(count));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void LobbyManager::UpdateMember(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
LobbyMemberTransaction const& transaction,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->update_member(internal_,
|
||||
lobbyId,
|
||||
userId,
|
||||
const_cast<LobbyMemberTransaction&>(transaction).Internal(),
|
||||
cb.release(),
|
||||
wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::SendLobbyMessage(LobbyId lobbyId,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->send_lobby_message(
|
||||
internal_, lobbyId, reinterpret_cast<uint8_t*>(data), dataLength, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
Result LobbyManager::GetSearchQuery(LobbySearchQuery* query)
|
||||
{
|
||||
if (!query) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_search_query(internal_, query->Receive());
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void LobbyManager::Search(LobbySearchQuery const& query, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->search(
|
||||
internal_, const_cast<LobbySearchQuery&>(query).Internal(), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::LobbyCount(std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->lobby_count(internal_, reinterpret_cast<int32_t*>(count));
|
||||
}
|
||||
|
||||
Result LobbyManager::GetLobbyId(std::int32_t index, LobbyId* lobbyId)
|
||||
{
|
||||
if (!lobbyId) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_lobby_id(internal_, index, reinterpret_cast<int64_t*>(lobbyId));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void LobbyManager::ConnectVoice(LobbyId lobbyId, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->connect_voice(internal_, lobbyId, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void LobbyManager::DisconnectVoice(LobbyId lobbyId, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->disconnect_voice(internal_, lobbyId, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
Result LobbyManager::ConnectNetwork(LobbyId lobbyId)
|
||||
{
|
||||
auto result = internal_->connect_network(internal_, lobbyId);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::DisconnectNetwork(LobbyId lobbyId)
|
||||
{
|
||||
auto result = internal_->disconnect_network(internal_, lobbyId);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::FlushNetwork()
|
||||
{
|
||||
auto result = internal_->flush_network(internal_);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::OpenNetworkChannel(LobbyId lobbyId, std::uint8_t channelId, bool reliable)
|
||||
{
|
||||
auto result =
|
||||
internal_->open_network_channel(internal_, lobbyId, channelId, (reliable ? 1 : 0));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyManager::SendNetworkMessage(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
std::uint8_t channelId,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength)
|
||||
{
|
||||
auto result = internal_->send_network_message(
|
||||
internal_, lobbyId, userId, channelId, reinterpret_cast<uint8_t*>(data), dataLength);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
88
src/lib/discord_game_sdk/cpp/lobby_manager.h
Normal file
@@ -0,0 +1,88 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class LobbyManager final {
|
||||
public:
|
||||
~LobbyManager() = default;
|
||||
|
||||
Result GetLobbyCreateTransaction(LobbyTransaction* transaction);
|
||||
Result GetLobbyUpdateTransaction(LobbyId lobbyId, LobbyTransaction* transaction);
|
||||
Result GetMemberUpdateTransaction(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
LobbyMemberTransaction* transaction);
|
||||
void CreateLobby(LobbyTransaction const& transaction,
|
||||
std::function<void(Result, Lobby const&)> callback);
|
||||
void UpdateLobby(LobbyId lobbyId,
|
||||
LobbyTransaction const& transaction,
|
||||
std::function<void(Result)> callback);
|
||||
void DeleteLobby(LobbyId lobbyId, std::function<void(Result)> callback);
|
||||
void ConnectLobby(LobbyId lobbyId,
|
||||
LobbySecret secret,
|
||||
std::function<void(Result, Lobby const&)> callback);
|
||||
void ConnectLobbyWithActivitySecret(LobbySecret activitySecret,
|
||||
std::function<void(Result, Lobby const&)> callback);
|
||||
void DisconnectLobby(LobbyId lobbyId, std::function<void(Result)> callback);
|
||||
Result GetLobby(LobbyId lobbyId, Lobby* lobby);
|
||||
Result GetLobbyActivitySecret(LobbyId lobbyId, char secret[128]);
|
||||
Result GetLobbyMetadataValue(LobbyId lobbyId, MetadataKey key, char value[4096]);
|
||||
Result GetLobbyMetadataKey(LobbyId lobbyId, std::int32_t index, char key[256]);
|
||||
Result LobbyMetadataCount(LobbyId lobbyId, std::int32_t* count);
|
||||
Result MemberCount(LobbyId lobbyId, std::int32_t* count);
|
||||
Result GetMemberUserId(LobbyId lobbyId, std::int32_t index, UserId* userId);
|
||||
Result GetMemberUser(LobbyId lobbyId, UserId userId, User* user);
|
||||
Result GetMemberMetadataValue(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
MetadataKey key,
|
||||
char value[4096]);
|
||||
Result GetMemberMetadataKey(LobbyId lobbyId, UserId userId, std::int32_t index, char key[256]);
|
||||
Result MemberMetadataCount(LobbyId lobbyId, UserId userId, std::int32_t* count);
|
||||
void UpdateMember(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
LobbyMemberTransaction const& transaction,
|
||||
std::function<void(Result)> callback);
|
||||
void SendLobbyMessage(LobbyId lobbyId,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength,
|
||||
std::function<void(Result)> callback);
|
||||
Result GetSearchQuery(LobbySearchQuery* query);
|
||||
void Search(LobbySearchQuery const& query, std::function<void(Result)> callback);
|
||||
void LobbyCount(std::int32_t* count);
|
||||
Result GetLobbyId(std::int32_t index, LobbyId* lobbyId);
|
||||
void ConnectVoice(LobbyId lobbyId, std::function<void(Result)> callback);
|
||||
void DisconnectVoice(LobbyId lobbyId, std::function<void(Result)> callback);
|
||||
Result ConnectNetwork(LobbyId lobbyId);
|
||||
Result DisconnectNetwork(LobbyId lobbyId);
|
||||
Result FlushNetwork();
|
||||
Result OpenNetworkChannel(LobbyId lobbyId, std::uint8_t channelId, bool reliable);
|
||||
Result SendNetworkMessage(LobbyId lobbyId,
|
||||
UserId userId,
|
||||
std::uint8_t channelId,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength);
|
||||
|
||||
Event<std::int64_t> OnLobbyUpdate;
|
||||
Event<std::int64_t, std::uint32_t> OnLobbyDelete;
|
||||
Event<std::int64_t, std::int64_t> OnMemberConnect;
|
||||
Event<std::int64_t, std::int64_t> OnMemberUpdate;
|
||||
Event<std::int64_t, std::int64_t> OnMemberDisconnect;
|
||||
Event<std::int64_t, std::int64_t, std::uint8_t*, std::uint32_t> OnLobbyMessage;
|
||||
Event<std::int64_t, std::int64_t, bool> OnSpeaking;
|
||||
Event<std::int64_t, std::int64_t, std::uint8_t, std::uint8_t*, std::uint32_t> OnNetworkMessage;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
LobbyManager() = default;
|
||||
LobbyManager(LobbyManager const& rhs) = delete;
|
||||
LobbyManager& operator=(LobbyManager const& rhs) = delete;
|
||||
LobbyManager(LobbyManager&& rhs) = delete;
|
||||
LobbyManager& operator=(LobbyManager&& rhs) = delete;
|
||||
|
||||
IDiscordLobbyManager* internal_;
|
||||
static IDiscordLobbyEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
103
src/lib/discord_game_sdk/cpp/network_manager.cpp
Normal file
@@ -0,0 +1,103 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "network_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class NetworkEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnMessage(void* callbackData,
|
||||
DiscordNetworkPeerId peerId,
|
||||
DiscordNetworkChannelId channelId,
|
||||
uint8_t* data,
|
||||
uint32_t dataLength)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->NetworkManager();
|
||||
module.OnMessage(peerId, channelId, data, dataLength);
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnRouteUpdate(void* callbackData, char const* routeData)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->NetworkManager();
|
||||
module.OnRouteUpdate(static_cast<const char*>(routeData));
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordNetworkEvents NetworkManager::events_{
|
||||
&NetworkEvents::OnMessage,
|
||||
&NetworkEvents::OnRouteUpdate,
|
||||
};
|
||||
|
||||
void NetworkManager::GetPeerId(NetworkPeerId* peerId)
|
||||
{
|
||||
if (!peerId) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->get_peer_id(internal_, reinterpret_cast<uint64_t*>(peerId));
|
||||
}
|
||||
|
||||
Result NetworkManager::Flush()
|
||||
{
|
||||
auto result = internal_->flush(internal_);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result NetworkManager::OpenPeer(NetworkPeerId peerId, char const* routeData)
|
||||
{
|
||||
auto result = internal_->open_peer(internal_, peerId, const_cast<char*>(routeData));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result NetworkManager::UpdatePeer(NetworkPeerId peerId, char const* routeData)
|
||||
{
|
||||
auto result = internal_->update_peer(internal_, peerId, const_cast<char*>(routeData));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result NetworkManager::ClosePeer(NetworkPeerId peerId)
|
||||
{
|
||||
auto result = internal_->close_peer(internal_, peerId);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result NetworkManager::OpenChannel(NetworkPeerId peerId, NetworkChannelId channelId, bool reliable)
|
||||
{
|
||||
auto result = internal_->open_channel(internal_, peerId, channelId, (reliable ? 1 : 0));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result NetworkManager::CloseChannel(NetworkPeerId peerId, NetworkChannelId channelId)
|
||||
{
|
||||
auto result = internal_->close_channel(internal_, peerId, channelId);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result NetworkManager::SendMessage(NetworkPeerId peerId,
|
||||
NetworkChannelId channelId,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength)
|
||||
{
|
||||
auto result = internal_->send_message(
|
||||
internal_, peerId, channelId, reinterpret_cast<uint8_t*>(data), dataLength);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
63
src/lib/discord_game_sdk/cpp/network_manager.h
Normal file
@@ -0,0 +1,63 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class NetworkManager final {
|
||||
public:
|
||||
~NetworkManager() = default;
|
||||
|
||||
/**
|
||||
* Get the local peer ID for this process.
|
||||
*/
|
||||
void GetPeerId(NetworkPeerId* peerId);
|
||||
/**
|
||||
* Send pending network messages.
|
||||
*/
|
||||
Result Flush();
|
||||
/**
|
||||
* Open a connection to a remote peer.
|
||||
*/
|
||||
Result OpenPeer(NetworkPeerId peerId, char const* routeData);
|
||||
/**
|
||||
* Update the route data for a connected peer.
|
||||
*/
|
||||
Result UpdatePeer(NetworkPeerId peerId, char const* routeData);
|
||||
/**
|
||||
* Close the connection to a remote peer.
|
||||
*/
|
||||
Result ClosePeer(NetworkPeerId peerId);
|
||||
/**
|
||||
* Open a message channel to a connected peer.
|
||||
*/
|
||||
Result OpenChannel(NetworkPeerId peerId, NetworkChannelId channelId, bool reliable);
|
||||
/**
|
||||
* Close a message channel to a connected peer.
|
||||
*/
|
||||
Result CloseChannel(NetworkPeerId peerId, NetworkChannelId channelId);
|
||||
/**
|
||||
* Send a message to a connected peer over an opened message channel.
|
||||
*/
|
||||
Result SendMessage(NetworkPeerId peerId,
|
||||
NetworkChannelId channelId,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength);
|
||||
|
||||
Event<NetworkPeerId, NetworkChannelId, std::uint8_t*, std::uint32_t> OnMessage;
|
||||
Event<char const*> OnRouteUpdate;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
NetworkManager() = default;
|
||||
NetworkManager(NetworkManager const& rhs) = delete;
|
||||
NetworkManager& operator=(NetworkManager const& rhs) = delete;
|
||||
NetworkManager(NetworkManager&& rhs) = delete;
|
||||
NetworkManager& operator=(NetworkManager&& rhs) = delete;
|
||||
|
||||
IDiscordNetworkManager* internal_;
|
||||
static IDiscordNetworkEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
229
src/lib/discord_game_sdk/cpp/overlay_manager.cpp
Normal file
@@ -0,0 +1,229 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class OverlayEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnToggle(void* callbackData, bool locked)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->OverlayManager();
|
||||
module.OnToggle((locked != 0));
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordOverlayEvents OverlayManager::events_{
|
||||
&OverlayEvents::OnToggle,
|
||||
};
|
||||
|
||||
void OverlayManager::IsEnabled(bool* enabled)
|
||||
{
|
||||
if (!enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->is_enabled(internal_, reinterpret_cast<bool*>(enabled));
|
||||
}
|
||||
|
||||
void OverlayManager::IsLocked(bool* locked)
|
||||
{
|
||||
if (!locked) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->is_locked(internal_, reinterpret_cast<bool*>(locked));
|
||||
}
|
||||
|
||||
void OverlayManager::SetLocked(bool locked, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->set_locked(internal_, (locked ? 1 : 0), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void OverlayManager::OpenActivityInvite(ActivityActionType type,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->open_activity_invite(
|
||||
internal_, static_cast<EDiscordActivityActionType>(type), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void OverlayManager::OpenGuildInvite(char const* code, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->open_guild_invite(internal_, const_cast<char*>(code), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void OverlayManager::OpenVoiceSettings(std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->open_voice_settings(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
Result OverlayManager::InitDrawingDxgi(IDXGISwapChain* swapchain, bool useMessageForwarding)
|
||||
{
|
||||
auto result =
|
||||
internal_->init_drawing_dxgi(internal_, swapchain, (useMessageForwarding ? 1 : 0));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void OverlayManager::OnPresent()
|
||||
{
|
||||
internal_->on_present(internal_);
|
||||
}
|
||||
|
||||
void OverlayManager::ForwardMessage(MSG* message)
|
||||
{
|
||||
internal_->forward_message(internal_, message);
|
||||
}
|
||||
|
||||
void OverlayManager::KeyEvent(bool down, char const* keyCode, KeyVariant variant)
|
||||
{
|
||||
internal_->key_event(internal_,
|
||||
(down ? 1 : 0),
|
||||
const_cast<char*>(keyCode),
|
||||
static_cast<EDiscordKeyVariant>(variant));
|
||||
}
|
||||
|
||||
void OverlayManager::CharEvent(char const* character)
|
||||
{
|
||||
internal_->char_event(internal_, const_cast<char*>(character));
|
||||
}
|
||||
|
||||
void OverlayManager::MouseButtonEvent(std::uint8_t down,
|
||||
std::int32_t clickCount,
|
||||
MouseButton which,
|
||||
std::int32_t x,
|
||||
std::int32_t y)
|
||||
{
|
||||
internal_->mouse_button_event(
|
||||
internal_, down, clickCount, static_cast<EDiscordMouseButton>(which), x, y);
|
||||
}
|
||||
|
||||
void OverlayManager::MouseMotionEvent(std::int32_t x, std::int32_t y)
|
||||
{
|
||||
internal_->mouse_motion_event(internal_, x, y);
|
||||
}
|
||||
|
||||
void OverlayManager::ImeCommitText(char const* text)
|
||||
{
|
||||
internal_->ime_commit_text(internal_, const_cast<char*>(text));
|
||||
}
|
||||
|
||||
void OverlayManager::ImeSetComposition(char const* text,
|
||||
ImeUnderline* underlines,
|
||||
std::uint32_t underlinesLength,
|
||||
std::int32_t from,
|
||||
std::int32_t to)
|
||||
{
|
||||
internal_->ime_set_composition(internal_,
|
||||
const_cast<char*>(text),
|
||||
reinterpret_cast<DiscordImeUnderline*>(underlines),
|
||||
underlinesLength,
|
||||
from,
|
||||
to);
|
||||
}
|
||||
|
||||
void OverlayManager::ImeCancelComposition()
|
||||
{
|
||||
internal_->ime_cancel_composition(internal_);
|
||||
}
|
||||
|
||||
void OverlayManager::SetImeCompositionRangeCallback(
|
||||
std::function<void(std::int32_t, std::int32_t, Rect*, std::uint32_t)>
|
||||
onImeCompositionRangeChanged)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData,
|
||||
int32_t from,
|
||||
int32_t to,
|
||||
DiscordRect* bounds,
|
||||
uint32_t boundsLength) -> void {
|
||||
std::unique_ptr<std::function<void(std::int32_t, std::int32_t, Rect*, std::uint32_t)>> cb(
|
||||
reinterpret_cast<std::function<void(std::int32_t, std::int32_t, Rect*, std::uint32_t)>*>(
|
||||
callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(from, to, reinterpret_cast<Rect*>(bounds), boundsLength);
|
||||
};
|
||||
std::unique_ptr<std::function<void(std::int32_t, std::int32_t, Rect*, std::uint32_t)>> cb{};
|
||||
cb.reset(new std::function<void(std::int32_t, std::int32_t, Rect*, std::uint32_t)>(
|
||||
std::move(onImeCompositionRangeChanged)));
|
||||
internal_->set_ime_composition_range_callback(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void OverlayManager::SetImeSelectionBoundsCallback(
|
||||
std::function<void(Rect, Rect, bool)> onImeSelectionBoundsChanged)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, DiscordRect anchor, DiscordRect focus, bool isAnchorFirst) -> void {
|
||||
std::unique_ptr<std::function<void(Rect, Rect, bool)>> cb(
|
||||
reinterpret_cast<std::function<void(Rect, Rect, bool)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(*reinterpret_cast<Rect const*>(&anchor),
|
||||
*reinterpret_cast<Rect const*>(&focus),
|
||||
(isAnchorFirst != 0));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Rect, Rect, bool)>> cb{};
|
||||
cb.reset(new std::function<void(Rect, Rect, bool)>(std::move(onImeSelectionBoundsChanged)));
|
||||
internal_->set_ime_selection_bounds_callback(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
bool OverlayManager::IsPointInsideClickZone(std::int32_t x, std::int32_t y)
|
||||
{
|
||||
auto result = internal_->is_point_inside_click_zone(internal_, x, y);
|
||||
return (result != 0);
|
||||
}
|
||||
|
||||
} // namespace discord
|
57
src/lib/discord_game_sdk/cpp/overlay_manager.h
Normal file
@@ -0,0 +1,57 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class OverlayManager final {
|
||||
public:
|
||||
~OverlayManager() = default;
|
||||
|
||||
void IsEnabled(bool* enabled);
|
||||
void IsLocked(bool* locked);
|
||||
void SetLocked(bool locked, std::function<void(Result)> callback);
|
||||
void OpenActivityInvite(ActivityActionType type, std::function<void(Result)> callback);
|
||||
void OpenGuildInvite(char const* code, std::function<void(Result)> callback);
|
||||
void OpenVoiceSettings(std::function<void(Result)> callback);
|
||||
Result InitDrawingDxgi(IDXGISwapChain* swapchain, bool useMessageForwarding);
|
||||
void OnPresent();
|
||||
void ForwardMessage(MSG* message);
|
||||
void KeyEvent(bool down, char const* keyCode, KeyVariant variant);
|
||||
void CharEvent(char const* character);
|
||||
void MouseButtonEvent(std::uint8_t down,
|
||||
std::int32_t clickCount,
|
||||
MouseButton which,
|
||||
std::int32_t x,
|
||||
std::int32_t y);
|
||||
void MouseMotionEvent(std::int32_t x, std::int32_t y);
|
||||
void ImeCommitText(char const* text);
|
||||
void ImeSetComposition(char const* text,
|
||||
ImeUnderline* underlines,
|
||||
std::uint32_t underlinesLength,
|
||||
std::int32_t from,
|
||||
std::int32_t to);
|
||||
void ImeCancelComposition();
|
||||
void SetImeCompositionRangeCallback(
|
||||
std::function<void(std::int32_t, std::int32_t, Rect*, std::uint32_t)>
|
||||
onImeCompositionRangeChanged);
|
||||
void SetImeSelectionBoundsCallback(
|
||||
std::function<void(Rect, Rect, bool)> onImeSelectionBoundsChanged);
|
||||
bool IsPointInsideClickZone(std::int32_t x, std::int32_t y);
|
||||
|
||||
Event<bool> OnToggle;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
OverlayManager() = default;
|
||||
OverlayManager(OverlayManager const& rhs) = delete;
|
||||
OverlayManager& operator=(OverlayManager const& rhs) = delete;
|
||||
OverlayManager(OverlayManager&& rhs) = delete;
|
||||
OverlayManager& operator=(OverlayManager&& rhs) = delete;
|
||||
|
||||
IDiscordOverlayManager* internal_;
|
||||
static IDiscordOverlayEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
91
src/lib/discord_game_sdk/cpp/relationship_manager.cpp
Normal file
@@ -0,0 +1,91 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "relationship_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class RelationshipEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnRefresh(void* callbackData)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->RelationshipManager();
|
||||
module.OnRefresh();
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnRelationshipUpdate(void* callbackData,
|
||||
DiscordRelationship* relationship)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->RelationshipManager();
|
||||
module.OnRelationshipUpdate(*reinterpret_cast<Relationship const*>(relationship));
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordRelationshipEvents RelationshipManager::events_{
|
||||
&RelationshipEvents::OnRefresh,
|
||||
&RelationshipEvents::OnRelationshipUpdate,
|
||||
};
|
||||
|
||||
void RelationshipManager::Filter(std::function<bool(Relationship const&)> filter)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, DiscordRelationship* relationship) -> bool {
|
||||
auto cb(reinterpret_cast<std::function<bool(Relationship const&)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return {};
|
||||
}
|
||||
return (*cb)(*reinterpret_cast<Relationship const*>(relationship));
|
||||
};
|
||||
std::unique_ptr<std::function<bool(Relationship const&)>> cb{};
|
||||
cb.reset(new std::function<bool(Relationship const&)>(std::move(filter)));
|
||||
internal_->filter(internal_, cb.get(), wrapper);
|
||||
}
|
||||
|
||||
Result RelationshipManager::Count(std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->count(internal_, reinterpret_cast<int32_t*>(count));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result RelationshipManager::Get(UserId userId, Relationship* relationship)
|
||||
{
|
||||
if (!relationship) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get(internal_, userId, reinterpret_cast<DiscordRelationship*>(relationship));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result RelationshipManager::GetAt(std::uint32_t index, Relationship* relationship)
|
||||
{
|
||||
if (!relationship) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_at(internal_, index, reinterpret_cast<DiscordRelationship*>(relationship));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
32
src/lib/discord_game_sdk/cpp/relationship_manager.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class RelationshipManager final {
|
||||
public:
|
||||
~RelationshipManager() = default;
|
||||
|
||||
void Filter(std::function<bool(Relationship const&)> filter);
|
||||
Result Count(std::int32_t* count);
|
||||
Result Get(UserId userId, Relationship* relationship);
|
||||
Result GetAt(std::uint32_t index, Relationship* relationship);
|
||||
|
||||
Event<> OnRefresh;
|
||||
Event<Relationship const&> OnRelationshipUpdate;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
RelationshipManager() = default;
|
||||
RelationshipManager(RelationshipManager const& rhs) = delete;
|
||||
RelationshipManager& operator=(RelationshipManager const& rhs) = delete;
|
||||
RelationshipManager(RelationshipManager&& rhs) = delete;
|
||||
RelationshipManager& operator=(RelationshipManager&& rhs) = delete;
|
||||
|
||||
IDiscordRelationshipManager* internal_;
|
||||
static IDiscordRelationshipEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
158
src/lib/discord_game_sdk/cpp/storage_manager.cpp
Normal file
@@ -0,0 +1,158 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "storage_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
Result StorageManager::Read(char const* name,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength,
|
||||
std::uint32_t* read)
|
||||
{
|
||||
if (!read) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->read(internal_,
|
||||
const_cast<char*>(name),
|
||||
reinterpret_cast<uint8_t*>(data),
|
||||
dataLength,
|
||||
reinterpret_cast<uint32_t*>(read));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void StorageManager::ReadAsync(char const* name,
|
||||
std::function<void(Result, std::uint8_t*, std::uint32_t)> callback)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordResult result, uint8_t* data, uint32_t dataLength) -> void {
|
||||
std::unique_ptr<std::function<void(Result, std::uint8_t*, std::uint32_t)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, std::uint8_t*, std::uint32_t)>*>(
|
||||
callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), data, dataLength);
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, std::uint8_t*, std::uint32_t)>> cb{};
|
||||
cb.reset(new std::function<void(Result, std::uint8_t*, std::uint32_t)>(std::move(callback)));
|
||||
internal_->read_async(internal_, const_cast<char*>(name), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void StorageManager::ReadAsyncPartial(
|
||||
char const* name,
|
||||
std::uint64_t offset,
|
||||
std::uint64_t length,
|
||||
std::function<void(Result, std::uint8_t*, std::uint32_t)> callback)
|
||||
{
|
||||
static auto wrapper =
|
||||
[](void* callbackData, EDiscordResult result, uint8_t* data, uint32_t dataLength) -> void {
|
||||
std::unique_ptr<std::function<void(Result, std::uint8_t*, std::uint32_t)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, std::uint8_t*, std::uint32_t)>*>(
|
||||
callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), data, dataLength);
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, std::uint8_t*, std::uint32_t)>> cb{};
|
||||
cb.reset(new std::function<void(Result, std::uint8_t*, std::uint32_t)>(std::move(callback)));
|
||||
internal_->read_async_partial(
|
||||
internal_, const_cast<char*>(name), offset, length, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
Result StorageManager::Write(char const* name, std::uint8_t* data, std::uint32_t dataLength)
|
||||
{
|
||||
auto result = internal_->write(
|
||||
internal_, const_cast<char*>(name), reinterpret_cast<uint8_t*>(data), dataLength);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void StorageManager::WriteAsync(char const* name,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength,
|
||||
std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->write_async(internal_,
|
||||
const_cast<char*>(name),
|
||||
reinterpret_cast<uint8_t*>(data),
|
||||
dataLength,
|
||||
cb.release(),
|
||||
wrapper);
|
||||
}
|
||||
|
||||
Result StorageManager::Delete(char const* name)
|
||||
{
|
||||
auto result = internal_->delete_(internal_, const_cast<char*>(name));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result StorageManager::Exists(char const* name, bool* exists)
|
||||
{
|
||||
if (!exists) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->exists(internal_, const_cast<char*>(name), reinterpret_cast<bool*>(exists));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void StorageManager::Count(std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->count(internal_, reinterpret_cast<int32_t*>(count));
|
||||
}
|
||||
|
||||
Result StorageManager::Stat(char const* name, FileStat* stat)
|
||||
{
|
||||
if (!stat) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->stat(internal_, const_cast<char*>(name), reinterpret_cast<DiscordFileStat*>(stat));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result StorageManager::StatAt(std::int32_t index, FileStat* stat)
|
||||
{
|
||||
if (!stat) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->stat_at(internal_, index, reinterpret_cast<DiscordFileStat*>(stat));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result StorageManager::GetPath(char path[4096])
|
||||
{
|
||||
if (!path) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_path(internal_, reinterpret_cast<DiscordPath*>(path));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
46
src/lib/discord_game_sdk/cpp/storage_manager.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class StorageManager final {
|
||||
public:
|
||||
~StorageManager() = default;
|
||||
|
||||
Result Read(char const* name,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength,
|
||||
std::uint32_t* read);
|
||||
void ReadAsync(char const* name,
|
||||
std::function<void(Result, std::uint8_t*, std::uint32_t)> callback);
|
||||
void ReadAsyncPartial(char const* name,
|
||||
std::uint64_t offset,
|
||||
std::uint64_t length,
|
||||
std::function<void(Result, std::uint8_t*, std::uint32_t)> callback);
|
||||
Result Write(char const* name, std::uint8_t* data, std::uint32_t dataLength);
|
||||
void WriteAsync(char const* name,
|
||||
std::uint8_t* data,
|
||||
std::uint32_t dataLength,
|
||||
std::function<void(Result)> callback);
|
||||
Result Delete(char const* name);
|
||||
Result Exists(char const* name, bool* exists);
|
||||
void Count(std::int32_t* count);
|
||||
Result Stat(char const* name, FileStat* stat);
|
||||
Result StatAt(std::int32_t index, FileStat* stat);
|
||||
Result GetPath(char path[4096]);
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
StorageManager() = default;
|
||||
StorageManager(StorageManager const& rhs) = delete;
|
||||
StorageManager& operator=(StorageManager const& rhs) = delete;
|
||||
StorageManager(StorageManager&& rhs) = delete;
|
||||
StorageManager& operator=(StorageManager&& rhs) = delete;
|
||||
|
||||
IDiscordStorageManager* internal_;
|
||||
static IDiscordStorageEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
162
src/lib/discord_game_sdk/cpp/store_manager.cpp
Normal file
@@ -0,0 +1,162 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "store_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class StoreEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnEntitlementCreate(void* callbackData,
|
||||
DiscordEntitlement* entitlement)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->StoreManager();
|
||||
module.OnEntitlementCreate(*reinterpret_cast<Entitlement const*>(entitlement));
|
||||
}
|
||||
|
||||
static void DISCORD_CALLBACK OnEntitlementDelete(void* callbackData,
|
||||
DiscordEntitlement* entitlement)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->StoreManager();
|
||||
module.OnEntitlementDelete(*reinterpret_cast<Entitlement const*>(entitlement));
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordStoreEvents StoreManager::events_{
|
||||
&StoreEvents::OnEntitlementCreate,
|
||||
&StoreEvents::OnEntitlementDelete,
|
||||
};
|
||||
|
||||
void StoreManager::FetchSkus(std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->fetch_skus(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void StoreManager::CountSkus(std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->count_skus(internal_, reinterpret_cast<int32_t*>(count));
|
||||
}
|
||||
|
||||
Result StoreManager::GetSku(Snowflake skuId, Sku* sku)
|
||||
{
|
||||
if (!sku) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_sku(internal_, skuId, reinterpret_cast<DiscordSku*>(sku));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result StoreManager::GetSkuAt(std::int32_t index, Sku* sku)
|
||||
{
|
||||
if (!sku) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_sku_at(internal_, index, reinterpret_cast<DiscordSku*>(sku));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void StoreManager::FetchEntitlements(std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->fetch_entitlements(internal_, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
void StoreManager::CountEntitlements(std::int32_t* count)
|
||||
{
|
||||
if (!count) {
|
||||
return;
|
||||
}
|
||||
|
||||
internal_->count_entitlements(internal_, reinterpret_cast<int32_t*>(count));
|
||||
}
|
||||
|
||||
Result StoreManager::GetEntitlement(Snowflake entitlementId, Entitlement* entitlement)
|
||||
{
|
||||
if (!entitlement) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_entitlement(
|
||||
internal_, entitlementId, reinterpret_cast<DiscordEntitlement*>(entitlement));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result StoreManager::GetEntitlementAt(std::int32_t index, Entitlement* entitlement)
|
||||
{
|
||||
if (!entitlement) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_entitlement_at(
|
||||
internal_, index, reinterpret_cast<DiscordEntitlement*>(entitlement));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result StoreManager::HasSkuEntitlement(Snowflake skuId, bool* hasEntitlement)
|
||||
{
|
||||
if (!hasEntitlement) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->has_sku_entitlement(internal_, skuId, reinterpret_cast<bool*>(hasEntitlement));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void StoreManager::StartPurchase(Snowflake skuId, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->start_purchase(internal_, skuId, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
} // namespace discord
|
38
src/lib/discord_game_sdk/cpp/store_manager.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class StoreManager final {
|
||||
public:
|
||||
~StoreManager() = default;
|
||||
|
||||
void FetchSkus(std::function<void(Result)> callback);
|
||||
void CountSkus(std::int32_t* count);
|
||||
Result GetSku(Snowflake skuId, Sku* sku);
|
||||
Result GetSkuAt(std::int32_t index, Sku* sku);
|
||||
void FetchEntitlements(std::function<void(Result)> callback);
|
||||
void CountEntitlements(std::int32_t* count);
|
||||
Result GetEntitlement(Snowflake entitlementId, Entitlement* entitlement);
|
||||
Result GetEntitlementAt(std::int32_t index, Entitlement* entitlement);
|
||||
Result HasSkuEntitlement(Snowflake skuId, bool* hasEntitlement);
|
||||
void StartPurchase(Snowflake skuId, std::function<void(Result)> callback);
|
||||
|
||||
Event<Entitlement const&> OnEntitlementCreate;
|
||||
Event<Entitlement const&> OnEntitlementDelete;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
StoreManager() = default;
|
||||
StoreManager(StoreManager const& rhs) = delete;
|
||||
StoreManager& operator=(StoreManager const& rhs) = delete;
|
||||
StoreManager(StoreManager&& rhs) = delete;
|
||||
StoreManager& operator=(StoreManager&& rhs) = delete;
|
||||
|
||||
IDiscordStoreManager* internal_;
|
||||
static IDiscordStoreEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
879
src/lib/discord_game_sdk/cpp/types.cpp
Normal file
@@ -0,0 +1,879 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
void User::SetId(UserId id)
|
||||
{
|
||||
internal_.id = id;
|
||||
}
|
||||
|
||||
UserId User::GetId() const
|
||||
{
|
||||
return internal_.id;
|
||||
}
|
||||
|
||||
void User::SetUsername(char const* username)
|
||||
{
|
||||
strncpy(internal_.username, username, 256);
|
||||
internal_.username[256 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* User::GetUsername() const
|
||||
{
|
||||
return internal_.username;
|
||||
}
|
||||
|
||||
void User::SetDiscriminator(char const* discriminator)
|
||||
{
|
||||
strncpy(internal_.discriminator, discriminator, 8);
|
||||
internal_.discriminator[8 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* User::GetDiscriminator() const
|
||||
{
|
||||
return internal_.discriminator;
|
||||
}
|
||||
|
||||
void User::SetAvatar(char const* avatar)
|
||||
{
|
||||
strncpy(internal_.avatar, avatar, 128);
|
||||
internal_.avatar[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* User::GetAvatar() const
|
||||
{
|
||||
return internal_.avatar;
|
||||
}
|
||||
|
||||
void User::SetBot(bool bot)
|
||||
{
|
||||
internal_.bot = bot;
|
||||
}
|
||||
|
||||
bool User::GetBot() const
|
||||
{
|
||||
return internal_.bot != 0;
|
||||
}
|
||||
|
||||
void OAuth2Token::SetAccessToken(char const* accessToken)
|
||||
{
|
||||
strncpy(internal_.access_token, accessToken, 128);
|
||||
internal_.access_token[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* OAuth2Token::GetAccessToken() const
|
||||
{
|
||||
return internal_.access_token;
|
||||
}
|
||||
|
||||
void OAuth2Token::SetScopes(char const* scopes)
|
||||
{
|
||||
strncpy(internal_.scopes, scopes, 1024);
|
||||
internal_.scopes[1024 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* OAuth2Token::GetScopes() const
|
||||
{
|
||||
return internal_.scopes;
|
||||
}
|
||||
|
||||
void OAuth2Token::SetExpires(Timestamp expires)
|
||||
{
|
||||
internal_.expires = expires;
|
||||
}
|
||||
|
||||
Timestamp OAuth2Token::GetExpires() const
|
||||
{
|
||||
return internal_.expires;
|
||||
}
|
||||
|
||||
void ImageHandle::SetType(ImageType type)
|
||||
{
|
||||
internal_.type = static_cast<EDiscordImageType>(type);
|
||||
}
|
||||
|
||||
ImageType ImageHandle::GetType() const
|
||||
{
|
||||
return static_cast<ImageType>(internal_.type);
|
||||
}
|
||||
|
||||
void ImageHandle::SetId(std::int64_t id)
|
||||
{
|
||||
internal_.id = id;
|
||||
}
|
||||
|
||||
std::int64_t ImageHandle::GetId() const
|
||||
{
|
||||
return internal_.id;
|
||||
}
|
||||
|
||||
void ImageHandle::SetSize(std::uint32_t size)
|
||||
{
|
||||
internal_.size = size;
|
||||
}
|
||||
|
||||
std::uint32_t ImageHandle::GetSize() const
|
||||
{
|
||||
return internal_.size;
|
||||
}
|
||||
|
||||
void ImageDimensions::SetWidth(std::uint32_t width)
|
||||
{
|
||||
internal_.width = width;
|
||||
}
|
||||
|
||||
std::uint32_t ImageDimensions::GetWidth() const
|
||||
{
|
||||
return internal_.width;
|
||||
}
|
||||
|
||||
void ImageDimensions::SetHeight(std::uint32_t height)
|
||||
{
|
||||
internal_.height = height;
|
||||
}
|
||||
|
||||
std::uint32_t ImageDimensions::GetHeight() const
|
||||
{
|
||||
return internal_.height;
|
||||
}
|
||||
|
||||
void ActivityTimestamps::SetStart(Timestamp start)
|
||||
{
|
||||
internal_.start = start;
|
||||
}
|
||||
|
||||
Timestamp ActivityTimestamps::GetStart() const
|
||||
{
|
||||
return internal_.start;
|
||||
}
|
||||
|
||||
void ActivityTimestamps::SetEnd(Timestamp end)
|
||||
{
|
||||
internal_.end = end;
|
||||
}
|
||||
|
||||
Timestamp ActivityTimestamps::GetEnd() const
|
||||
{
|
||||
return internal_.end;
|
||||
}
|
||||
|
||||
void ActivityAssets::SetLargeImage(char const* largeImage)
|
||||
{
|
||||
strncpy(internal_.large_image, largeImage, 128);
|
||||
internal_.large_image[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivityAssets::GetLargeImage() const
|
||||
{
|
||||
return internal_.large_image;
|
||||
}
|
||||
|
||||
void ActivityAssets::SetLargeText(char const* largeText)
|
||||
{
|
||||
strncpy(internal_.large_text, largeText, 128);
|
||||
internal_.large_text[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivityAssets::GetLargeText() const
|
||||
{
|
||||
return internal_.large_text;
|
||||
}
|
||||
|
||||
void ActivityAssets::SetSmallImage(char const* smallImage)
|
||||
{
|
||||
strncpy(internal_.small_image, smallImage, 128);
|
||||
internal_.small_image[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivityAssets::GetSmallImage() const
|
||||
{
|
||||
return internal_.small_image;
|
||||
}
|
||||
|
||||
void ActivityAssets::SetSmallText(char const* smallText)
|
||||
{
|
||||
strncpy(internal_.small_text, smallText, 128);
|
||||
internal_.small_text[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivityAssets::GetSmallText() const
|
||||
{
|
||||
return internal_.small_text;
|
||||
}
|
||||
|
||||
void PartySize::SetCurrentSize(std::int32_t currentSize)
|
||||
{
|
||||
internal_.current_size = currentSize;
|
||||
}
|
||||
|
||||
std::int32_t PartySize::GetCurrentSize() const
|
||||
{
|
||||
return internal_.current_size;
|
||||
}
|
||||
|
||||
void PartySize::SetMaxSize(std::int32_t maxSize)
|
||||
{
|
||||
internal_.max_size = maxSize;
|
||||
}
|
||||
|
||||
std::int32_t PartySize::GetMaxSize() const
|
||||
{
|
||||
return internal_.max_size;
|
||||
}
|
||||
|
||||
void ActivityParty::SetId(char const* id)
|
||||
{
|
||||
strncpy(internal_.id, id, 128);
|
||||
internal_.id[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivityParty::GetId() const
|
||||
{
|
||||
return internal_.id;
|
||||
}
|
||||
|
||||
PartySize& ActivityParty::GetSize()
|
||||
{
|
||||
return reinterpret_cast<PartySize&>(internal_.size);
|
||||
}
|
||||
|
||||
PartySize const& ActivityParty::GetSize() const
|
||||
{
|
||||
return reinterpret_cast<PartySize const&>(internal_.size);
|
||||
}
|
||||
|
||||
void ActivityParty::SetPrivacy(ActivityPartyPrivacy privacy)
|
||||
{
|
||||
internal_.privacy = static_cast<EDiscordActivityPartyPrivacy>(privacy);
|
||||
}
|
||||
|
||||
ActivityPartyPrivacy ActivityParty::GetPrivacy() const
|
||||
{
|
||||
return static_cast<ActivityPartyPrivacy>(internal_.privacy);
|
||||
}
|
||||
|
||||
void ActivitySecrets::SetMatch(char const* match)
|
||||
{
|
||||
strncpy(internal_.match, match, 128);
|
||||
internal_.match[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivitySecrets::GetMatch() const
|
||||
{
|
||||
return internal_.match;
|
||||
}
|
||||
|
||||
void ActivitySecrets::SetJoin(char const* join)
|
||||
{
|
||||
strncpy(internal_.join, join, 128);
|
||||
internal_.join[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivitySecrets::GetJoin() const
|
||||
{
|
||||
return internal_.join;
|
||||
}
|
||||
|
||||
void ActivitySecrets::SetSpectate(char const* spectate)
|
||||
{
|
||||
strncpy(internal_.spectate, spectate, 128);
|
||||
internal_.spectate[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* ActivitySecrets::GetSpectate() const
|
||||
{
|
||||
return internal_.spectate;
|
||||
}
|
||||
|
||||
void Activity::SetType(ActivityType type)
|
||||
{
|
||||
internal_.type = static_cast<EDiscordActivityType>(type);
|
||||
}
|
||||
|
||||
ActivityType Activity::GetType() const
|
||||
{
|
||||
return static_cast<ActivityType>(internal_.type);
|
||||
}
|
||||
|
||||
void Activity::SetApplicationId(std::int64_t applicationId)
|
||||
{
|
||||
internal_.application_id = applicationId;
|
||||
}
|
||||
|
||||
std::int64_t Activity::GetApplicationId() const
|
||||
{
|
||||
return internal_.application_id;
|
||||
}
|
||||
|
||||
void Activity::SetName(char const* name)
|
||||
{
|
||||
strncpy(internal_.name, name, 128);
|
||||
internal_.name[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* Activity::GetName() const
|
||||
{
|
||||
return internal_.name;
|
||||
}
|
||||
|
||||
void Activity::SetState(char const* state)
|
||||
{
|
||||
strncpy(internal_.state, state, 128);
|
||||
internal_.state[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* Activity::GetState() const
|
||||
{
|
||||
return internal_.state;
|
||||
}
|
||||
|
||||
void Activity::SetDetails(char const* details)
|
||||
{
|
||||
strncpy(internal_.details, details, 128);
|
||||
internal_.details[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* Activity::GetDetails() const
|
||||
{
|
||||
return internal_.details;
|
||||
}
|
||||
|
||||
ActivityTimestamps& Activity::GetTimestamps()
|
||||
{
|
||||
return reinterpret_cast<ActivityTimestamps&>(internal_.timestamps);
|
||||
}
|
||||
|
||||
ActivityTimestamps const& Activity::GetTimestamps() const
|
||||
{
|
||||
return reinterpret_cast<ActivityTimestamps const&>(internal_.timestamps);
|
||||
}
|
||||
|
||||
ActivityAssets& Activity::GetAssets()
|
||||
{
|
||||
return reinterpret_cast<ActivityAssets&>(internal_.assets);
|
||||
}
|
||||
|
||||
ActivityAssets const& Activity::GetAssets() const
|
||||
{
|
||||
return reinterpret_cast<ActivityAssets const&>(internal_.assets);
|
||||
}
|
||||
|
||||
ActivityParty& Activity::GetParty()
|
||||
{
|
||||
return reinterpret_cast<ActivityParty&>(internal_.party);
|
||||
}
|
||||
|
||||
ActivityParty const& Activity::GetParty() const
|
||||
{
|
||||
return reinterpret_cast<ActivityParty const&>(internal_.party);
|
||||
}
|
||||
|
||||
ActivitySecrets& Activity::GetSecrets()
|
||||
{
|
||||
return reinterpret_cast<ActivitySecrets&>(internal_.secrets);
|
||||
}
|
||||
|
||||
ActivitySecrets const& Activity::GetSecrets() const
|
||||
{
|
||||
return reinterpret_cast<ActivitySecrets const&>(internal_.secrets);
|
||||
}
|
||||
|
||||
void Activity::SetInstance(bool instance)
|
||||
{
|
||||
internal_.instance = instance;
|
||||
}
|
||||
|
||||
bool Activity::GetInstance() const
|
||||
{
|
||||
return internal_.instance != 0;
|
||||
}
|
||||
|
||||
void Activity::SetSupportedPlatforms(std::uint32_t supportedPlatforms)
|
||||
{
|
||||
internal_.supported_platforms = supportedPlatforms;
|
||||
}
|
||||
|
||||
std::uint32_t Activity::GetSupportedPlatforms() const
|
||||
{
|
||||
return internal_.supported_platforms;
|
||||
}
|
||||
|
||||
void Presence::SetStatus(Status status)
|
||||
{
|
||||
internal_.status = static_cast<EDiscordStatus>(status);
|
||||
}
|
||||
|
||||
Status Presence::GetStatus() const
|
||||
{
|
||||
return static_cast<Status>(internal_.status);
|
||||
}
|
||||
|
||||
Activity& Presence::GetActivity()
|
||||
{
|
||||
return reinterpret_cast<Activity&>(internal_.activity);
|
||||
}
|
||||
|
||||
Activity const& Presence::GetActivity() const
|
||||
{
|
||||
return reinterpret_cast<Activity const&>(internal_.activity);
|
||||
}
|
||||
|
||||
void Relationship::SetType(RelationshipType type)
|
||||
{
|
||||
internal_.type = static_cast<EDiscordRelationshipType>(type);
|
||||
}
|
||||
|
||||
RelationshipType Relationship::GetType() const
|
||||
{
|
||||
return static_cast<RelationshipType>(internal_.type);
|
||||
}
|
||||
|
||||
User& Relationship::GetUser()
|
||||
{
|
||||
return reinterpret_cast<User&>(internal_.user);
|
||||
}
|
||||
|
||||
User const& Relationship::GetUser() const
|
||||
{
|
||||
return reinterpret_cast<User const&>(internal_.user);
|
||||
}
|
||||
|
||||
Presence& Relationship::GetPresence()
|
||||
{
|
||||
return reinterpret_cast<Presence&>(internal_.presence);
|
||||
}
|
||||
|
||||
Presence const& Relationship::GetPresence() const
|
||||
{
|
||||
return reinterpret_cast<Presence const&>(internal_.presence);
|
||||
}
|
||||
|
||||
void Lobby::SetId(LobbyId id)
|
||||
{
|
||||
internal_.id = id;
|
||||
}
|
||||
|
||||
LobbyId Lobby::GetId() const
|
||||
{
|
||||
return internal_.id;
|
||||
}
|
||||
|
||||
void Lobby::SetType(LobbyType type)
|
||||
{
|
||||
internal_.type = static_cast<EDiscordLobbyType>(type);
|
||||
}
|
||||
|
||||
LobbyType Lobby::GetType() const
|
||||
{
|
||||
return static_cast<LobbyType>(internal_.type);
|
||||
}
|
||||
|
||||
void Lobby::SetOwnerId(UserId ownerId)
|
||||
{
|
||||
internal_.owner_id = ownerId;
|
||||
}
|
||||
|
||||
UserId Lobby::GetOwnerId() const
|
||||
{
|
||||
return internal_.owner_id;
|
||||
}
|
||||
|
||||
void Lobby::SetSecret(LobbySecret secret)
|
||||
{
|
||||
strncpy(internal_.secret, secret, 128);
|
||||
internal_.secret[128 - 1] = '\0';
|
||||
}
|
||||
|
||||
LobbySecret Lobby::GetSecret() const
|
||||
{
|
||||
return internal_.secret;
|
||||
}
|
||||
|
||||
void Lobby::SetCapacity(std::uint32_t capacity)
|
||||
{
|
||||
internal_.capacity = capacity;
|
||||
}
|
||||
|
||||
std::uint32_t Lobby::GetCapacity() const
|
||||
{
|
||||
return internal_.capacity;
|
||||
}
|
||||
|
||||
void Lobby::SetLocked(bool locked)
|
||||
{
|
||||
internal_.locked = locked;
|
||||
}
|
||||
|
||||
bool Lobby::GetLocked() const
|
||||
{
|
||||
return internal_.locked != 0;
|
||||
}
|
||||
|
||||
void ImeUnderline::SetFrom(std::int32_t from)
|
||||
{
|
||||
internal_.from = from;
|
||||
}
|
||||
|
||||
std::int32_t ImeUnderline::GetFrom() const
|
||||
{
|
||||
return internal_.from;
|
||||
}
|
||||
|
||||
void ImeUnderline::SetTo(std::int32_t to)
|
||||
{
|
||||
internal_.to = to;
|
||||
}
|
||||
|
||||
std::int32_t ImeUnderline::GetTo() const
|
||||
{
|
||||
return internal_.to;
|
||||
}
|
||||
|
||||
void ImeUnderline::SetColor(std::uint32_t color)
|
||||
{
|
||||
internal_.color = color;
|
||||
}
|
||||
|
||||
std::uint32_t ImeUnderline::GetColor() const
|
||||
{
|
||||
return internal_.color;
|
||||
}
|
||||
|
||||
void ImeUnderline::SetBackgroundColor(std::uint32_t backgroundColor)
|
||||
{
|
||||
internal_.background_color = backgroundColor;
|
||||
}
|
||||
|
||||
std::uint32_t ImeUnderline::GetBackgroundColor() const
|
||||
{
|
||||
return internal_.background_color;
|
||||
}
|
||||
|
||||
void ImeUnderline::SetThick(bool thick)
|
||||
{
|
||||
internal_.thick = thick;
|
||||
}
|
||||
|
||||
bool ImeUnderline::GetThick() const
|
||||
{
|
||||
return internal_.thick != 0;
|
||||
}
|
||||
|
||||
void Rect::SetLeft(std::int32_t left)
|
||||
{
|
||||
internal_.left = left;
|
||||
}
|
||||
|
||||
std::int32_t Rect::GetLeft() const
|
||||
{
|
||||
return internal_.left;
|
||||
}
|
||||
|
||||
void Rect::SetTop(std::int32_t top)
|
||||
{
|
||||
internal_.top = top;
|
||||
}
|
||||
|
||||
std::int32_t Rect::GetTop() const
|
||||
{
|
||||
return internal_.top;
|
||||
}
|
||||
|
||||
void Rect::SetRight(std::int32_t right)
|
||||
{
|
||||
internal_.right = right;
|
||||
}
|
||||
|
||||
std::int32_t Rect::GetRight() const
|
||||
{
|
||||
return internal_.right;
|
||||
}
|
||||
|
||||
void Rect::SetBottom(std::int32_t bottom)
|
||||
{
|
||||
internal_.bottom = bottom;
|
||||
}
|
||||
|
||||
std::int32_t Rect::GetBottom() const
|
||||
{
|
||||
return internal_.bottom;
|
||||
}
|
||||
|
||||
void FileStat::SetFilename(char const* filename)
|
||||
{
|
||||
strncpy(internal_.filename, filename, 260);
|
||||
internal_.filename[260 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* FileStat::GetFilename() const
|
||||
{
|
||||
return internal_.filename;
|
||||
}
|
||||
|
||||
void FileStat::SetSize(std::uint64_t size)
|
||||
{
|
||||
internal_.size = size;
|
||||
}
|
||||
|
||||
std::uint64_t FileStat::GetSize() const
|
||||
{
|
||||
return internal_.size;
|
||||
}
|
||||
|
||||
void FileStat::SetLastModified(std::uint64_t lastModified)
|
||||
{
|
||||
internal_.last_modified = lastModified;
|
||||
}
|
||||
|
||||
std::uint64_t FileStat::GetLastModified() const
|
||||
{
|
||||
return internal_.last_modified;
|
||||
}
|
||||
|
||||
void Entitlement::SetId(Snowflake id)
|
||||
{
|
||||
internal_.id = id;
|
||||
}
|
||||
|
||||
Snowflake Entitlement::GetId() const
|
||||
{
|
||||
return internal_.id;
|
||||
}
|
||||
|
||||
void Entitlement::SetType(EntitlementType type)
|
||||
{
|
||||
internal_.type = static_cast<EDiscordEntitlementType>(type);
|
||||
}
|
||||
|
||||
EntitlementType Entitlement::GetType() const
|
||||
{
|
||||
return static_cast<EntitlementType>(internal_.type);
|
||||
}
|
||||
|
||||
void Entitlement::SetSkuId(Snowflake skuId)
|
||||
{
|
||||
internal_.sku_id = skuId;
|
||||
}
|
||||
|
||||
Snowflake Entitlement::GetSkuId() const
|
||||
{
|
||||
return internal_.sku_id;
|
||||
}
|
||||
|
||||
void SkuPrice::SetAmount(std::uint32_t amount)
|
||||
{
|
||||
internal_.amount = amount;
|
||||
}
|
||||
|
||||
std::uint32_t SkuPrice::GetAmount() const
|
||||
{
|
||||
return internal_.amount;
|
||||
}
|
||||
|
||||
void SkuPrice::SetCurrency(char const* currency)
|
||||
{
|
||||
strncpy(internal_.currency, currency, 16);
|
||||
internal_.currency[16 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* SkuPrice::GetCurrency() const
|
||||
{
|
||||
return internal_.currency;
|
||||
}
|
||||
|
||||
void Sku::SetId(Snowflake id)
|
||||
{
|
||||
internal_.id = id;
|
||||
}
|
||||
|
||||
Snowflake Sku::GetId() const
|
||||
{
|
||||
return internal_.id;
|
||||
}
|
||||
|
||||
void Sku::SetType(SkuType type)
|
||||
{
|
||||
internal_.type = static_cast<EDiscordSkuType>(type);
|
||||
}
|
||||
|
||||
SkuType Sku::GetType() const
|
||||
{
|
||||
return static_cast<SkuType>(internal_.type);
|
||||
}
|
||||
|
||||
void Sku::SetName(char const* name)
|
||||
{
|
||||
strncpy(internal_.name, name, 256);
|
||||
internal_.name[256 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* Sku::GetName() const
|
||||
{
|
||||
return internal_.name;
|
||||
}
|
||||
|
||||
SkuPrice& Sku::GetPrice()
|
||||
{
|
||||
return reinterpret_cast<SkuPrice&>(internal_.price);
|
||||
}
|
||||
|
||||
SkuPrice const& Sku::GetPrice() const
|
||||
{
|
||||
return reinterpret_cast<SkuPrice const&>(internal_.price);
|
||||
}
|
||||
|
||||
void InputMode::SetType(InputModeType type)
|
||||
{
|
||||
internal_.type = static_cast<EDiscordInputModeType>(type);
|
||||
}
|
||||
|
||||
InputModeType InputMode::GetType() const
|
||||
{
|
||||
return static_cast<InputModeType>(internal_.type);
|
||||
}
|
||||
|
||||
void InputMode::SetShortcut(char const* shortcut)
|
||||
{
|
||||
strncpy(internal_.shortcut, shortcut, 256);
|
||||
internal_.shortcut[256 - 1] = '\0';
|
||||
}
|
||||
|
||||
char const* InputMode::GetShortcut() const
|
||||
{
|
||||
return internal_.shortcut;
|
||||
}
|
||||
|
||||
void UserAchievement::SetUserId(Snowflake userId)
|
||||
{
|
||||
internal_.user_id = userId;
|
||||
}
|
||||
|
||||
Snowflake UserAchievement::GetUserId() const
|
||||
{
|
||||
return internal_.user_id;
|
||||
}
|
||||
|
||||
void UserAchievement::SetAchievementId(Snowflake achievementId)
|
||||
{
|
||||
internal_.achievement_id = achievementId;
|
||||
}
|
||||
|
||||
Snowflake UserAchievement::GetAchievementId() const
|
||||
{
|
||||
return internal_.achievement_id;
|
||||
}
|
||||
|
||||
void UserAchievement::SetPercentComplete(std::uint8_t percentComplete)
|
||||
{
|
||||
internal_.percent_complete = percentComplete;
|
||||
}
|
||||
|
||||
std::uint8_t UserAchievement::GetPercentComplete() const
|
||||
{
|
||||
return internal_.percent_complete;
|
||||
}
|
||||
|
||||
void UserAchievement::SetUnlockedAt(DateTime unlockedAt)
|
||||
{
|
||||
strncpy(internal_.unlocked_at, unlockedAt, 64);
|
||||
internal_.unlocked_at[64 - 1] = '\0';
|
||||
}
|
||||
|
||||
DateTime UserAchievement::GetUnlockedAt() const
|
||||
{
|
||||
return internal_.unlocked_at;
|
||||
}
|
||||
|
||||
Result LobbyTransaction::SetType(LobbyType type)
|
||||
{
|
||||
auto result = internal_->set_type(internal_, static_cast<EDiscordLobbyType>(type));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyTransaction::SetOwner(UserId ownerId)
|
||||
{
|
||||
auto result = internal_->set_owner(internal_, ownerId);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyTransaction::SetCapacity(std::uint32_t capacity)
|
||||
{
|
||||
auto result = internal_->set_capacity(internal_, capacity);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyTransaction::SetMetadata(MetadataKey key, MetadataValue value)
|
||||
{
|
||||
auto result =
|
||||
internal_->set_metadata(internal_, const_cast<char*>(key), const_cast<char*>(value));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyTransaction::DeleteMetadata(MetadataKey key)
|
||||
{
|
||||
auto result = internal_->delete_metadata(internal_, const_cast<char*>(key));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyTransaction::SetLocked(bool locked)
|
||||
{
|
||||
auto result = internal_->set_locked(internal_, (locked ? 1 : 0));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyMemberTransaction::SetMetadata(MetadataKey key, MetadataValue value)
|
||||
{
|
||||
auto result =
|
||||
internal_->set_metadata(internal_, const_cast<char*>(key), const_cast<char*>(value));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbyMemberTransaction::DeleteMetadata(MetadataKey key)
|
||||
{
|
||||
auto result = internal_->delete_metadata(internal_, const_cast<char*>(key));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbySearchQuery::Filter(MetadataKey key,
|
||||
LobbySearchComparison comparison,
|
||||
LobbySearchCast cast,
|
||||
MetadataValue value)
|
||||
{
|
||||
auto result = internal_->filter(internal_,
|
||||
const_cast<char*>(key),
|
||||
static_cast<EDiscordLobbySearchComparison>(comparison),
|
||||
static_cast<EDiscordLobbySearchCast>(cast),
|
||||
const_cast<char*>(value));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbySearchQuery::Sort(MetadataKey key, LobbySearchCast cast, MetadataValue value)
|
||||
{
|
||||
auto result = internal_->sort(internal_,
|
||||
const_cast<char*>(key),
|
||||
static_cast<EDiscordLobbySearchCast>(cast),
|
||||
const_cast<char*>(value));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbySearchQuery::Limit(std::uint32_t limit)
|
||||
{
|
||||
auto result = internal_->limit(internal_, limit);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result LobbySearchQuery::Distance(LobbySearchDistance distance)
|
||||
{
|
||||
auto result =
|
||||
internal_->distance(internal_, static_cast<EDiscordLobbySearchDistance>(distance));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
568
src/lib/discord_game_sdk/cpp/types.h
Normal file
@@ -0,0 +1,568 @@
|
||||
#include <cstdint>
|
||||
#pragma once
|
||||
|
||||
#include "ffi.h"
|
||||
#include "event.h"
|
||||
#ifdef _WIN32
|
||||
#include <Windows.h>
|
||||
#include <dxgi.h>
|
||||
#endif
|
||||
|
||||
namespace discord {
|
||||
|
||||
enum class Result {
|
||||
Ok = 0,
|
||||
ServiceUnavailable = 1,
|
||||
InvalidVersion = 2,
|
||||
LockFailed = 3,
|
||||
InternalError = 4,
|
||||
InvalidPayload = 5,
|
||||
InvalidCommand = 6,
|
||||
InvalidPermissions = 7,
|
||||
NotFetched = 8,
|
||||
NotFound = 9,
|
||||
Conflict = 10,
|
||||
InvalidSecret = 11,
|
||||
InvalidJoinSecret = 12,
|
||||
NoEligibleActivity = 13,
|
||||
InvalidInvite = 14,
|
||||
NotAuthenticated = 15,
|
||||
InvalidAccessToken = 16,
|
||||
ApplicationMismatch = 17,
|
||||
InvalidDataUrl = 18,
|
||||
InvalidBase64 = 19,
|
||||
NotFiltered = 20,
|
||||
LobbyFull = 21,
|
||||
InvalidLobbySecret = 22,
|
||||
InvalidFilename = 23,
|
||||
InvalidFileSize = 24,
|
||||
InvalidEntitlement = 25,
|
||||
NotInstalled = 26,
|
||||
NotRunning = 27,
|
||||
InsufficientBuffer = 28,
|
||||
PurchaseCanceled = 29,
|
||||
InvalidGuild = 30,
|
||||
InvalidEvent = 31,
|
||||
InvalidChannel = 32,
|
||||
InvalidOrigin = 33,
|
||||
RateLimited = 34,
|
||||
OAuth2Error = 35,
|
||||
SelectChannelTimeout = 36,
|
||||
GetGuildTimeout = 37,
|
||||
SelectVoiceForceRequired = 38,
|
||||
CaptureShortcutAlreadyListening = 39,
|
||||
UnauthorizedForAchievement = 40,
|
||||
InvalidGiftCode = 41,
|
||||
PurchaseError = 42,
|
||||
TransactionAborted = 43,
|
||||
DrawingInitFailed = 44,
|
||||
};
|
||||
|
||||
enum class CreateFlags {
|
||||
Default = 0,
|
||||
NoRequireDiscord = 1,
|
||||
};
|
||||
|
||||
enum class LogLevel {
|
||||
Error = 1,
|
||||
Warn,
|
||||
Info,
|
||||
Debug,
|
||||
};
|
||||
|
||||
enum class UserFlag {
|
||||
Partner = 2,
|
||||
HypeSquadEvents = 4,
|
||||
HypeSquadHouse1 = 64,
|
||||
HypeSquadHouse2 = 128,
|
||||
HypeSquadHouse3 = 256,
|
||||
};
|
||||
|
||||
enum class PremiumType {
|
||||
None = 0,
|
||||
Tier1 = 1,
|
||||
Tier2 = 2,
|
||||
};
|
||||
|
||||
enum class ImageType {
|
||||
User,
|
||||
};
|
||||
|
||||
enum class ActivityPartyPrivacy {
|
||||
Private = 0,
|
||||
Public = 1,
|
||||
};
|
||||
|
||||
enum class ActivityType {
|
||||
Playing,
|
||||
Streaming,
|
||||
Listening,
|
||||
Watching,
|
||||
};
|
||||
|
||||
enum class ActivityActionType {
|
||||
Join = 1,
|
||||
Spectate,
|
||||
};
|
||||
|
||||
enum class ActivitySupportedPlatformFlags {
|
||||
Desktop = 1,
|
||||
Android = 2,
|
||||
iOS = 4,
|
||||
};
|
||||
|
||||
enum class ActivityJoinRequestReply {
|
||||
No,
|
||||
Yes,
|
||||
Ignore,
|
||||
};
|
||||
|
||||
enum class Status {
|
||||
Offline = 0,
|
||||
Online = 1,
|
||||
Idle = 2,
|
||||
DoNotDisturb = 3,
|
||||
};
|
||||
|
||||
enum class RelationshipType {
|
||||
None,
|
||||
Friend,
|
||||
Blocked,
|
||||
PendingIncoming,
|
||||
PendingOutgoing,
|
||||
Implicit,
|
||||
};
|
||||
|
||||
enum class LobbyType {
|
||||
Private = 1,
|
||||
Public,
|
||||
};
|
||||
|
||||
enum class LobbySearchComparison {
|
||||
LessThanOrEqual = -2,
|
||||
LessThan,
|
||||
Equal,
|
||||
GreaterThan,
|
||||
GreaterThanOrEqual,
|
||||
NotEqual,
|
||||
};
|
||||
|
||||
enum class LobbySearchCast {
|
||||
String = 1,
|
||||
Number,
|
||||
};
|
||||
|
||||
enum class LobbySearchDistance {
|
||||
Local,
|
||||
Default,
|
||||
Extended,
|
||||
Global,
|
||||
};
|
||||
|
||||
enum class KeyVariant {
|
||||
Normal,
|
||||
Right,
|
||||
Left,
|
||||
};
|
||||
|
||||
enum class MouseButton {
|
||||
Left,
|
||||
Middle,
|
||||
Right,
|
||||
};
|
||||
|
||||
enum class EntitlementType {
|
||||
Purchase = 1,
|
||||
PremiumSubscription,
|
||||
DeveloperGift,
|
||||
TestModePurchase,
|
||||
FreePurchase,
|
||||
UserGift,
|
||||
PremiumPurchase,
|
||||
};
|
||||
|
||||
enum class SkuType {
|
||||
Application = 1,
|
||||
DLC,
|
||||
Consumable,
|
||||
Bundle,
|
||||
};
|
||||
|
||||
enum class InputModeType {
|
||||
VoiceActivity = 0,
|
||||
PushToTalk,
|
||||
};
|
||||
|
||||
using ClientId = std::int64_t;
|
||||
using Version = std::int32_t;
|
||||
using Snowflake = std::int64_t;
|
||||
using Timestamp = std::int64_t;
|
||||
using UserId = Snowflake;
|
||||
using Locale = char const*;
|
||||
using Branch = char const*;
|
||||
using LobbyId = Snowflake;
|
||||
using LobbySecret = char const*;
|
||||
using MetadataKey = char const*;
|
||||
using MetadataValue = char const*;
|
||||
using NetworkPeerId = std::uint64_t;
|
||||
using NetworkChannelId = std::uint8_t;
|
||||
#ifdef __APPLE__
|
||||
using IDXGISwapChain = void;
|
||||
#endif
|
||||
#ifdef __linux__
|
||||
using IDXGISwapChain = void;
|
||||
#endif
|
||||
#ifdef __APPLE__
|
||||
using MSG = void;
|
||||
#endif
|
||||
#ifdef __linux__
|
||||
using MSG = void;
|
||||
#endif
|
||||
using Path = char const*;
|
||||
using DateTime = char const*;
|
||||
|
||||
class User final {
|
||||
public:
|
||||
void SetId(UserId id);
|
||||
UserId GetId() const;
|
||||
void SetUsername(char const* username);
|
||||
char const* GetUsername() const;
|
||||
void SetDiscriminator(char const* discriminator);
|
||||
char const* GetDiscriminator() const;
|
||||
void SetAvatar(char const* avatar);
|
||||
char const* GetAvatar() const;
|
||||
void SetBot(bool bot);
|
||||
bool GetBot() const;
|
||||
|
||||
private:
|
||||
DiscordUser internal_;
|
||||
};
|
||||
|
||||
class OAuth2Token final {
|
||||
public:
|
||||
void SetAccessToken(char const* accessToken);
|
||||
char const* GetAccessToken() const;
|
||||
void SetScopes(char const* scopes);
|
||||
char const* GetScopes() const;
|
||||
void SetExpires(Timestamp expires);
|
||||
Timestamp GetExpires() const;
|
||||
|
||||
private:
|
||||
DiscordOAuth2Token internal_;
|
||||
};
|
||||
|
||||
class ImageHandle final {
|
||||
public:
|
||||
void SetType(ImageType type);
|
||||
ImageType GetType() const;
|
||||
void SetId(std::int64_t id);
|
||||
std::int64_t GetId() const;
|
||||
void SetSize(std::uint32_t size);
|
||||
std::uint32_t GetSize() const;
|
||||
|
||||
private:
|
||||
DiscordImageHandle internal_;
|
||||
};
|
||||
|
||||
class ImageDimensions final {
|
||||
public:
|
||||
void SetWidth(std::uint32_t width);
|
||||
std::uint32_t GetWidth() const;
|
||||
void SetHeight(std::uint32_t height);
|
||||
std::uint32_t GetHeight() const;
|
||||
|
||||
private:
|
||||
DiscordImageDimensions internal_;
|
||||
};
|
||||
|
||||
class ActivityTimestamps final {
|
||||
public:
|
||||
void SetStart(Timestamp start);
|
||||
Timestamp GetStart() const;
|
||||
void SetEnd(Timestamp end);
|
||||
Timestamp GetEnd() const;
|
||||
|
||||
private:
|
||||
DiscordActivityTimestamps internal_;
|
||||
};
|
||||
|
||||
class ActivityAssets final {
|
||||
public:
|
||||
void SetLargeImage(char const* largeImage);
|
||||
char const* GetLargeImage() const;
|
||||
void SetLargeText(char const* largeText);
|
||||
char const* GetLargeText() const;
|
||||
void SetSmallImage(char const* smallImage);
|
||||
char const* GetSmallImage() const;
|
||||
void SetSmallText(char const* smallText);
|
||||
char const* GetSmallText() const;
|
||||
|
||||
private:
|
||||
DiscordActivityAssets internal_;
|
||||
};
|
||||
|
||||
class PartySize final {
|
||||
public:
|
||||
void SetCurrentSize(std::int32_t currentSize);
|
||||
std::int32_t GetCurrentSize() const;
|
||||
void SetMaxSize(std::int32_t maxSize);
|
||||
std::int32_t GetMaxSize() const;
|
||||
|
||||
private:
|
||||
DiscordPartySize internal_;
|
||||
};
|
||||
|
||||
class ActivityParty final {
|
||||
public:
|
||||
void SetId(char const* id);
|
||||
char const* GetId() const;
|
||||
PartySize& GetSize();
|
||||
PartySize const& GetSize() const;
|
||||
void SetPrivacy(ActivityPartyPrivacy privacy);
|
||||
ActivityPartyPrivacy GetPrivacy() const;
|
||||
|
||||
private:
|
||||
DiscordActivityParty internal_;
|
||||
};
|
||||
|
||||
class ActivitySecrets final {
|
||||
public:
|
||||
void SetMatch(char const* match);
|
||||
char const* GetMatch() const;
|
||||
void SetJoin(char const* join);
|
||||
char const* GetJoin() const;
|
||||
void SetSpectate(char const* spectate);
|
||||
char const* GetSpectate() const;
|
||||
|
||||
private:
|
||||
DiscordActivitySecrets internal_;
|
||||
};
|
||||
|
||||
class Activity final {
|
||||
public:
|
||||
void SetType(ActivityType type);
|
||||
ActivityType GetType() const;
|
||||
void SetApplicationId(std::int64_t applicationId);
|
||||
std::int64_t GetApplicationId() const;
|
||||
void SetName(char const* name);
|
||||
char const* GetName() const;
|
||||
void SetState(char const* state);
|
||||
char const* GetState() const;
|
||||
void SetDetails(char const* details);
|
||||
char const* GetDetails() const;
|
||||
ActivityTimestamps& GetTimestamps();
|
||||
ActivityTimestamps const& GetTimestamps() const;
|
||||
ActivityAssets& GetAssets();
|
||||
ActivityAssets const& GetAssets() const;
|
||||
ActivityParty& GetParty();
|
||||
ActivityParty const& GetParty() const;
|
||||
ActivitySecrets& GetSecrets();
|
||||
ActivitySecrets const& GetSecrets() const;
|
||||
void SetInstance(bool instance);
|
||||
bool GetInstance() const;
|
||||
void SetSupportedPlatforms(std::uint32_t supportedPlatforms);
|
||||
std::uint32_t GetSupportedPlatforms() const;
|
||||
|
||||
private:
|
||||
DiscordActivity internal_;
|
||||
};
|
||||
|
||||
class Presence final {
|
||||
public:
|
||||
void SetStatus(Status status);
|
||||
Status GetStatus() const;
|
||||
Activity& GetActivity();
|
||||
Activity const& GetActivity() const;
|
||||
|
||||
private:
|
||||
DiscordPresence internal_;
|
||||
};
|
||||
|
||||
class Relationship final {
|
||||
public:
|
||||
void SetType(RelationshipType type);
|
||||
RelationshipType GetType() const;
|
||||
User& GetUser();
|
||||
User const& GetUser() const;
|
||||
Presence& GetPresence();
|
||||
Presence const& GetPresence() const;
|
||||
|
||||
private:
|
||||
DiscordRelationship internal_;
|
||||
};
|
||||
|
||||
class Lobby final {
|
||||
public:
|
||||
void SetId(LobbyId id);
|
||||
LobbyId GetId() const;
|
||||
void SetType(LobbyType type);
|
||||
LobbyType GetType() const;
|
||||
void SetOwnerId(UserId ownerId);
|
||||
UserId GetOwnerId() const;
|
||||
void SetSecret(LobbySecret secret);
|
||||
LobbySecret GetSecret() const;
|
||||
void SetCapacity(std::uint32_t capacity);
|
||||
std::uint32_t GetCapacity() const;
|
||||
void SetLocked(bool locked);
|
||||
bool GetLocked() const;
|
||||
|
||||
private:
|
||||
DiscordLobby internal_;
|
||||
};
|
||||
|
||||
class ImeUnderline final {
|
||||
public:
|
||||
void SetFrom(std::int32_t from);
|
||||
std::int32_t GetFrom() const;
|
||||
void SetTo(std::int32_t to);
|
||||
std::int32_t GetTo() const;
|
||||
void SetColor(std::uint32_t color);
|
||||
std::uint32_t GetColor() const;
|
||||
void SetBackgroundColor(std::uint32_t backgroundColor);
|
||||
std::uint32_t GetBackgroundColor() const;
|
||||
void SetThick(bool thick);
|
||||
bool GetThick() const;
|
||||
|
||||
private:
|
||||
DiscordImeUnderline internal_;
|
||||
};
|
||||
|
||||
class Rect final {
|
||||
public:
|
||||
void SetLeft(std::int32_t left);
|
||||
std::int32_t GetLeft() const;
|
||||
void SetTop(std::int32_t top);
|
||||
std::int32_t GetTop() const;
|
||||
void SetRight(std::int32_t right);
|
||||
std::int32_t GetRight() const;
|
||||
void SetBottom(std::int32_t bottom);
|
||||
std::int32_t GetBottom() const;
|
||||
|
||||
private:
|
||||
DiscordRect internal_;
|
||||
};
|
||||
|
||||
class FileStat final {
|
||||
public:
|
||||
void SetFilename(char const* filename);
|
||||
char const* GetFilename() const;
|
||||
void SetSize(std::uint64_t size);
|
||||
std::uint64_t GetSize() const;
|
||||
void SetLastModified(std::uint64_t lastModified);
|
||||
std::uint64_t GetLastModified() const;
|
||||
|
||||
private:
|
||||
DiscordFileStat internal_;
|
||||
};
|
||||
|
||||
class Entitlement final {
|
||||
public:
|
||||
void SetId(Snowflake id);
|
||||
Snowflake GetId() const;
|
||||
void SetType(EntitlementType type);
|
||||
EntitlementType GetType() const;
|
||||
void SetSkuId(Snowflake skuId);
|
||||
Snowflake GetSkuId() const;
|
||||
|
||||
private:
|
||||
DiscordEntitlement internal_;
|
||||
};
|
||||
|
||||
class SkuPrice final {
|
||||
public:
|
||||
void SetAmount(std::uint32_t amount);
|
||||
std::uint32_t GetAmount() const;
|
||||
void SetCurrency(char const* currency);
|
||||
char const* GetCurrency() const;
|
||||
|
||||
private:
|
||||
DiscordSkuPrice internal_;
|
||||
};
|
||||
|
||||
class Sku final {
|
||||
public:
|
||||
void SetId(Snowflake id);
|
||||
Snowflake GetId() const;
|
||||
void SetType(SkuType type);
|
||||
SkuType GetType() const;
|
||||
void SetName(char const* name);
|
||||
char const* GetName() const;
|
||||
SkuPrice& GetPrice();
|
||||
SkuPrice const& GetPrice() const;
|
||||
|
||||
private:
|
||||
DiscordSku internal_;
|
||||
};
|
||||
|
||||
class InputMode final {
|
||||
public:
|
||||
void SetType(InputModeType type);
|
||||
InputModeType GetType() const;
|
||||
void SetShortcut(char const* shortcut);
|
||||
char const* GetShortcut() const;
|
||||
|
||||
private:
|
||||
DiscordInputMode internal_;
|
||||
};
|
||||
|
||||
class UserAchievement final {
|
||||
public:
|
||||
void SetUserId(Snowflake userId);
|
||||
Snowflake GetUserId() const;
|
||||
void SetAchievementId(Snowflake achievementId);
|
||||
Snowflake GetAchievementId() const;
|
||||
void SetPercentComplete(std::uint8_t percentComplete);
|
||||
std::uint8_t GetPercentComplete() const;
|
||||
void SetUnlockedAt(DateTime unlockedAt);
|
||||
DateTime GetUnlockedAt() const;
|
||||
|
||||
private:
|
||||
DiscordUserAchievement internal_;
|
||||
};
|
||||
|
||||
class LobbyTransaction final {
|
||||
public:
|
||||
Result SetType(LobbyType type);
|
||||
Result SetOwner(UserId ownerId);
|
||||
Result SetCapacity(std::uint32_t capacity);
|
||||
Result SetMetadata(MetadataKey key, MetadataValue value);
|
||||
Result DeleteMetadata(MetadataKey key);
|
||||
Result SetLocked(bool locked);
|
||||
|
||||
IDiscordLobbyTransaction** Receive() { return &internal_; }
|
||||
IDiscordLobbyTransaction* Internal() { return internal_; }
|
||||
|
||||
private:
|
||||
IDiscordLobbyTransaction* internal_;
|
||||
};
|
||||
|
||||
class LobbyMemberTransaction final {
|
||||
public:
|
||||
Result SetMetadata(MetadataKey key, MetadataValue value);
|
||||
Result DeleteMetadata(MetadataKey key);
|
||||
|
||||
IDiscordLobbyMemberTransaction** Receive() { return &internal_; }
|
||||
IDiscordLobbyMemberTransaction* Internal() { return internal_; }
|
||||
|
||||
private:
|
||||
IDiscordLobbyMemberTransaction* internal_;
|
||||
};
|
||||
|
||||
class LobbySearchQuery final {
|
||||
public:
|
||||
Result Filter(MetadataKey key,
|
||||
LobbySearchComparison comparison,
|
||||
LobbySearchCast cast,
|
||||
MetadataValue value);
|
||||
Result Sort(MetadataKey key, LobbySearchCast cast, MetadataValue value);
|
||||
Result Limit(std::uint32_t limit);
|
||||
Result Distance(LobbySearchDistance distance);
|
||||
|
||||
IDiscordLobbySearchQuery** Receive() { return &internal_; }
|
||||
IDiscordLobbySearchQuery* Internal() { return internal_; }
|
||||
|
||||
private:
|
||||
IDiscordLobbySearchQuery* internal_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
80
src/lib/discord_game_sdk/cpp/user_manager.cpp
Normal file
@@ -0,0 +1,80 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "user_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class UserEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnCurrentUserUpdate(void* callbackData)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->UserManager();
|
||||
module.OnCurrentUserUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordUserEvents UserManager::events_{
|
||||
&UserEvents::OnCurrentUserUpdate,
|
||||
};
|
||||
|
||||
Result UserManager::GetCurrentUser(User* currentUser)
|
||||
{
|
||||
if (!currentUser) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_current_user(internal_, reinterpret_cast<DiscordUser*>(currentUser));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void UserManager::GetUser(UserId userId, std::function<void(Result, User const&)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result, DiscordUser* user) -> void {
|
||||
std::unique_ptr<std::function<void(Result, User const&)>> cb(
|
||||
reinterpret_cast<std::function<void(Result, User const&)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result), *reinterpret_cast<User const*>(user));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result, User const&)>> cb{};
|
||||
cb.reset(new std::function<void(Result, User const&)>(std::move(callback)));
|
||||
internal_->get_user(internal_, userId, cb.release(), wrapper);
|
||||
}
|
||||
|
||||
Result UserManager::GetCurrentUserPremiumType(PremiumType* premiumType)
|
||||
{
|
||||
if (!premiumType) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->get_current_user_premium_type(
|
||||
internal_, reinterpret_cast<EDiscordPremiumType*>(premiumType));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result UserManager::CurrentUserHasFlag(UserFlag flag, bool* hasFlag)
|
||||
{
|
||||
if (!hasFlag) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->current_user_has_flag(
|
||||
internal_, static_cast<EDiscordUserFlag>(flag), reinterpret_cast<bool*>(hasFlag));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
31
src/lib/discord_game_sdk/cpp/user_manager.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class UserManager final {
|
||||
public:
|
||||
~UserManager() = default;
|
||||
|
||||
Result GetCurrentUser(User* currentUser);
|
||||
void GetUser(UserId userId, std::function<void(Result, User const&)> callback);
|
||||
Result GetCurrentUserPremiumType(PremiumType* premiumType);
|
||||
Result CurrentUserHasFlag(UserFlag flag, bool* hasFlag);
|
||||
|
||||
Event<> OnCurrentUserUpdate;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
UserManager() = default;
|
||||
UserManager(UserManager const& rhs) = delete;
|
||||
UserManager& operator=(UserManager const& rhs) = delete;
|
||||
UserManager(UserManager&& rhs) = delete;
|
||||
UserManager& operator=(UserManager&& rhs) = delete;
|
||||
|
||||
IDiscordUserManager* internal_;
|
||||
static IDiscordUserEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
124
src/lib/discord_game_sdk/cpp/voice_manager.cpp
Normal file
@@ -0,0 +1,124 @@
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "voice_manager.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
namespace discord {
|
||||
|
||||
class VoiceEvents final {
|
||||
public:
|
||||
static void DISCORD_CALLBACK OnSettingsUpdate(void* callbackData)
|
||||
{
|
||||
auto* core = reinterpret_cast<Core*>(callbackData);
|
||||
if (!core) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& module = core->VoiceManager();
|
||||
module.OnSettingsUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
IDiscordVoiceEvents VoiceManager::events_{
|
||||
&VoiceEvents::OnSettingsUpdate,
|
||||
};
|
||||
|
||||
Result VoiceManager::GetInputMode(InputMode* inputMode)
|
||||
{
|
||||
if (!inputMode) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_input_mode(internal_, reinterpret_cast<DiscordInputMode*>(inputMode));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
void VoiceManager::SetInputMode(InputMode inputMode, std::function<void(Result)> callback)
|
||||
{
|
||||
static auto wrapper = [](void* callbackData, EDiscordResult result) -> void {
|
||||
std::unique_ptr<std::function<void(Result)>> cb(
|
||||
reinterpret_cast<std::function<void(Result)>*>(callbackData));
|
||||
if (!cb || !(*cb)) {
|
||||
return;
|
||||
}
|
||||
(*cb)(static_cast<Result>(result));
|
||||
};
|
||||
std::unique_ptr<std::function<void(Result)>> cb{};
|
||||
cb.reset(new std::function<void(Result)>(std::move(callback)));
|
||||
internal_->set_input_mode(
|
||||
internal_, *reinterpret_cast<DiscordInputMode const*>(&inputMode), cb.release(), wrapper);
|
||||
}
|
||||
|
||||
Result VoiceManager::IsSelfMute(bool* mute)
|
||||
{
|
||||
if (!mute) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->is_self_mute(internal_, reinterpret_cast<bool*>(mute));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result VoiceManager::SetSelfMute(bool mute)
|
||||
{
|
||||
auto result = internal_->set_self_mute(internal_, (mute ? 1 : 0));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result VoiceManager::IsSelfDeaf(bool* deaf)
|
||||
{
|
||||
if (!deaf) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->is_self_deaf(internal_, reinterpret_cast<bool*>(deaf));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result VoiceManager::SetSelfDeaf(bool deaf)
|
||||
{
|
||||
auto result = internal_->set_self_deaf(internal_, (deaf ? 1 : 0));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result VoiceManager::IsLocalMute(Snowflake userId, bool* mute)
|
||||
{
|
||||
if (!mute) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result = internal_->is_local_mute(internal_, userId, reinterpret_cast<bool*>(mute));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result VoiceManager::SetLocalMute(Snowflake userId, bool mute)
|
||||
{
|
||||
auto result = internal_->set_local_mute(internal_, userId, (mute ? 1 : 0));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result VoiceManager::GetLocalVolume(Snowflake userId, std::uint8_t* volume)
|
||||
{
|
||||
if (!volume) {
|
||||
return Result::InternalError;
|
||||
}
|
||||
|
||||
auto result =
|
||||
internal_->get_local_volume(internal_, userId, reinterpret_cast<uint8_t*>(volume));
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
Result VoiceManager::SetLocalVolume(Snowflake userId, std::uint8_t volume)
|
||||
{
|
||||
auto result = internal_->set_local_volume(internal_, userId, volume);
|
||||
return static_cast<Result>(result);
|
||||
}
|
||||
|
||||
} // namespace discord
|
37
src/lib/discord_game_sdk/cpp/voice_manager.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace discord {
|
||||
|
||||
class VoiceManager final {
|
||||
public:
|
||||
~VoiceManager() = default;
|
||||
|
||||
Result GetInputMode(InputMode* inputMode);
|
||||
void SetInputMode(InputMode inputMode, std::function<void(Result)> callback);
|
||||
Result IsSelfMute(bool* mute);
|
||||
Result SetSelfMute(bool mute);
|
||||
Result IsSelfDeaf(bool* deaf);
|
||||
Result SetSelfDeaf(bool deaf);
|
||||
Result IsLocalMute(Snowflake userId, bool* mute);
|
||||
Result SetLocalMute(Snowflake userId, bool mute);
|
||||
Result GetLocalVolume(Snowflake userId, std::uint8_t* volume);
|
||||
Result SetLocalVolume(Snowflake userId, std::uint8_t volume);
|
||||
|
||||
Event<> OnSettingsUpdate;
|
||||
|
||||
private:
|
||||
friend class Core;
|
||||
|
||||
VoiceManager() = default;
|
||||
VoiceManager(VoiceManager const& rhs) = delete;
|
||||
VoiceManager& operator=(VoiceManager const& rhs) = delete;
|
||||
VoiceManager(VoiceManager&& rhs) = delete;
|
||||
VoiceManager& operator=(VoiceManager&& rhs) = delete;
|
||||
|
||||
IDiscordVoiceManager* internal_;
|
||||
static IDiscordVoiceEvents events_;
|
||||
};
|
||||
|
||||
} // namespace discord
|
@@ -10,36 +10,36 @@
|
||||
#include "editor_presence.h"
|
||||
using namespace godot;
|
||||
|
||||
static DiscordSDK *discordsdk;
|
||||
static DiscordRPC *discordrpc;
|
||||
|
||||
void initialize_discordsdk_module(ModuleInitializationLevel p_level)
|
||||
void initialize_discordrpc_module(ModuleInitializationLevel p_level)
|
||||
{
|
||||
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
||||
{
|
||||
ClassDB::register_class<DiscordSDK>();
|
||||
discordsdk = memnew(DiscordSDK);
|
||||
Engine::get_singleton()->register_singleton("DiscordSDK", DiscordSDK::get_singleton());
|
||||
ClassDB::register_class<DiscordRPC>();
|
||||
discordrpc = memnew(DiscordRPC);
|
||||
Engine::get_singleton()->register_singleton("DiscordRPC", DiscordRPC::get_singleton());
|
||||
ClassDB::register_class<EditorPresence>();
|
||||
}
|
||||
}
|
||||
|
||||
void uninitialize_discordsdk_module(ModuleInitializationLevel p_level)
|
||||
void uninitialize_discordrpc_module(ModuleInitializationLevel p_level)
|
||||
{
|
||||
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
||||
{
|
||||
Engine::get_singleton()->unregister_singleton("DiscordSDK");
|
||||
memdelete(discordsdk);
|
||||
Engine::get_singleton()->unregister_singleton("DiscordRPC");
|
||||
memdelete(discordrpc);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
GDExtensionBool GDE_EXPORT discordsdkgd_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization)
|
||||
GDExtensionBool GDE_EXPORT discordrpcgd_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization)
|
||||
{
|
||||
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
|
||||
|
||||
init_obj.register_initializer(initialize_discordsdk_module);
|
||||
init_obj.register_terminator(uninitialize_discordsdk_module);
|
||||
init_obj.register_initializer(initialize_discordrpc_module);
|
||||
init_obj.register_terminator(uninitialize_discordrpc_module);
|
||||
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
|
||||
|
||||
return init_obj.init();
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#ifndef REGISTER_TYPES_H
|
||||
#define REGISTER_TYPES_H
|
||||
|
||||
void initialize_discordsdk_module();
|
||||
void uninitialize_discordsdk_module();
|
||||
void initialize_discordrpc_module();
|
||||
void uninitialize_discordrpc_module();
|
||||
|
||||
#endif // REGISTER_TYPES_H
|