Compare commits
49 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
aa486d39c9 | ||
|
68cb2ddb44 | ||
|
30af177aa3 | ||
|
cbc0c85c76 | ||
|
ed4149e7a7 | ||
|
3b244f4a91 | ||
|
305d314224 | ||
|
0ee6a3268c | ||
|
b143809744 | ||
|
fab2efb88a | ||
|
063f559624 | ||
|
ce93ed4294 | ||
|
2b19fd9be2 | ||
|
f93fbe4a1b | ||
|
f78e2e9744 | ||
|
ea4324aba8 | ||
|
ffcf4090d6 | ||
|
d3d33216db | ||
|
c8db95e559 | ||
|
1eeec67690 | ||
|
4985d31a03 | ||
|
86ab81aff1 | ||
|
15ce1c0904 | ||
|
3a2ccc84f5 | ||
|
368b60e69c | ||
|
e43fdc7117 | ||
|
d026bbc872 | ||
|
c41396cdbb | ||
|
abb0cdb0c5 | ||
|
35c1895650 | ||
|
548349d9f8 | ||
|
68c8a42826 | ||
|
3e944683a4 | ||
|
6f288564cf | ||
|
aa39fb80e0 | ||
|
980080492e | ||
|
b3ebd2c737 | ||
|
f9134f30f7 | ||
|
da42d6a228 | ||
|
a998076b79 | ||
|
7fd0d25da9 | ||
|
52fcce409a | ||
|
88a855d1da | ||
|
53dafb1da2 | ||
|
9772445870 | ||
|
52ec3392fa | ||
|
3913736a42 | ||
|
ba5eb3316e | ||
|
9929ccbb3a |
13
.github/ISSUE_TEMPLATE/BUG.yml
vendored
13
.github/ISSUE_TEMPLATE/BUG.yml
vendored
@@ -21,8 +21,15 @@ body:
|
|||||||
id: version
|
id: version
|
||||||
attributes:
|
attributes:
|
||||||
label: Version
|
label: Version
|
||||||
description: What version of our software are you running?
|
description: What version of the Discord Game SDK Godot plugin are you running?
|
||||||
options:
|
options:
|
||||||
|
- 3.1
|
||||||
|
- 3.0
|
||||||
|
- 2.4
|
||||||
|
- 2.3
|
||||||
|
- 2.2
|
||||||
|
- 2.1
|
||||||
|
- 2.0
|
||||||
- 1.5
|
- 1.5
|
||||||
- 1.4
|
- 1.4
|
||||||
- 1.3
|
- 1.3
|
||||||
@@ -36,8 +43,8 @@ body:
|
|||||||
id: gd-version
|
id: gd-version
|
||||||
attributes:
|
attributes:
|
||||||
label: Godot Version
|
label: Godot Version
|
||||||
description: This addon is ONLY for 4.0 and above!
|
description: This addon is ONLY for 4.1 and above!
|
||||||
placeholder: e.g. 4.0.2-stable
|
placeholder: e.g. 4.1.0-stable
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: textarea
|
||||||
|
27
.github/ISSUE_TEMPLATE/FEATURE.yml
vendored
Normal file
27
.github/ISSUE_TEMPLATE/FEATURE.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
name: Feature request
|
||||||
|
description: File a feature request
|
||||||
|
title: "[Feature request]: "
|
||||||
|
labels: ["enhancement"]
|
||||||
|
assignees:
|
||||||
|
- vaporvee
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: Thanks for taking the time to fill out this feature request!
|
||||||
|
- type: textarea
|
||||||
|
id: idea
|
||||||
|
attributes:
|
||||||
|
label: What is your idea?
|
||||||
|
description: Tell me what you want to see in the addon.
|
||||||
|
placeholder: Tell me what you want to see!
|
||||||
|
value: "I have a cool new feature!"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: additional
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: If you have anything else tell me here
|
||||||
|
placeholder: Anything else.
|
||||||
|
validations:
|
||||||
|
required: false
|
5
.gitignore
vendored
5
.gitignore
vendored
@@ -19,4 +19,7 @@ build/
|
|||||||
*.lib
|
*.lib
|
||||||
|
|
||||||
#Clean files from the Game SDK
|
#Clean files from the Game SDK
|
||||||
src/lib/discord_game_sdk/
|
src/lib/discord_game_sdk/
|
||||||
|
|
||||||
|
# release.py
|
||||||
|
release/
|
17
README.md
17
README.md
@@ -1,14 +1,23 @@
|
|||||||
<img src="/project/assets/Banner.svg" alt="Project Banner" />
|
<img src="/project/assets/Banner.svg" alt="Project Banner" />
|
||||||
|
|
||||||
**Discord Game SDK support for GDScript in Godot Engine 4.0. with the easiest code pattern!**<br><br>
|
**Discord Game SDK support for GDScript in Godot Engine 4.1. with the easiest code pattern!**<br><br>
|
||||||
**Please leave a star that would really help! And thanks to all the people that already starred this project! ❤️**
|
|
||||||
<br />
|
<br />
|
||||||
<br />
|
# [Quick start :rocket: (click here)](https://github.com/vaporvee/discord-sdk-godot/wiki)
|
||||||
# [Quick start :rocket: (click here)](https://github.com/vaporvee/discord-sdk-godot/wiki/Quick-start)
|
|
||||||
<br />
|
<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!**
|
**A small donation with the sponsor button would be nice if you sell your project with this addon but is of course not mandatory!**
|
||||||
|
|
||||||
|
# Features
|
||||||
|
- Activities (Make people see what you are playing)
|
||||||
|
- Invites
|
||||||
|
- Steam and launch command registering
|
||||||
|
- User information
|
||||||
|
- Relationship Manager (Get friendlist and its updates)
|
||||||
|
- Overlay management
|
||||||
|
- Editor Presence (optional)
|
||||||
|
<img width="400px" src="https://camo.githubusercontent.com/e4ae18ce30a7731145376e1a85c384e9ea207420c09365e3fcdd455ef332ba98/68747470733a2f2f6769746875622d70726f64756374696f6e2d757365722d61737365742d3632313064662e73332e616d617a6f6e6177732e636f6d2f38303632313836332f3233383739343331392d35373164653262612d346635652d343062612d613263662d3839666365643963306366302e706e67">
|
||||||
|
<br />
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
### Credit
|
### Credit
|
||||||
|
1
extended-user-info-api/.env.example
Normal file
1
extended-user-info-api/.env.example
Normal file
@@ -0,0 +1 @@
|
|||||||
|
BOT_TOKEN="<your token>"
|
1
extended-user-info-api/.gitignore
vendored
Normal file
1
extended-user-info-api/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.env
|
33
extended-user-info-api/go.mod
Normal file
33
extended-user-info-api/go.mod
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
module discord-sdk-godot.vercel.app
|
||||||
|
|
||||||
|
go 1.21.0
|
||||||
|
|
||||||
|
require github.com/gin-gonic/gin v1.9.1
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/bytedance/sonic v1.9.1 // indirect
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
|
||||||
|
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||||
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
|
github.com/go-playground/validator/v10 v10.14.0 // indirect
|
||||||
|
github.com/goccy/go-json v0.10.2 // indirect
|
||||||
|
github.com/joho/godotenv v1.5.1 // indirect
|
||||||
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
|
||||||
|
github.com/leodido/go-urn v1.2.4 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||||
|
github.com/ugorji/go/codec v1.2.11 // indirect
|
||||||
|
golang.org/x/arch v0.3.0 // indirect
|
||||||
|
golang.org/x/crypto v0.9.0 // indirect
|
||||||
|
golang.org/x/net v0.10.0 // indirect
|
||||||
|
golang.org/x/sys v0.8.0 // indirect
|
||||||
|
golang.org/x/text v0.9.0 // indirect
|
||||||
|
google.golang.org/protobuf v1.30.0 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
)
|
80
extended-user-info-api/go.sum
Normal file
80
extended-user-info-api/go.sum
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
|
||||||
|
github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
|
||||||
|
github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
|
||||||
|
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||||
|
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||||
|
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
|
||||||
|
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
|
||||||
|
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
||||||
|
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||||
|
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||||
|
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||||
|
github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js=
|
||||||
|
github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
|
||||||
|
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||||
|
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||||
|
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||||
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
|
||||||
|
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
|
||||||
|
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
|
||||||
|
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
|
||||||
|
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||||
|
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
|
||||||
|
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||||
|
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||||
|
golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
|
||||||
|
golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||||
|
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
|
||||||
|
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
|
||||||
|
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
|
||||||
|
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||||
|
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||||
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
|
||||||
|
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
|
||||||
|
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
137
extended-user-info-api/main.go
Normal file
137
extended-user-info-api/main.go
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/joho/godotenv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type User struct {
|
||||||
|
GlobalName string `json:"global_name"`
|
||||||
|
PublicFlags int `json:"public_flags"`
|
||||||
|
Flags int `json:"flags"`
|
||||||
|
AccentColor string `json:"accent_color"`
|
||||||
|
AvatarDecorationURL string `json:"avatar_decoration"`
|
||||||
|
BannerURL string `json:"banner_url"`
|
||||||
|
BannerColor string `json:"banner_color"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
r := gin.Default()
|
||||||
|
r.GET("/:userIDs", func(c *gin.Context) {
|
||||||
|
userIDs := strings.Split(c.Param("userIDs"), ",")
|
||||||
|
|
||||||
|
if len(userIDs) == 0 {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": "No user IDs provided"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
godotenv.Load()
|
||||||
|
botToken := os.Getenv("BOT_TOKEN")
|
||||||
|
client := &http.Client{}
|
||||||
|
|
||||||
|
userResponses := make(map[string]User)
|
||||||
|
|
||||||
|
for _, userID := range userIDs {
|
||||||
|
for {
|
||||||
|
req, err := http.NewRequest("GET", "https://discord.com/api/v10/users/"+userID, nil)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
req.Header.Add("Authorization", "Bot "+botToken)
|
||||||
|
req.Header.Add("Content-Type", "application/json")
|
||||||
|
|
||||||
|
res, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer res.Body.Close()
|
||||||
|
|
||||||
|
if res.StatusCode == http.StatusTooManyRequests {
|
||||||
|
retryAfter := parseRetryAfterHeader(res.Header)
|
||||||
|
if retryAfter > 0 {
|
||||||
|
time.Sleep(retryAfter)
|
||||||
|
continue // Retry the request after waiting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := io.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var jsonMap map[string]interface{}
|
||||||
|
if err := json.Unmarshal(body, &jsonMap); err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
user := User{
|
||||||
|
GlobalName: getStringFromMap(jsonMap, "global_name"),
|
||||||
|
PublicFlags: getIntFromMap(jsonMap, "public_flags"),
|
||||||
|
Flags: getIntFromMap(jsonMap, "flags"),
|
||||||
|
AccentColor: getStringFromMap(jsonMap, "accent_color"),
|
||||||
|
BannerColor: getStringFromMap(jsonMap, "banner_color"),
|
||||||
|
}
|
||||||
|
|
||||||
|
if avatarDecoration, ok := jsonMap["avatar_decoration"].(string); ok {
|
||||||
|
user.AvatarDecorationURL = "https://cdn.discordapp.com/avatar-decorations/" + userID + "/" + avatarDecoration + ".png"
|
||||||
|
}
|
||||||
|
|
||||||
|
if banner, ok := jsonMap["banner"].(string); ok {
|
||||||
|
user.BannerURL = "https://cdn.discordapp.com/banners/" + userID + "/" + banner + ".png"
|
||||||
|
}
|
||||||
|
|
||||||
|
userResponses[userID] = user
|
||||||
|
break // Exit the loop and process the next user ID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, userResponses)
|
||||||
|
})
|
||||||
|
|
||||||
|
r.GET("/", func(c *gin.Context) {
|
||||||
|
c.Writer.WriteHeader(http.StatusOK)
|
||||||
|
c.Writer.Write([]byte("<html><body>Please provide a comma-separated list of Discord user IDs or a single user ID in the URL. Example: /688778053408784415,369216554950328320 <br> <a href=\"https://github.com/vaporvee/discord-sdk-godot/\">GitHub project</a></body></html>"))
|
||||||
|
})
|
||||||
|
|
||||||
|
r.Run(":8080")
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseRetryAfterHeader(headers http.Header) time.Duration {
|
||||||
|
retryAfterStr := headers.Get("Retry-After")
|
||||||
|
if retryAfterStr == "" {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
retryAfter, err := strconv.Atoi(retryAfterStr)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.Duration(retryAfter) * time.Millisecond
|
||||||
|
}
|
||||||
|
|
||||||
|
func getStringFromMap(m map[string]interface{}, key string) string {
|
||||||
|
if val, ok := m[key].(string); ok {
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func getIntFromMap(m map[string]interface{}, key string) int {
|
||||||
|
if val, ok := m[key].(float64); ok {
|
||||||
|
return int(val)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
BIN
project/addons/discord-sdk-gd/Logo_V2_No_Bg.png
Normal file
BIN
project/addons/discord-sdk-gd/Logo_V2_No_Bg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cq8lwj2matk6x"
|
uid="uid://csl0e2px0cwc1"
|
||||||
path="res://.godot/imported/flow_spritesheet.png-4637bb4103771b4d4bbc78a0bb858512.ctex"
|
path="res://.godot/imported/Logo_V2_No_Bg.png-9c8178062d6891c8370df63a912bd8e2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://addons/discord-sdk-gd/nodes/assets/flow_spritesheet.png"
|
source_file="res://addons/discord-sdk-gd/Logo_V2_No_Bg.png"
|
||||||
dest_files=["res://.godot/imported/flow_spritesheet.png-4637bb4103771b4d4bbc78a0bb858512.ctex"]
|
dest_files=["res://.godot/imported/Logo_V2_No_Bg.png-9c8178062d6891c8370df63a912bd8e2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
30
project/addons/discord-sdk-gd/bin/discord-rpc-gd.gdextension
Normal file
30
project/addons/discord-sdk-gd/bin/discord-rpc-gd.gdextension
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
[configuration]
|
||||||
|
|
||||||
|
entry_symbol = "discordsdkgd_library_init"
|
||||||
|
compatibility_minimum = 4.1
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
|
||||||
|
macos.debug = "macos/libdiscord_game_sdk_binding_debug.dylib"
|
||||||
|
macos.release = "macos/libdiscord_game_sdk_binding.dylib"
|
||||||
|
windows.debug.x86_64 = "windows/discord_game_sdk_binding_debug.dll"
|
||||||
|
windows.release.x86_64 = "windows/discord_game_sdk_binding.dll"
|
||||||
|
linux.debug.x86_64 = "linux/libdiscord_game_sdk_binding_debug.so"
|
||||||
|
linux.release.x86_64 = "linux/libdiscord_game_sdk_binding.so"
|
||||||
|
linux.debug.arm64 = "linux/libdiscord_game_sdk_binding_debug.so"
|
||||||
|
linux.release.arm64 = "linux/libdiscord_game_sdk_binding.so"
|
||||||
|
linux.debug.rv64 = "linux/libdiscord_game_sdk_binding_debug.so"
|
||||||
|
linux.release.rv64 = "linux/libdiscord_game_sdk_binding.so"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
|
||||||
|
macos.debug = { "macos/libdiscord_game_sdk.dylib": "" }
|
||||||
|
macos.release = { "macos/libdiscord_game_sdk.dylib": "" }
|
||||||
|
windows.debug.x86_64 = { "windows/discord_game_sdk.dll": "" }
|
||||||
|
windows.release.x86_64 = { "windows/discord_game_sdk.dll": "" }
|
||||||
|
linux.debug.x86_64 = { "linux/libdiscord_game_sdk.so": "" }
|
||||||
|
linux.release.x86_64 = { "linux/libdiscord_game_sdk.so": "" }
|
||||||
|
linux.debug.arm64 = { "linux/libdiscord_game_sdk.so": "" }
|
||||||
|
linux.release.arm64 = { "linux/libdiscord_game_sdk.so": "" }
|
||||||
|
linux.debug.rv64 = { "linux/libdiscord_game_sdk.so": "" }
|
||||||
|
linux.release.rv64 = { "linux/libdiscord_game_sdk.so": "" }
|
Binary file not shown.
Binary file not shown.
@@ -1,4 +0,0 @@
|
|||||||
Version: 1.2
|
|
||||||
Windows: build-1
|
|
||||||
Linux: build-1
|
|
||||||
MacOS: build-1
|
|
Binary file not shown.
Binary file not shown.
@@ -1,29 +0,0 @@
|
|||||||
[configuration]
|
|
||||||
|
|
||||||
entry_symbol = "discordsdkgd_library_init"
|
|
||||||
|
|
||||||
[libraries]
|
|
||||||
|
|
||||||
macos.debug = "bin/macos/libdiscord_game_sdk_binding_debug.dylib"
|
|
||||||
macos.release = "bin/macos/libdiscord_game_sdk_binding.dylib"
|
|
||||||
windows.debug.x86_64 = "bin/windows/discord_game_sdk_binding_debug.dll"
|
|
||||||
windows.release.x86_64 = "bin/windows/discord_game_sdk_binding.dll"
|
|
||||||
linux.debug.x86_64 = "bin/linux/libdiscord_game_sdk_binding_debug.so"
|
|
||||||
linux.release.x86_64 = "bin/linux/libdiscord_game_sdk_binding.so"
|
|
||||||
linux.debug.arm64 = "bin/linux/libdiscord_game_sdk_binding_debug.so"
|
|
||||||
linux.release.arm64 = "bin/linux/libdiscord_game_sdk_binding.so"
|
|
||||||
linux.debug.rv64 = "bin/linux/libdiscord_game_sdk_binding_debug.so"
|
|
||||||
linux.release.rv64 = "bin/linux/libdiscord_game_sdk_binding.so"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
|
|
||||||
macos.debug = "bin/macos/libdiscord_game_sdk.dylib"
|
|
||||||
macos.release = "bin/macos/libdiscord_game_sdk.dylib"
|
|
||||||
windows.debug.x86_64 = "bin/windows/discord_game_sdk.dll"
|
|
||||||
windows.release.x86_64 = "bin/windows/discord_game_sdk.dll"
|
|
||||||
linux.debug.x86_64 = "bin/linux/libdiscord_game_sdk.so"
|
|
||||||
linux.release.x86_64 = "bin/linux/libdiscord_game_sdk.so"
|
|
||||||
linux.debug.arm64 = "bin/linux/libdiscord_game_sdk.so"
|
|
||||||
linux.release.arm64 = "bin/linux/libdiscord_game_sdk.so"
|
|
||||||
linux.debug.rv64 = "bin/linux/libdiscord_game_sdk.so"
|
|
||||||
linux.release.rv64 = "bin/linux/libdiscord_game_sdk.so"
|
|
@@ -1,25 +1,38 @@
|
|||||||
|
class_name DiscordSDKTutorial
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
# 1. Put the addons/ folder in your Godot project
|
## 1. Put the addons/ folder in your Godot project[br]
|
||||||
# 2. Enable the addon in your Project Settings under "Plugins" and "DiscordSDK". (if it doesn't show up restart your project and try again)
|
## 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]
|
||||||
# 3. Restart your project
|
## 3. Restart your project[br]
|
||||||
# 4. Create an Application under https://discord.com/developers/applications and get the Application ID
|
## 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
|
## 5. (optional) Set images under "Rich Presence" and "Art Assets" and remember the keys[br]
|
||||||
|
##
|
||||||
#SELECT THE TEXT WITH YOUR MOUSE AND CTR + K TO UNCOMMENT THE FOLLOWING
|
## This is your [code]_ready()[/code] function wich could be anywhere
|
||||||
|
## [codeblock]
|
||||||
#func _ready():
|
## func _ready():
|
||||||
# discord_sdk.app_id = 1099618430065324082 # Application ID
|
## # Application ID
|
||||||
# print("Discord working: " + str(discord_sdk.get_is_discord_working())) # A boolean if everything worked
|
## discord_sdk.app_id = 1099618430065324082
|
||||||
# discord_sdk.details = "A demo activity by vaporvee#1231"
|
## # this is boolean if everything worked
|
||||||
# discord_sdk.state = "Checkpoint 23/23"
|
## print("Discord working: " + str(discord_sdk.get_is_discord_working()))
|
||||||
#
|
## # Set the first custom text row of the activity here
|
||||||
# discord_sdk.large_image = "game" # Image key from "Art Assets"
|
## discord_sdk.details = "A demo activity by vaporvee#1231"
|
||||||
# discord_sdk.large_image_text = "Try it now!"
|
## # Set the second custom text row of the activity here
|
||||||
# discord_sdk.small_image = "boss" # Image key from "Art Assets"
|
## discord_sdk.state = "Checkpoint 23/23"
|
||||||
# discord_sdk.small_image_text = "Fighting the end boss! D:"
|
## # Image key for small image from "Art Assets" from the Discord Developer website
|
||||||
#
|
## discord_sdk.large_image = "game"
|
||||||
# discord_sdk.start_timestamp = int(Time.get_unix_time_from_system()) # "02:41 elapsed"
|
## # Tooltip text for the large image
|
||||||
# discord_sdk.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time
|
## discord_sdk.large_image_text = "Try it now!"
|
||||||
#
|
## # Image key for large image from "Art Assets" from the Discord Developer website
|
||||||
# discord_sdk.refresh() # Always refresh after changing the values!
|
## discord_sdk.small_image = "boss"
|
||||||
|
## # Tooltip text for the small image
|
||||||
|
## discord_sdk.small_image_text = "Fighting the end boss! D:"
|
||||||
|
## # "02:41 elapsed" timestamp for the activity
|
||||||
|
## discord_sdk.start_timestamp = int(Time.get_unix_time_from_system())
|
||||||
|
## # "59:59 remaining" timestamp for the activity
|
||||||
|
## discord_sdk.end_timestamp = int(Time.get_unix_time_from_system()) + 3600
|
||||||
|
## # Always refresh after changing the values!
|
||||||
|
## discord_sdk.refresh()
|
||||||
|
## [/codeblock]
|
||||||
|
##
|
||||||
|
## @tutorial(More information here): https://github.com/vaporvee/discord-sdk-godot/wiki/Quick-start
|
||||||
|
## @tutorial(Make your Application ID and else here): https://discord.com/developers/applications
|
||||||
|
@@ -1,17 +0,0 @@
|
|||||||
@tool
|
|
||||||
extends EditorExportPlugin
|
|
||||||
|
|
||||||
func _export_file(_path, _type, features) -> void:
|
|
||||||
if features[2] == "windows":
|
|
||||||
if features[4] == "x86_64":
|
|
||||||
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk.dll",[],"/")
|
|
||||||
elif features[4] == "x86":
|
|
||||||
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk_x86.dll",[],"/")
|
|
||||||
elif features[2] == "linux":
|
|
||||||
add_shared_object("res://addons/discord-sdk-gd/bin/linux/libdiscord_game_sdk.so",[],"/")
|
|
||||||
elif features[2] == "macos":
|
|
||||||
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk.dylib",[],"/")
|
|
||||||
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk_aarch64.dylib",[],"/")
|
|
||||||
|
|
||||||
func _get_name():
|
|
||||||
pass
|
|
@@ -1,6 +1,8 @@
|
|||||||
[gd_scene load_steps=68 format=3 uid="uid://c1slhdnlsv2qt"]
|
[gd_scene load_steps=9 format=3 uid="uid://c1slhdnlsv2qt"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://cq8lwj2matk6x" path="res://addons/discord-sdk-gd/nodes/assets/flow_spritesheet.png" id="4_gvc3o"]
|
[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"]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_ak1tp"]
|
[sub_resource type="GDScript" id="GDScript_ak1tp"]
|
||||||
resource_name = "Debug"
|
resource_name = "Debug"
|
||||||
@@ -11,15 +13,16 @@ func _ready():
|
|||||||
|
|
||||||
func _process(_delta):
|
func _process(_delta):
|
||||||
if(discord_sdk.get_is_discord_working()):
|
if(discord_sdk.get_is_discord_working()):
|
||||||
$AnimatedSprite2D.play(\"default\")
|
$Panel/TextureRect.self_modulate = Color(\"#3eff8d\")
|
||||||
|
$Panel/TextureRect/AnimationPlayer.play(\"pulsate\")
|
||||||
debug_text_update()
|
debug_text_update()
|
||||||
else:
|
else:
|
||||||
$AnimatedSprite2D.stop()
|
$Panel/TextureRect.self_modulate = Color(\"#797979\")
|
||||||
$AnimatedSprite2D.animation = \"gray\"
|
$Panel/TextureRect/AnimationPlayer.stop()
|
||||||
debug_text_update()
|
debug_text_update()
|
||||||
|
|
||||||
func debug_text_update():
|
func debug_text_update():
|
||||||
$Info.text = \"Application ID : {id}
|
$Panel/Info.text = \"Application ID : {id}
|
||||||
Details: {details}
|
Details: {details}
|
||||||
State: {state}
|
State: {state}
|
||||||
|
|
||||||
@@ -41,7 +44,7 @@ Is party public: {ppublic} (needs to be activated in Discord client settings)
|
|||||||
|
|
||||||
Is instanced: {instanced}
|
Is instanced: {instanced}
|
||||||
\"
|
\"
|
||||||
$Info.text = $Info.text.replace(\"{ppublic}\",str(discord_sdk.is_public_party)).replace(\"{instanced}\",str(discord_sdk.instanced)).replace(\"{ssecret}\",discord_sdk.spectate_secret).replace(\"{jsecret}\",discord_sdk.join_secret).replace(\"{msecret}\",discord_sdk.match_secret).replace(\"{mpartysize}\",str(discord_sdk.max_party_size)).replace(\"{cpartysize}\",str(discord_sdk.current_party_size)).replace(\"{partyid}\",discord_sdk.party_id).replace(\"{id}\",str(discord_sdk.app_id)).replace(\"{details}\",discord_sdk.details).replace(\"{state}\",discord_sdk.state).replace(\"{lkey}\",discord_sdk.large_image).replace(\"{ltext}\",discord_sdk.large_image_text).replace(\"{skey}\",discord_sdk.small_image).replace(\"{stext}\",discord_sdk.small_image_text).replace(\"{stimestamp}\",str(discord_sdk.start_timestamp)).replace(\"{etimestamp}\",str(discord_sdk.end_timestamp))
|
$Panel/Info.text = $Panel/Info.text.replace(\"{ppublic}\",str(discord_sdk.is_public_party)).replace(\"{instanced}\",str(discord_sdk.instanced)).replace(\"{ssecret}\",discord_sdk.spectate_secret).replace(\"{jsecret}\",discord_sdk.join_secret).replace(\"{msecret}\",discord_sdk.match_secret).replace(\"{mpartysize}\",str(discord_sdk.max_party_size)).replace(\"{cpartysize}\",str(discord_sdk.current_party_size)).replace(\"{partyid}\",discord_sdk.party_id).replace(\"{id}\",str(discord_sdk.app_id)).replace(\"{details}\",discord_sdk.details).replace(\"{state}\",discord_sdk.state).replace(\"{lkey}\",discord_sdk.large_image).replace(\"{ltext}\",discord_sdk.large_image_text).replace(\"{skey}\",discord_sdk.small_image).replace(\"{stext}\",discord_sdk.small_image_text).replace(\"{stimestamp}\",str(discord_sdk.start_timestamp)).replace(\"{etimestamp}\",str(discord_sdk.end_timestamp))
|
||||||
|
|
||||||
var user_request = {};
|
var user_request = {};
|
||||||
|
|
||||||
@@ -49,504 +52,87 @@ func _on_activity_join_request(user_requesting):
|
|||||||
print(user_requesting)
|
print(user_requesting)
|
||||||
user_request = user_requesting
|
user_request = user_requesting
|
||||||
|
|
||||||
func _on_button_pressed():
|
func _on_accept_join_request_pressed():
|
||||||
if(!user_request.is_empty()):
|
if(!user_request.is_empty()):
|
||||||
discord_sdk.accept_join_request(user_request.id)
|
discord_sdk.accept_join_request(user_request.id)
|
||||||
|
|
||||||
func _on_line_edit_text_submitted(new_text):
|
func _on_invite_with_user_id_text_submitted(new_text):
|
||||||
discord_sdk.send_invite(int(new_text),true,\"this is a test invite sent from godot\")
|
discord_sdk.send_invite(int(new_text),true,\"this is a test invite sent from godot\")
|
||||||
|
|
||||||
func _on_line_edit_2_text_submitted(new_text):
|
func _on_accept_with_user_id_text_submitted(new_text):
|
||||||
discord_sdk.accept_invite(int(new_text))
|
discord_sdk.accept_invite(int(new_text))
|
||||||
|
|
||||||
func _on_button_2_pressed():
|
func _on_print_current_user_on_console_pressed():
|
||||||
print(discord_sdk.get_current_user())
|
print(discord_sdk.get_current_user())
|
||||||
|
|
||||||
func _on_check_button_toggled(button_pressed):
|
func _on_toggle_sdk_toggled(button_pressed):
|
||||||
if(button_pressed):
|
if(button_pressed):
|
||||||
debug_text_update()
|
discord_sdk.unclear()
|
||||||
else:
|
else:
|
||||||
discord_sdk.clear()
|
discord_sdk.clear()
|
||||||
debug_text_update()
|
|
||||||
|
|
||||||
|
func _on_print_friends_pressed():
|
||||||
|
print(discord_sdk.get_all_relationships())
|
||||||
"
|
"
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_85oj4"]
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8abo6"]
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 0, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vv4mb"]
|
[sub_resource type="Animation" id="Animation_mmtmn"]
|
||||||
atlas = ExtResource("4_gvc3o")
|
length = 0.001
|
||||||
region = Rect2(1024, 0, 512, 512)
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0.4),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(0.5, 0.5)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kwv3j"]
|
[sub_resource type="Animation" id="Animation_5u02v"]
|
||||||
atlas = ExtResource("4_gvc3o")
|
resource_name = "pulsate"
|
||||||
region = Rect2(1536, 0, 512, 512)
|
loop_mode = 1
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:scale")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.5, 1),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(0.5, 0.5), Vector2(0.8, 0.8), Vector2(0.5, 0.5)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ij57t"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a7ofc"]
|
||||||
atlas = ExtResource("4_gvc3o")
|
_data = {
|
||||||
region = Rect2(2048, 0, 512, 512)
|
"RESET": SubResource("Animation_mmtmn"),
|
||||||
|
"pulsate": SubResource("Animation_5u02v")
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w2du1"]
|
}
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 512, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4pma1"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 512, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fcoqp"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 512, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tjcb7"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 512, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_oudh8"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 512, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_csja0"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 1024, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0xbpk"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 1024, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_p84pv"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 1024, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1gjwh"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 1024, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mrm73"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 1024, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8rkne"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 1536, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_c15qo"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 1536, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_74tpk"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 1536, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_v5nxq"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 1536, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0mf44"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 1536, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kb0hn"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 2048, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_o22ug"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 2048, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_21q7w"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 2048, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gitfl"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 2048, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8hg1o"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 2048, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_niuoc"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 2560, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mt5ft"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 2560, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ub7uo"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 2560, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2uxnl"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 2560, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bh4ts"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 2560, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_lcu0i"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 3072, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mmqt1"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 3072, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_orode"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 3072, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ricn8"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 3072, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6ftll"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 3072, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fm4jy"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 3584, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7qcot"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 3584, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2y47g"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 3584, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gpr0t"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 3584, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_nn332"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 3584, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jg384"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 4096, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_g0wvw"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 4096, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_e6fmf"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 4096, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_n1rtv"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 4096, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_365g3"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 4096, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_frkrx"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 4608, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_j8adw"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 4608, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_76fh7"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 4608, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gmmrx"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 4608, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rlh42"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 4608, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wijf7"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 5120, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2n5hs"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 5120, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_yrp6k"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 5120, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w411h"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 5120, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pe7po"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 5120, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sr5kq"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 5632, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kgesr"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 5632, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vfk6x"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 5632, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4d1t3"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 5632, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6bexm"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(2048, 5632, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tadlo"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 6144, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_g2h20"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(512, 6144, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_x351d"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1024, 6144, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0jq3r"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(1536, 6144, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1eeyl"]
|
|
||||||
atlas = ExtResource("4_gvc3o")
|
|
||||||
region = Rect2(0, 0, 512, 512)
|
|
||||||
|
|
||||||
[sub_resource type="SpriteFrames" id="SpriteFrames_kudgl"]
|
|
||||||
animations = [{
|
|
||||||
"frames": [{
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_85oj4")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_vv4mb")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_kwv3j")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_ij57t")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_w2du1")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_4pma1")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_fcoqp")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_tjcb7")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_oudh8")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_csja0")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_0xbpk")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_p84pv")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_1gjwh")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_mrm73")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_8rkne")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_c15qo")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_74tpk")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_v5nxq")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_0mf44")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_kb0hn")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_o22ug")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_21q7w")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_gitfl")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_8hg1o")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_niuoc")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_mt5ft")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_ub7uo")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_2uxnl")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_bh4ts")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_lcu0i")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_mmqt1")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_orode")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_ricn8")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_6ftll")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_fm4jy")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_7qcot")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_2y47g")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_gpr0t")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_nn332")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_jg384")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_g0wvw")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_e6fmf")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_n1rtv")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_365g3")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_frkrx")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_j8adw")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_76fh7")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_gmmrx")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_rlh42")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_wijf7")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_2n5hs")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_yrp6k")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_w411h")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_pe7po")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_sr5kq")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_kgesr")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_vfk6x")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_4d1t3")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_6bexm")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_tadlo")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_g2h20")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_x351d")
|
|
||||||
}, {
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_0jq3r")
|
|
||||||
}],
|
|
||||||
"loop": true,
|
|
||||||
"name": &"default",
|
|
||||||
"speed": 30.0
|
|
||||||
}, {
|
|
||||||
"frames": [{
|
|
||||||
"duration": 1.0,
|
|
||||||
"texture": SubResource("AtlasTexture_1eeyl")
|
|
||||||
}],
|
|
||||||
"loop": true,
|
|
||||||
"name": &"gray",
|
|
||||||
"speed": 5.0
|
|
||||||
}]
|
|
||||||
|
|
||||||
[node name="DebugNodeGroup" type="Node"]
|
[node name="DebugNodeGroup" type="Node"]
|
||||||
editor_description = "This is a Debug Node wich will show (only if the project runs) some usefull info and buttons/input"
|
editor_description = "This is a Debug Node wich will show (only if the project runs) some usefull info and buttons/input"
|
||||||
script = SubResource("GDScript_ak1tp")
|
script = SubResource("GDScript_ak1tp")
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
[node name="Panel" type="Panel" parent="."]
|
||||||
position = Vector2(389, 477.375)
|
anchors_preset = -1
|
||||||
scale = Vector2(0.14209, 0.14209)
|
anchor_right = 0.373
|
||||||
sprite_frames = SubResource("SpriteFrames_kudgl")
|
anchor_bottom = 1.0
|
||||||
frame_progress = 0.417812
|
offset_left = -5.0
|
||||||
|
offset_right = 0.303955
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="Info" type="RichTextLabel" parent="."]
|
[node name="Info" type="RichTextLabel" parent="Panel"]
|
||||||
offset_left = 7.0
|
layout_mode = 0
|
||||||
offset_top = 6.0
|
offset_left = 12.0
|
||||||
offset_right = 424.0
|
offset_top = 21.0
|
||||||
offset_bottom = 312.0
|
offset_right = 429.0
|
||||||
|
offset_bottom = 461.0
|
||||||
theme_override_font_sizes/normal_font_size = 14
|
theme_override_font_sizes/normal_font_size = 14
|
||||||
text = "Application ID : {id}
|
text = "Application ID : {id}
|
||||||
Details: {details}
|
Details: {details}
|
||||||
@@ -572,52 +158,109 @@ Is instanced: {instanced}
|
|||||||
"
|
"
|
||||||
fit_content = true
|
fit_content = true
|
||||||
|
|
||||||
[node name="PrintCurrentUserOnConsole" type="Button" parent="."]
|
[node name="PrintCurrentUserOnConsole" type="Button" parent="Panel"]
|
||||||
|
layout_mode = 1
|
||||||
anchors_preset = 4
|
anchors_preset = 4
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = 7.0
|
offset_left = 12.0
|
||||||
offset_top = 141.375
|
offset_top = 138.375
|
||||||
offset_right = 240.0
|
offset_right = 245.0
|
||||||
offset_bottom = 174.375
|
offset_bottom = 171.375
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
text = "Print current user on console"
|
text = "Print current user on console"
|
||||||
|
|
||||||
[node name="AcceptInviteRequest" type="Button" parent="."]
|
[node name="PrintFriends" type="Button" parent="Panel"]
|
||||||
|
layout_mode = 1
|
||||||
anchors_preset = 4
|
anchors_preset = 4
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = 7.0
|
offset_left = 12.0
|
||||||
offset_top = 178.875
|
offset_top = 176.5
|
||||||
offset_right = 149.0
|
offset_right = 204.0
|
||||||
offset_bottom = 209.875
|
offset_bottom = 207.5
|
||||||
|
grow_vertical = 2
|
||||||
|
text = "Print friends on console"
|
||||||
|
|
||||||
|
[node name="AcceptJoinRequest" type="Button" parent="Panel"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 4
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = 12.0
|
||||||
|
offset_top = 212.875
|
||||||
|
offset_right = 154.0
|
||||||
|
offset_bottom = 243.875
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
text = "ACCEPT REQUEST"
|
text = "ACCEPT REQUEST"
|
||||||
|
|
||||||
[node name="InviteWithUserID" type="LineEdit" parent="."]
|
[node name="InviteWithUserID" type="LineEdit" parent="Panel"]
|
||||||
|
layout_mode = 1
|
||||||
anchors_preset = 4
|
anchors_preset = 4
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = 6.0
|
offset_left = 11.0
|
||||||
offset_top = 215.375
|
offset_top = 250.375
|
||||||
offset_right = 205.0
|
offset_right = 210.0
|
||||||
offset_bottom = 246.375
|
offset_bottom = 281.375
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
placeholder_text = "Invite with user_id here"
|
placeholder_text = "Invite with user_id here"
|
||||||
|
|
||||||
[node name="AcceptWithUserID" type="LineEdit" parent="."]
|
[node name="AcceptWithUserID" type="LineEdit" parent="Panel"]
|
||||||
|
layout_mode = 1
|
||||||
anchors_preset = 4
|
anchors_preset = 4
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = 6.0
|
offset_left = 11.0
|
||||||
offset_top = 250.875
|
offset_top = 286.875
|
||||||
offset_right = 255.0
|
offset_right = 260.0
|
||||||
offset_bottom = 281.875
|
offset_bottom = 317.875
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
placeholder_text = "Accept Invite with user_id here"
|
placeholder_text = "Accept Invite with user_id here"
|
||||||
|
|
||||||
[connection signal="pressed" from="PrintCurrentUserOnConsole" to="." method="_on_button_2_pressed"]
|
[node name="ToggleSDK" type="CheckButton" parent="Panel"]
|
||||||
[connection signal="pressed" from="AcceptInviteRequest" to="." method="_on_button_pressed"]
|
layout_mode = 1
|
||||||
[connection signal="text_submitted" from="InviteWithUserID" to="." method="_on_line_edit_text_submitted"]
|
anchors_preset = 4
|
||||||
[connection signal="text_submitted" from="AcceptWithUserID" to="." method="_on_line_edit_2_text_submitted"]
|
anchor_top = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = 298.0
|
||||||
|
offset_top = 157.375
|
||||||
|
offset_right = 1144.0
|
||||||
|
offset_bottom = 665.375
|
||||||
|
grow_vertical = 2
|
||||||
|
scale = Vector2(0.05, 0.05)
|
||||||
|
theme_override_icons/checked = ExtResource("2_q6tao")
|
||||||
|
theme_override_icons/unchecked = ExtResource("3_5cyem")
|
||||||
|
theme_override_styles/focus = SubResource("StyleBoxEmpty_8abo6")
|
||||||
|
button_pressed = true
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="Panel"]
|
||||||
|
self_modulate = Color(0.47451, 0.47451, 0.47451, 1)
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_left = 0.88
|
||||||
|
anchor_top = 0.762
|
||||||
|
anchor_right = 0.88
|
||||||
|
anchor_bottom = 0.762
|
||||||
|
offset_left = -28.8
|
||||||
|
offset_top = -28.776
|
||||||
|
offset_right = 28.0841
|
||||||
|
offset_bottom = 28.1082
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
scale = Vector2(0.5, 0.5)
|
||||||
|
pivot_offset = Vector2(29.0693, 29.0693)
|
||||||
|
texture = ExtResource("3_goflf")
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="Panel/TextureRect"]
|
||||||
|
libraries = {
|
||||||
|
"": SubResource("AnimationLibrary_a7ofc")
|
||||||
|
}
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Panel/PrintCurrentUserOnConsole" to="." method="_on_print_current_user_on_console_pressed"]
|
||||||
|
[connection signal="pressed" from="Panel/PrintFriends" to="." method="_on_print_friends_pressed"]
|
||||||
|
[connection signal="pressed" from="Panel/AcceptJoinRequest" to="." method="_on_accept_join_request_pressed"]
|
||||||
|
[connection signal="text_submitted" from="Panel/InviteWithUserID" to="." method="_on_invite_with_user_id_text_submitted"]
|
||||||
|
[connection signal="text_submitted" from="Panel/AcceptWithUserID" to="." method="_on_accept_with_user_id_text_submitted"]
|
||||||
|
[connection signal="toggled" from="Panel/ToggleSDK" to="." method="_on_toggle_sdk_toggled"]
|
||||||
|
@@ -1,7 +0,0 @@
|
|||||||
[gd_scene load_steps=2 format=3 uid="uid://dkbtuqbtdlqnk"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://addons/discord-sdk-gd/nodes/core_updater.gd" id="1_8fjwg"]
|
|
||||||
|
|
||||||
[node name="DiscordSDKLoader" type="Node"]
|
|
||||||
editor_description = "This always needs to run in the background if you want to comunicate with the discord client."
|
|
||||||
script = ExtResource("1_8fjwg")
|
|
@@ -1,4 +0,0 @@
|
|||||||
<svg width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.35776 4.35954C0.15745 6.80425 -0.158183 9.20437 0.0679444 11.5772C1.29133 12.4811 2.66066 13.1685 4.11639 13.6096C4.44417 13.1687 4.73422 12.701 4.98346 12.2115C4.51007 12.0346 4.05317 11.8165 3.61804 11.5596C3.73256 11.4765 3.84456 11.3909 3.95279 11.3079C5.21891 11.9033 6.60083 12.212 7.99997 12.212C9.39912 12.212 10.781 11.9033 12.0472 11.3079C12.1566 11.3972 12.2686 11.4828 12.3819 11.5596C11.9459 11.8169 11.4882 12.0355 11.014 12.2127C11.2629 12.7021 11.553 13.1694 11.881 13.6096C13.338 13.1703 14.7084 12.4832 15.932 11.5785C16.1887 8.91658 15.71 6.52885 14.6441 4.35954H1.35776ZM3.90119 8.15294C3.90119 9.03386 4.55307 9.74992 5.34212 9.74992C6.14627 9.74992 6.76795 9.03386 6.78179 8.15294C6.79563 7.27203 6.14879 6.54967 5.3396 6.54967C4.53042 6.54967 3.90119 7.27203 3.90119 8.15294ZM9.21815 8.15294C9.21815 9.03386 9.86752 9.74992 10.6578 9.74992C11.462 9.74992 12.0824 9.03386 12.0962 8.15294C12.1101 7.27203 11.4683 6.54967 10.6578 6.54967C9.84738 6.54967 9.21815 7.27203 9.21815 8.15294Z" fill="#5865F2"/>
|
|
||||||
<path d="M4.31337 0.711094C4.97409 0.378693 5.67883 0.1583 6.39124 0C6.67624 0.478046 6.93634 0.995727 7.16285 1.50181C7.43169 1.45692 7.70147 1.4403 7.97234 1.43708V1.43666C7.97402 1.43666 7.97578 1.43708 7.97746 1.43708C7.97907 1.43708 7.98082 1.43666 7.98271 1.43666V1.43708C8.25308 1.4403 8.5231 1.45692 8.79187 1.50181C9.01852 0.995727 9.27877 0.478046 9.56334 0C10.2761 0.1583 10.9807 0.378693 11.6415 0.711094C11.6264 1.29423 11.5887 1.85296 11.5124 2.42051C11.7685 2.58482 12.0385 2.72584 12.2781 2.91819C12.522 3.10544 12.7702 3.28458 12.9907 3.50357C13.4312 3.21235 13.8976 2.93868 14.3777 2.6971C14.8955 3.25402 15.3798 3.85511 15.7752 4.52774C15.5165 4.9441 15.1789 5.43899 14.8223 5.88763H1.13254C0.823832 5.50544 0.490472 5.01534 0.179688 4.52774C0.575141 3.85511 1.05924 3.25402 1.57697 2.6971C2.05728 2.93868 2.52351 3.21235 2.96401 3.50357C3.18451 3.28458 3.43322 3.10544 3.67673 2.91819C3.9164 2.72584 4.18607 2.58482 4.44266 2.42051C4.3662 1.85296 4.32848 1.29423 4.31337 0.711094Z" fill="#5865F2"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.1 KiB |
11
project/addons/discord-sdk-gd/nodes/assets/circle.svg
Normal file
11
project/addons/discord-sdk-gd/nodes/assets/circle.svg
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44.72 44.72">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<circle class="cls-1" cx="22.36" cy="22.36" r="22.36"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 290 B |
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://c70jidlptani4"
|
uid="uid://dtc6ckladq0td"
|
||||||
path="res://.godot/imported/Group_1.svg-8cf36058739c5884a9a47a4dfa7d001a.ctex"
|
path="res://.godot/imported/circle.svg-ca71b895eb1c5e7e6f2f2afe081d28dd.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://addons/discord-sdk-gd/nodes/assets/Group_1.svg"
|
source_file="res://addons/discord-sdk-gd/nodes/assets/circle.svg"
|
||||||
dest_files=["res://.godot/imported/Group_1.svg-8cf36058739c5884a9a47a4dfa7d001a.ctex"]
|
dest_files=["res://.godot/imported/circle.svg-ca71b895eb1c5e7e6f2f2afe081d28dd.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 272 KiB |
@@ -1,8 +1,23 @@
|
|||||||
## This always needs to run in the background if you want to comunicate with the discord client.
|
## [color=yellow]PLEASE IGNORE![/color] This is a important Node wich gets automatically added as Singleton.
|
||||||
|
##
|
||||||
|
## The DiscordSDKLoader Node automatically gets added as Singleton while installing the addon.
|
||||||
|
## It has to run in the background to comunicate with Discord.
|
||||||
|
## You don't need to use it.
|
||||||
|
##
|
||||||
|
## @tutorial: https://github.com/vaporvee/discord-sdk-godot/wiki
|
||||||
|
@tool
|
||||||
|
class_name core_updater
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
@export var is_running: bool =false
|
func _process(_delta):
|
||||||
|
if(ProjectSettings.get_setting("DiscordSDK/EditorPresence/enabled") && Engine.is_editor_hint()):
|
||||||
func _process(delta) -> void:
|
if(discord_sdk.app_id != 1108142249990176808):
|
||||||
discord_sdk.coreupdate()
|
discord_sdk.app_id = 1108142249990176808
|
||||||
is_running = true
|
discord_sdk.details = ProjectSettings.get_setting("application/config/name")
|
||||||
|
discord_sdk.state = "Editing: \""+ str(get_tree().edited_scene_root.scene_file_path).replace("res://","") +"\""
|
||||||
|
discord_sdk.large_image = "godot"
|
||||||
|
discord_sdk.large_image_text = str(Engine.get_version_info().string)
|
||||||
|
discord_sdk.start_timestamp = int(Time.get_unix_time_from_system())
|
||||||
|
discord_sdk.refresh()
|
||||||
|
if(discord_sdk.app_id == 1108142249990176808 || !Engine.is_editor_hint()):
|
||||||
|
discord_sdk.coreupdate()
|
||||||
|
@@ -1,4 +1,9 @@
|
|||||||
## This is a Debug Node wich will show (only if the project runs) some usefull info and buttons/input
|
## 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.
|
||||||
|
##
|
||||||
|
## @tutorial: https://github.com/vaporvee/discord-sdk-godot/wiki
|
||||||
|
@tool
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
@@ -3,5 +3,5 @@
|
|||||||
name="DiscordSDK"
|
name="DiscordSDK"
|
||||||
description="Discord Game SDK support for GDScript in Godot"
|
description="Discord Game SDK support for GDScript in Godot"
|
||||||
author="vaporvee"
|
author="vaporvee"
|
||||||
version="2.0"
|
version="3.1"
|
||||||
script="plugin.gd"
|
script="plugin.gd"
|
||||||
|
@@ -1,47 +1,39 @@
|
|||||||
@tool
|
@tool
|
||||||
extends EditorPlugin
|
extends EditorPlugin
|
||||||
|
|
||||||
const DiscordSDKLoader = preload("res://addons/discord-sdk-gd/nodes/core_updater.gd")
|
|
||||||
const DiscordSDKLoader_icon = preload("res://addons/discord-sdk-gd/nodes/assets/Group_1.svg")
|
|
||||||
var loaded_DiscordSDKLoader = DiscordSDKLoader.new()
|
|
||||||
|
|
||||||
const DiscordSDKDebug = preload("res://addons/discord-sdk-gd/nodes/debug.gd")
|
const DiscordSDKDebug = preload("res://addons/discord-sdk-gd/nodes/debug.gd")
|
||||||
const DiscordSDKDebug_icon = preload("res://addons/discord-sdk-gd/nodes/assets/Debug.svg")
|
const DiscordSDKDebug_icon = preload("res://addons/discord-sdk-gd/nodes/assets/Debug.svg")
|
||||||
var loaded_DiscordSDKDebug = DiscordSDKDebug.new()
|
var loaded_DiscordSDKDebug = DiscordSDKDebug.new()
|
||||||
|
var restart_window: Control = preload("res://addons/discord-sdk-gd/restart_window.tscn").instantiate()
|
||||||
|
|
||||||
const ExportPlugin = preload("res://addons/discord-sdk-gd/export.gd")
|
|
||||||
var loaded_exportplugin = ExportPlugin.new()
|
|
||||||
|
|
||||||
|
|
||||||
func _enter_tree() -> void:
|
func _enter_tree() -> void:
|
||||||
add_custom_type("DiscordSDKLoader","Node",DiscordSDKLoader,DiscordSDKLoader_icon)
|
|
||||||
add_custom_type("DiscordSDKDebug","Node",DiscordSDKDebug,DiscordSDKDebug_icon)
|
add_custom_type("DiscordSDKDebug","Node",DiscordSDKDebug,DiscordSDKDebug_icon)
|
||||||
add_autoload_singleton("DiscordSDKLoader", "res://addons/discord-sdk-gd/nodes/core_updater.gd")
|
add_autoload_singleton("DiscordSDKLoader", "res://addons/discord-sdk-gd/nodes/core_updater.gd")
|
||||||
add_export_plugin(loaded_exportplugin)
|
|
||||||
|
|
||||||
func _enable_plugin():
|
|
||||||
print("DiscordSDK Addon got enabled")
|
|
||||||
ProjectSettings.set_setting("DiscordSDK/EditorPresence/enabled",false)
|
ProjectSettings.set_setting("DiscordSDK/EditorPresence/enabled",false)
|
||||||
|
ProjectSettings.set_as_basic("DiscordSDK/EditorPresence/enabled",true)
|
||||||
ProjectSettings.set_initial_value("DiscordSDK/EditorPresence/enabled",false)
|
ProjectSettings.set_initial_value("DiscordSDK/EditorPresence/enabled",false)
|
||||||
ProjectSettings.set_restart_if_changed("DiscordSDK/EditorPresence/enabled",true)
|
ProjectSettings.set_restart_if_changed("DiscordSDK/EditorPresence/enabled",true)
|
||||||
|
|
||||||
|
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")
|
||||||
|
if FileAccess.file_exists(ProjectSettings.globalize_path("res://") + "addons/discord-sdk-gd/nodes/.gdignore"):
|
||||||
|
DirAccess.remove_absolute(ProjectSettings.globalize_path("res://") + "addons/discord-sdk-gd/nodes/.gdignore")
|
||||||
|
add_control_to_container(EditorPlugin.CONTAINER_TOOLBAR,restart_window)
|
||||||
|
restart_window.get_child(0).connect("canceled",save_restart)
|
||||||
|
restart_window.get_child(0).connect("confirmed",restart)
|
||||||
|
|
||||||
func _disable_plugin() -> void:
|
func _disable_plugin() -> void:
|
||||||
print("DiscordSDK Addon got disabled")
|
FileAccess.open("res://addons/discord-sdk-gd/bin/.gdignore",FileAccess.WRITE)
|
||||||
|
FileAccess.open("res://addons/discord-sdk-gd/nodes/.gdignore",FileAccess.WRITE)
|
||||||
|
push_warning("DiscordSDK Addon got disabled. PLEASE RESTART THE EDITOR!")
|
||||||
remove_autoload_singleton("DiscordSDKLoader")
|
remove_autoload_singleton("DiscordSDKLoader")
|
||||||
remove_custom_type("DiscordSDKLoader")
|
|
||||||
remove_custom_type("DiscordSDKDebug")
|
remove_custom_type("DiscordSDKDebug")
|
||||||
ProjectSettings.clear("DiscordSDK/EditorPresence/enabled")
|
ProjectSettings.clear("DiscordSDK/EditorPresence/enabled")
|
||||||
|
|
||||||
func _process(_delta):
|
func save_restart() -> void:
|
||||||
if(ProjectSettings.get_setting("DiscordSDK/EditorPresence/enabled")&&!get_editor_interface().is_playing_scene()):
|
get_editor_interface().restart_editor(true)
|
||||||
if(discord_sdk.app_id != 1108142249990176808):
|
|
||||||
discord_sdk.app_id = 1108142249990176808
|
func restart() -> void:
|
||||||
discord_sdk.details = ProjectSettings.get_setting("application/config/name")
|
get_editor_interface().restart_editor(false)
|
||||||
discord_sdk.state = "Editing: \""+ str(get_tree().edited_scene_root.scene_file_path).replace("res://","") +"\""
|
|
||||||
discord_sdk.large_image = "godot"
|
|
||||||
discord_sdk.large_image_text = str(Engine.get_version_info())
|
|
||||||
discord_sdk.start_timestamp = int(Time.get_unix_time_from_system())
|
|
||||||
discord_sdk.refresh()
|
|
||||||
if(discord_sdk.app_id == 1108142249990176808):
|
|
||||||
discord_sdk.coreupdate()
|
|
||||||
|
115
project/addons/discord-sdk-gd/restart_window.tscn
Normal file
115
project/addons/discord-sdk-gd/restart_window.tscn
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
[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_f828l"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1t7mm"]
|
||||||
|
|
||||||
|
[sub_resource type="Theme" id="Theme_swwco"]
|
||||||
|
Button/styles/focus = SubResource("StyleBoxEmpty_1t7mm")
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_5vqdt"]
|
||||||
|
|
||||||
|
[sub_resource type="Image" id="Image_inmd8"]
|
||||||
|
data = {
|
||||||
|
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 168, 224, 224, 224, 233, 224, 224, 224, 236, 224, 224, 224, 170, 231, 231, 231, 31, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 234, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 239, 230, 230, 230, 30, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 168, 224, 224, 224, 255, 224, 224, 224, 186, 224, 224, 224, 32, 224, 224, 224, 33, 224, 224, 224, 187, 224, 224, 224, 255, 225, 225, 225, 167, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 33, 255, 255, 255, 0, 255, 255, 255, 0, 227, 227, 227, 36, 224, 224, 224, 255, 224, 224, 224, 234, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 237, 224, 224, 224, 255, 224, 224, 224, 33, 255, 255, 255, 0, 255, 255, 255, 0, 229, 229, 229, 38, 224, 224, 224, 255, 224, 224, 224, 229, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 164, 224, 224, 224, 255, 224, 224, 224, 187, 225, 225, 225, 34, 227, 227, 227, 36, 224, 224, 224, 192, 224, 224, 224, 255, 224, 224, 224, 162, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 225, 225, 225, 215, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 229, 224, 224, 224, 32, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 24, 224, 224, 224, 216, 224, 224, 224, 255, 224, 224, 224, 210, 224, 224, 224, 161, 224, 224, 224, 232, 224, 224, 224, 231, 225, 225, 225, 159, 230, 230, 230, 30, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 107, 224, 224, 224, 255, 224, 224, 224, 210, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 105, 230, 230, 230, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 221, 224, 224, 224, 130, 255, 255, 255, 1, 255, 255, 255, 1, 225, 225, 225, 134, 224, 224, 224, 224, 225, 225, 225, 223, 224, 224, 224, 132, 255, 255, 255, 1, 255, 255, 255, 6, 224, 224, 224, 137, 224, 224, 224, 231, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 130, 225, 225, 225, 133, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 129, 224, 224, 224, 137, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 65, 224, 224, 224, 255, 224, 224, 224, 220, 225, 225, 225, 223, 224, 224, 224, 255, 226, 226, 226, 61, 224, 224, 224, 65, 224, 224, 224, 255, 224, 224, 224, 222, 224, 224, 224, 231, 224, 224, 224, 255, 227, 227, 227, 62, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 67, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 222, 224, 224, 224, 255, 227, 227, 227, 63, 225, 225, 225, 67, 224, 224, 224, 255, 224, 224, 224, 219, 224, 224, 224, 230, 224, 224, 224, 255, 227, 227, 227, 63, 255, 255, 255, 0, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 127, 224, 224, 224, 129, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 225, 225, 225, 126, 225, 225, 225, 135, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 255, 255, 255, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 221, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 1, 224, 224, 224, 128, 224, 224, 224, 220, 224, 224, 224, 219, 225, 225, 225, 127, 255, 255, 255, 0, 255, 255, 255, 5, 225, 225, 225, 134, 224, 224, 224, 229, 224, 224, 224, 255, 255, 255, 255, 0),
|
||||||
|
"format": "RGBA8",
|
||||||
|
"height": 16,
|
||||||
|
"mipmaps": false,
|
||||||
|
"width": 16
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="ImageTexture" id="ImageTexture_gdtpn"]
|
||||||
|
image = SubResource("Image_inmd8")
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7v0rg"]
|
||||||
|
|
||||||
|
[node name="RestartWindow" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -200.0
|
||||||
|
offset_top = -171.5
|
||||||
|
offset_right = 200.0
|
||||||
|
offset_bottom = 171.5
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
|
||||||
|
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."]
|
||||||
|
title = "Restart required"
|
||||||
|
initial_position = 2
|
||||||
|
size = Vector2i(416, 400)
|
||||||
|
visible = true
|
||||||
|
transient = false
|
||||||
|
unresizable = true
|
||||||
|
theme = SubResource("Theme_swwco")
|
||||||
|
ok_button_text = "Restart"
|
||||||
|
cancel_button_text = "Save and restart"
|
||||||
|
|
||||||
|
[node name="Panel" type="Panel" parent="ConfirmationDialog"]
|
||||||
|
offset_left = 8.0
|
||||||
|
offset_top = 8.0
|
||||||
|
offset_right = 408.0
|
||||||
|
offset_bottom = 351.0
|
||||||
|
mouse_filter = 1
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="ConfirmationDialog/Panel"]
|
||||||
|
custom_minimum_size = Vector2(400, 0)
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 400.0
|
||||||
|
offset_bottom = 309.0
|
||||||
|
|
||||||
|
[node name="HSeparator" type="HSeparator" parent="ConfirmationDialog/Panel/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
mouse_filter = 1
|
||||||
|
theme_override_constants/separation = 15
|
||||||
|
theme_override_styles/separator = SubResource("StyleBoxEmpty_5vqdt")
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="ConfirmationDialog/Panel/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
|
||||||
|
[node name="DocsIcon" type="TextureRect" parent="ConfirmationDialog/Panel/VBoxContainer/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 8
|
||||||
|
size_flags_vertical = 4
|
||||||
|
texture = SubResource("ImageTexture_gdtpn")
|
||||||
|
stretch_mode = 2
|
||||||
|
|
||||||
|
[node name="LinkButton" type="LinkButton" parent="ConfirmationDialog/Panel/VBoxContainer/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 8
|
||||||
|
mouse_default_cursor_shape = 16
|
||||||
|
text = "Plugin Docs"
|
||||||
|
uri = "https://github.com/vaporvee/discord-sdk-godot/wiki"
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="ConfirmationDialog/Panel/VBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(128, 128)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 0
|
||||||
|
texture = ExtResource("1_f828l")
|
||||||
|
expand_mode = 1
|
||||||
|
|
||||||
|
[node name="RichTextLabel" type="RichTextLabel" parent="ConfirmationDialog/Panel/VBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(400, 200)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 0
|
||||||
|
mouse_filter = 1
|
||||||
|
theme_override_styles/normal = SubResource("StyleBoxEmpty_7v0rg")
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[center]Thanks for enabling the
|
||||||
|
[rainbow]Discord Game SDK Plugin[/rainbow]
|
||||||
|
made by vaporvee. ❤️
|
||||||
|
|
||||||
|
|
||||||
|
You need to [wave]restart[/wave] the editor to fully enable this plugin!
|
||||||
|
Do you want to [wave]save[/wave] your project before restarting?
|
||||||
|
(Error messages after the first restart are normal. Please ignore them)"
|
34
project/assets/Logo_V2_No_Bg_Small.png.import
Normal file
34
project/assets/Logo_V2_No_Bg_Small.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bjns3n0prshdy"
|
||||||
|
path="res://.godot/imported/Logo_V2_No_Bg_Small.png-6c9c0ba88b8e0a9cb7aa1acb948a1191.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/Logo_V2_No_Bg_Small.png"
|
||||||
|
dest_files=["res://.godot/imported/Logo_V2_No_Bg_Small.png-6c9c0ba88b8e0a9cb7aa1acb948a1191.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
@@ -8,18 +8,17 @@ custom_features=""
|
|||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="../../demo/discord_sdk.exe"
|
export_path="../../testexpoort/discord_sdk_demo.exe"
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
encrypt_pck=false
|
encrypt_pck=false
|
||||||
encrypt_directory=false
|
encrypt_directory=false
|
||||||
script_encryption_key=""
|
|
||||||
|
|
||||||
[preset.0.options]
|
[preset.0.options]
|
||||||
|
|
||||||
custom_template/debug=""
|
custom_template/debug=""
|
||||||
custom_template/release=""
|
custom_template/release=""
|
||||||
debug/export_console_script=1
|
debug/export_console_wrapper=1
|
||||||
binary_format/embed_pck=true
|
binary_format/embed_pck=true
|
||||||
texture_format/bptc=true
|
texture_format/bptc=true
|
||||||
texture_format/s3tc=true
|
texture_format/s3tc=true
|
||||||
@@ -27,23 +26,20 @@ texture_format/etc=false
|
|||||||
texture_format/etc2=false
|
texture_format/etc2=false
|
||||||
binary_format/architecture="x86_64"
|
binary_format/architecture="x86_64"
|
||||||
codesign/enable=false
|
codesign/enable=false
|
||||||
codesign/identity_type=0
|
|
||||||
codesign/identity=""
|
|
||||||
codesign/password=""
|
|
||||||
codesign/timestamp=true
|
codesign/timestamp=true
|
||||||
codesign/timestamp_server_url=""
|
codesign/timestamp_server_url=""
|
||||||
codesign/digest_algorithm=1
|
codesign/digest_algorithm=1
|
||||||
codesign/description=""
|
codesign/description=""
|
||||||
codesign/custom_options=PackedStringArray()
|
codesign/custom_options=PackedStringArray()
|
||||||
application/modify_resources=false
|
application/modify_resources=true
|
||||||
application/icon=""
|
application/icon="res://assets/Logo_V2.png"
|
||||||
application/console_wrapper_icon=""
|
application/console_wrapper_icon=""
|
||||||
application/icon_interpolation=4
|
application/icon_interpolation=4
|
||||||
application/file_version=""
|
application/file_version=""
|
||||||
application/product_version=""
|
application/product_version=""
|
||||||
application/company_name=""
|
application/company_name=""
|
||||||
application/product_name=""
|
application/product_name=""
|
||||||
application/file_description=""
|
application/file_description="Discord SDK Godot Test"
|
||||||
application/copyright=""
|
application/copyright=""
|
||||||
application/trademarks=""
|
application/trademarks=""
|
||||||
ssh_remote_deploy/enabled=false
|
ssh_remote_deploy/enabled=false
|
||||||
|
@@ -5,6 +5,8 @@ func _ready() -> void:
|
|||||||
discord_sdk.connect("activity_join_request",_on_activity_join_request)
|
discord_sdk.connect("activity_join_request",_on_activity_join_request)
|
||||||
discord_sdk.connect("activity_join",_on_activity_join)
|
discord_sdk.connect("activity_join",_on_activity_join)
|
||||||
discord_sdk.connect("activity_spectate",_on_activity_spectate)
|
discord_sdk.connect("activity_spectate",_on_activity_spectate)
|
||||||
|
discord_sdk.connect("relationships_init",_on_relationship_init)
|
||||||
|
discord_sdk.connect("updated_relationship", _on_updated_relationship)
|
||||||
|
|
||||||
func set_activity() -> void:
|
func set_activity() -> void:
|
||||||
discord_sdk.clear()
|
discord_sdk.clear()
|
||||||
@@ -18,8 +20,8 @@ func set_activity() -> void:
|
|||||||
discord_sdk.small_image_text = "Fighting the end boss! D:"
|
discord_sdk.small_image_text = "Fighting the end boss! D:"
|
||||||
discord_sdk.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time
|
discord_sdk.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
|
# It is NOT recommended to manage secrets locally! It's meant to be a payload wich the server understands and
|
||||||
# understands and returns the other variables like current_party_size, party_id etc. Most of the values must differ from the others.
|
# 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))
|
var my_secret: String = str(randi_range(0,999999))
|
||||||
|
|
||||||
discord_sdk.party_id = "mylobbycanbeeverything_" + my_secret
|
discord_sdk.party_id = "mylobbycanbeeverything_" + my_secret
|
||||||
@@ -52,9 +54,10 @@ func _on_activity_join(secret) -> void:
|
|||||||
|
|
||||||
func _on_activity_spectate(secret) -> void:
|
func _on_activity_spectate(secret) -> void:
|
||||||
print(secret)
|
print(secret)
|
||||||
|
|
||||||
func _on_toggle_sdk_toggled(button_pressed):
|
func _on_relationship_init():
|
||||||
if(button_pressed):
|
print("initialized")
|
||||||
set_activity()
|
|
||||||
else:
|
func _on_updated_relationship(relationship):
|
||||||
discord_sdk.clear()
|
print(relationship)
|
||||||
|
|
||||||
|
@@ -1,13 +1,9 @@
|
|||||||
[gd_scene load_steps=7 format=3 uid="uid://dyc3kseph4el7"]
|
[gd_scene load_steps=4 format=3 uid="uid://dyc3kseph4el7"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://main.gd" id="1_kl8ri"]
|
[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="Texture2D" uid="uid://b3qm246m7pnsx" path="res://assets/Logo_V2.png" id="2_gd222"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dnfq6kug4x6o2" path="res://addons/discord-sdk-gd/nodes/assets/Checked.svg" id="3_wajuo"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://compmm3kviqqe" path="res://addons/discord-sdk-gd/nodes/assets/Unchecked.svg" id="4_8hvtu"]
|
|
||||||
[ext_resource type="Script" path="res://addons/discord-sdk-gd/nodes/debug.gd" id="6_ujijw"]
|
[ext_resource type="Script" path="res://addons/discord-sdk-gd/nodes/debug.gd" id="6_ujijw"]
|
||||||
|
|
||||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_phc3u"]
|
|
||||||
|
|
||||||
[node name="Node" type="Node"]
|
[node name="Node" type="Node"]
|
||||||
script = ExtResource("1_kl8ri")
|
script = ExtResource("1_kl8ri")
|
||||||
|
|
||||||
@@ -23,7 +19,7 @@ color = Color(0.345098, 0.396078, 0.94902, 1)
|
|||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
texture_filter = 4
|
texture_filter = 4
|
||||||
position = Vector2(580, 308)
|
position = Vector2(789, 330.5)
|
||||||
scale = Vector2(0.408203, 0.408203)
|
scale = Vector2(0.408203, 0.408203)
|
||||||
texture = ExtResource("2_gd222")
|
texture = ExtResource("2_gd222")
|
||||||
|
|
||||||
@@ -33,10 +29,10 @@ anchor_left = 0.293
|
|||||||
anchor_top = 0.59
|
anchor_top = 0.59
|
||||||
anchor_right = 0.736
|
anchor_right = 0.736
|
||||||
anchor_bottom = 0.727
|
anchor_bottom = 0.727
|
||||||
offset_left = -0.536011
|
offset_left = 208.464
|
||||||
offset_top = -0.319977
|
offset_top = 22.18
|
||||||
offset_right = 0.12793
|
offset_right = 209.128
|
||||||
offset_bottom = -0.0960388
|
offset_bottom = 22.4039
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
@@ -46,20 +42,3 @@ text = "[center][font s=60]DiscordSDK Test"
|
|||||||
|
|
||||||
[node name="DiscordSDKDebug" type="Node" parent="."]
|
[node name="DiscordSDKDebug" type="Node" parent="."]
|
||||||
script = ExtResource("6_ujijw")
|
script = ExtResource("6_ujijw")
|
||||||
|
|
||||||
[node name="ToggleSDK" type="CheckButton" parent="."]
|
|
||||||
anchors_preset = 4
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
offset_left = 293.0
|
|
||||||
offset_top = 142.375
|
|
||||||
offset_right = 1139.0
|
|
||||||
offset_bottom = 650.375
|
|
||||||
grow_vertical = 2
|
|
||||||
scale = Vector2(0.05, 0.05)
|
|
||||||
theme_override_icons/checked = ExtResource("3_wajuo")
|
|
||||||
theme_override_icons/unchecked = ExtResource("4_8hvtu")
|
|
||||||
theme_override_styles/focus = SubResource("StyleBoxEmpty_phc3u")
|
|
||||||
button_pressed = true
|
|
||||||
|
|
||||||
[connection signal="toggled" from="ToggleSDK" to="." method="_on_toggle_sdk_toggled"]
|
|
||||||
|
@@ -8,15 +8,12 @@
|
|||||||
|
|
||||||
config_version=5
|
config_version=5
|
||||||
|
|
||||||
[DiscordSDK]
|
|
||||||
|
|
||||||
EditorPresence/enabled=true
|
|
||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="GDExtension DiscordSDK Test Project"
|
config/name="GDExtension DiscordSDK Test Project"
|
||||||
|
config/tags=PackedStringArray("vaporvee")
|
||||||
run/main_scene="res://main.tscn"
|
run/main_scene="res://main.tscn"
|
||||||
config/features=PackedStringArray("4.0")
|
config/features=PackedStringArray("4.1")
|
||||||
boot_splash/bg_color=Color(0.25098, 0.305882, 0.929412, 1)
|
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/Banner_v1.png"
|
||||||
boot_splash/fullsize=false
|
boot_splash/fullsize=false
|
||||||
|
18
release.py
Normal file
18
release.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import os
|
||||||
|
from distutils.dir_util import copy_tree
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
if os.path.exists("release/ADDON-Discord-SDK-Godot/addons"):
|
||||||
|
shutil.rmtree("release/ADDON-Discord-SDK-Godot/addons", ignore_errors=True)
|
||||||
|
|
||||||
|
copy_tree("project/addons/", "release/temp/ADDON-Discord-SDK-Godot/addons")
|
||||||
|
open(
|
||||||
|
"release/temp/ADDON-Discord-SDK-Godot/addons/discord-sdk-gd/bin/.gdignore", "a"
|
||||||
|
).close()
|
||||||
|
open(
|
||||||
|
"release/temp/ADDON-Discord-SDK-Godot/addons/discord-sdk-gd/nodes/.gdignore", "a"
|
||||||
|
).close()
|
||||||
|
|
||||||
|
shutil.make_archive("release/ADDON-Discord-SDK-Godot", "zip", "release/temp/")
|
||||||
|
|
||||||
|
shutil.rmtree("release/temp/")
|
6
setup.py
6
setup.py
@@ -6,6 +6,12 @@ import os
|
|||||||
with zipfile.ZipFile("src/lib/discord_game_sdk.zip", "r") as zip_ref:
|
with zipfile.ZipFile("src/lib/discord_game_sdk.zip", "r") as zip_ref:
|
||||||
zip_ref.extractall("src/lib/discord_game_sdk/")
|
zip_ref.extractall("src/lib/discord_game_sdk/")
|
||||||
|
|
||||||
|
# Patch the SDK to actually build, since it's missing an include
|
||||||
|
with open("src/lib/discord_game_sdk/cpp/types.h", "r+") as f:
|
||||||
|
s = f.read();
|
||||||
|
f.seek(0);
|
||||||
|
f.write("#include <cstdint>\n" + s)
|
||||||
|
|
||||||
copy_tree("src/lib/discord_game_sdk/lib/", "src/lib/discord_game_sdk/bin/")
|
copy_tree("src/lib/discord_game_sdk/lib/", "src/lib/discord_game_sdk/bin/")
|
||||||
os.rename(
|
os.rename(
|
||||||
"src/lib/discord_game_sdk/bin/aarch64/discord_game_sdk.dylib",
|
"src/lib/discord_game_sdk/bin/aarch64/discord_game_sdk.dylib",
|
||||||
|
@@ -83,8 +83,12 @@ void discord_sdk::_bind_methods()
|
|||||||
ADD_SIGNAL(MethodInfo("activity_spectate", PropertyInfo(Variant::STRING, "spectate_secret")));
|
ADD_SIGNAL(MethodInfo("activity_spectate", PropertyInfo(Variant::STRING, "spectate_secret")));
|
||||||
ADD_SIGNAL(MethodInfo("activity_join_request", PropertyInfo(Variant::DICTIONARY, "user_requesting")));
|
ADD_SIGNAL(MethodInfo("activity_join_request", PropertyInfo(Variant::DICTIONARY, "user_requesting")));
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("relationships_init"));
|
||||||
|
ADD_SIGNAL(MethodInfo("updated_relationship", PropertyInfo(Variant::DICTIONARY, "relationship")));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("refresh"), &discord_sdk::refresh);
|
ClassDB::bind_method(D_METHOD("refresh"), &discord_sdk::refresh);
|
||||||
ClassDB::bind_method(D_METHOD("clear"), &discord_sdk::clear);
|
ClassDB::bind_method(D_METHOD("clear", "reset_values"), &discord_sdk::clear, DEFVAL(false));
|
||||||
|
ClassDB::bind_method(D_METHOD("unclear"), &discord_sdk::unclear);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("register_command", "command"), &discord_sdk::register_command);
|
ClassDB::bind_method(D_METHOD("register_command", "command"), &discord_sdk::register_command);
|
||||||
ClassDB::bind_method(D_METHOD("register_steam", "steam_id"), &discord_sdk::register_steam);
|
ClassDB::bind_method(D_METHOD("register_steam", "steam_id"), &discord_sdk::register_steam);
|
||||||
@@ -94,6 +98,7 @@ void discord_sdk::_bind_methods()
|
|||||||
ClassDB::bind_method(D_METHOD("accept_invite", "user_id"), &discord_sdk::accept_invite);
|
ClassDB::bind_method(D_METHOD("accept_invite", "user_id"), &discord_sdk::accept_invite);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_current_user"), &discord_sdk::get_current_user);
|
ClassDB::bind_method(D_METHOD("get_current_user"), &discord_sdk::get_current_user);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_all_relationships"), &discord_sdk::get_all_relationships);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_is_overlay_enabled"), &discord_sdk::get_is_overlay_enabled);
|
ClassDB::bind_method(D_METHOD("get_is_overlay_enabled"), &discord_sdk::get_is_overlay_enabled);
|
||||||
ClassDB::bind_method(D_METHOD("get_is_overlay_locked"), &discord_sdk::get_is_overlay_locked);
|
ClassDB::bind_method(D_METHOD("get_is_overlay_locked"), &discord_sdk::get_is_overlay_locked);
|
||||||
@@ -154,44 +159,44 @@ void discord_sdk::debug()
|
|||||||
void discord_sdk::set_app_id(int64_t value)
|
void discord_sdk::set_app_id(int64_t value)
|
||||||
{
|
{
|
||||||
app_id = value;
|
app_id = value;
|
||||||
result = discord::Core::Create(value, DiscordCreateFlags_NoRequireDiscord, &core); // after setting app_ID it initializes everything
|
if (app_id > 0)
|
||||||
|
|
||||||
if (result == discord::Result::Ok && app_id > 0)
|
|
||||||
{
|
{
|
||||||
// initialize currentuser stuff
|
result = discord::Core::Create(value, DiscordCreateFlags_NoRequireDiscord, &core); // after setting app_ID it initializes everything
|
||||||
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
|
||||||
{discord::User user{};
|
|
||||||
core->UserManager().GetCurrentUser(&user); });
|
|
||||||
// signals
|
|
||||||
core->ActivityManager().OnActivityJoin.Connect([](const char *secret)
|
|
||||||
{ discord_sdk::get_singleton()
|
|
||||||
->emit_signal("activity_join", secret); });
|
|
||||||
core->ActivityManager().OnActivitySpectate.Connect([](const char *secret)
|
|
||||||
{ discord_sdk::get_singleton()
|
|
||||||
->emit_signal("activity_spectate", secret); });
|
|
||||||
core->ActivityManager().OnActivityJoinRequest.Connect([this](discord::User const &user)
|
|
||||||
{ Dictionary user_requesting;
|
|
||||||
user_requesting["avatar"] = user.GetAvatar(); //can be empty when user has no avatar
|
|
||||||
user_requesting["is_bot"] = user.GetBot();
|
|
||||||
user_requesting["discriminator"] = user.GetDiscriminator();
|
|
||||||
user_requesting["id"] = user.GetId();
|
|
||||||
user_requesting["username"] = user.GetUsername();
|
|
||||||
if(String(user_requesting["avatar"]).is_empty())
|
|
||||||
user_requesting["avatar_url"] = String(std::string("https://cdn.discordapp.com/embed/avatars/" + std::to_string((user_requesting["discriminator"].INT % 5) - 1)+ ".png").c_str());
|
|
||||||
else
|
|
||||||
user_requesting["avatar_url"] = String(std::string("https://cdn.discordapp.com/avatars/" + std::to_string(user.GetId()) + "/" + user.GetAvatar() + ".png?size=512").c_str());//I don't know what the hell i did there but removing ?size=512 will crash the whole editor
|
|
||||||
user_requesting.make_read_only();
|
|
||||||
discord_sdk::get_singleton()
|
|
||||||
->emit_signal("activity_join_request",user_requesting); });
|
|
||||||
|
|
||||||
core->OverlayManager().OnToggle.Connect([](bool is_locked)
|
if (result == discord::Result::Ok)
|
||||||
{ discord_sdk::get_singleton()
|
{
|
||||||
->emit_signal("overlay_toggle", is_locked); });
|
// initialize currentuser stuff
|
||||||
|
core->UserManager().OnCurrentUserUpdate.Connect([]()
|
||||||
|
{discord::User user{};
|
||||||
|
core->UserManager().GetCurrentUser(&user); });
|
||||||
|
// signals
|
||||||
|
core->ActivityManager().OnActivityJoin.Connect([](const char *secret)
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("activity_join", secret); });
|
||||||
|
core->ActivityManager().OnActivitySpectate.Connect([](const char *secret)
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("activity_spectate", secret); });
|
||||||
|
core->ActivityManager().OnActivityJoinRequest.Connect([this](discord::User const &user)
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("activity_join_request", user2dict(user)); });
|
||||||
|
|
||||||
|
core->OverlayManager().OnToggle.Connect([](bool is_locked)
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("overlay_toggle", is_locked); });
|
||||||
|
core->RelationshipManager().OnRefresh.Connect([&]()
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("relationships_init"); });
|
||||||
|
core->RelationshipManager().OnRelationshipUpdate.Connect([&](discord::Relationship const &relationship)
|
||||||
|
{ discord_sdk::get_singleton()
|
||||||
|
->emit_signal("updated_relationship", relationship2dict(relationship)); });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int64_t discord_sdk::get_app_id()
|
int64_t discord_sdk::get_app_id()
|
||||||
{
|
{
|
||||||
return app_id;
|
if (app_id != 0)
|
||||||
|
return app_id;
|
||||||
|
return old_app_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void discord_sdk::set_state(String value)
|
void discord_sdk::set_state(String value)
|
||||||
@@ -225,34 +230,52 @@ void discord_sdk::refresh()
|
|||||||
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
UtilityFunctions::push_warning("Discord Activity couldn't be updated. It could be that Discord isn't running!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void discord_sdk::clear()
|
void discord_sdk::clear(bool reset_values = false)
|
||||||
{
|
{
|
||||||
if (result == discord::Result::Ok)
|
if (result == discord::Result::Ok)
|
||||||
{
|
{
|
||||||
app_id = 0;
|
if (reset_values)
|
||||||
state = "";
|
{
|
||||||
details = "";
|
old_app_id = 0;
|
||||||
large_image = "";
|
set_state("");
|
||||||
large_image_text = "";
|
set_details("");
|
||||||
small_image = "";
|
set_large_image("");
|
||||||
small_image_text = "";
|
set_large_image_text("");
|
||||||
start_timestamp = 0;
|
set_small_image("");
|
||||||
end_timestamp = 0;
|
set_small_image_text("");
|
||||||
party_id = "";
|
set_start_timestamp(0);
|
||||||
current_party_size = 0;
|
set_end_timestamp(0);
|
||||||
max_party_size = 0;
|
set_party_id("");
|
||||||
match_secret = "";
|
set_current_party_size(0);
|
||||||
join_secret = "";
|
set_max_party_size(0);
|
||||||
spectate_secret = "";
|
set_match_secret("");
|
||||||
instanced = false;
|
set_join_secret("");
|
||||||
is_public_party = false;
|
set_spectate_secret("");
|
||||||
is_overlay_locked = false;
|
set_instanced(false);
|
||||||
|
set_is_public_party(false);
|
||||||
|
set_is_overlay_locked(false);
|
||||||
|
core->ActivityManager().ClearActivity([](discord::Result result) {});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
old_app_id = app_id;
|
||||||
|
set_app_id(0);
|
||||||
delete core;
|
delete core;
|
||||||
core = nullptr;
|
core = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void discord_sdk::unclear()
|
||||||
|
{
|
||||||
|
if (old_app_id > 0)
|
||||||
|
{
|
||||||
|
set_app_id(old_app_id);
|
||||||
|
refresh();
|
||||||
|
old_app_id = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
UtilityFunctions::push_warning("Discord Activity couldn't be uncleared. Maybe it didn't get cleared before?");
|
||||||
|
}
|
||||||
|
|
||||||
void discord_sdk::set_large_image(String value)
|
void discord_sdk::set_large_image(String value)
|
||||||
{
|
{
|
||||||
large_image = value;
|
large_image = value;
|
||||||
@@ -455,20 +478,40 @@ Dictionary discord_sdk::get_current_user()
|
|||||||
{
|
{
|
||||||
discord::User user{};
|
discord::User user{};
|
||||||
core->UserManager().GetCurrentUser(&user);
|
core->UserManager().GetCurrentUser(&user);
|
||||||
userdict["avatar"] = user.GetAvatar(); // can be empty when user has no avatar
|
return user2dict(user);
|
||||||
userdict["is_bot"] = user.GetBot();
|
|
||||||
userdict["discriminator"] = user.GetDiscriminator();
|
|
||||||
userdict["id"] = user.GetId();
|
|
||||||
userdict["username"] = user.GetUsername();
|
|
||||||
if (String(userdict["avatar"]).is_empty())
|
|
||||||
userdict["avatar_url"] = String(std::string("https://cdn.discordapp.com/embed/avatars/" + std::to_string((userdict["discriminator"].INT % 5) - 1) + ".png").c_str());
|
|
||||||
else
|
|
||||||
userdict["avatar_url"] = String(std::string("https://cdn.discordapp.com/avatars/" + std::to_string(user.GetId()) + "/" + user.GetAvatar() + ".png?size=512").c_str());
|
|
||||||
userdict.make_read_only();
|
|
||||||
}
|
}
|
||||||
return userdict;
|
return userdict;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dictionary discord_sdk::get_relationship(int64_t user_id)
|
||||||
|
{
|
||||||
|
if (result == discord::Result::Ok && app_id > 0)
|
||||||
|
{
|
||||||
|
discord::Relationship relationship{};
|
||||||
|
core->RelationshipManager().Get(user_id, &relationship);
|
||||||
|
return relationship2dict(relationship);
|
||||||
|
}
|
||||||
|
Dictionary dict;
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
|
||||||
|
Array discord_sdk::get_all_relationships()
|
||||||
|
{
|
||||||
|
Array all_relationships;
|
||||||
|
core->RelationshipManager().Filter(
|
||||||
|
[](discord::Relationship const &relationship) -> bool
|
||||||
|
{ return true; });
|
||||||
|
int32_t friendcount{0};
|
||||||
|
core->RelationshipManager().Count(&friendcount);
|
||||||
|
for (int i = 0; i < friendcount; i++)
|
||||||
|
{
|
||||||
|
discord::Relationship relationship{};
|
||||||
|
core->RelationshipManager().GetAt(i, &relationship);
|
||||||
|
all_relationships.append(relationship2dict(relationship));
|
||||||
|
}
|
||||||
|
return all_relationships;
|
||||||
|
}
|
||||||
|
|
||||||
bool discord_sdk::get_is_discord_working()
|
bool discord_sdk::get_is_discord_working()
|
||||||
{
|
{
|
||||||
return result == discord::Result::Ok && app_id > 0;
|
return result == discord::Result::Ok && app_id > 0;
|
||||||
@@ -478,3 +521,91 @@ int discord_sdk::get_result_int()
|
|||||||
{
|
{
|
||||||
return static_cast<int>(result);
|
return static_cast<int>(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dictionary discord_sdk::user2dict(discord::User user)
|
||||||
|
{
|
||||||
|
Dictionary userdict;
|
||||||
|
userdict["avatar"] = user.GetAvatar(); // can be empty when user has no avatar
|
||||||
|
userdict["is_bot"] = user.GetBot();
|
||||||
|
userdict["discriminator"] = user.GetDiscriminator();
|
||||||
|
userdict["id"] = user.GetId();
|
||||||
|
userdict["username"] = user.GetUsername();
|
||||||
|
if (String(userdict["avatar"]).is_empty())
|
||||||
|
userdict["avatar_url"] = String(std::string("https://cdn.discordapp.com/embed/avatars/" + std::to_string((userdict["discriminator"].INT % 5) - 1) + ".png").c_str());
|
||||||
|
else
|
||||||
|
userdict["avatar_url"] = String(std::string("https://cdn.discordapp.com/avatars/" + std::to_string(user.GetId()) + "/" + user.GetAvatar() + ".png").c_str());
|
||||||
|
userdict.make_read_only();
|
||||||
|
return userdict;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dictionary discord_sdk::relationship2dict(discord::Relationship relationship)
|
||||||
|
{
|
||||||
|
Dictionary dict_relationship;
|
||||||
|
Dictionary presence;
|
||||||
|
Dictionary presence_activity;
|
||||||
|
switch (static_cast<int>(relationship.GetPresence().GetStatus()))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
presence["status"] = "Offline";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
presence["status"] = "Online";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
presence["status"] = "Idle";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
presence["status"] = "DoNotDisturb";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
presence["status"] = "NotAvailable";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
presence_activity["application_id"] = relationship.GetPresence().GetActivity().GetApplicationId();
|
||||||
|
presence_activity["name"] = relationship.GetPresence().GetActivity().GetName();
|
||||||
|
presence_activity["state"] = relationship.GetPresence().GetActivity().GetState();
|
||||||
|
presence_activity["details"] = relationship.GetPresence().GetActivity().GetDetails();
|
||||||
|
presence_activity["large_image"] = relationship.GetPresence().GetActivity().GetAssets().GetLargeImage();
|
||||||
|
presence_activity["large_text"] = relationship.GetPresence().GetActivity().GetAssets().GetLargeText();
|
||||||
|
presence_activity["small_image"] = relationship.GetPresence().GetActivity().GetAssets().GetSmallImage();
|
||||||
|
presence_activity["small_text"] = relationship.GetPresence().GetActivity().GetAssets().GetSmallText();
|
||||||
|
presence_activity["timestamps_start"] = relationship.GetPresence().GetActivity().GetTimestamps().GetStart();
|
||||||
|
presence_activity["timestamps_end"] = relationship.GetPresence().GetActivity().GetTimestamps().GetEnd();
|
||||||
|
presence_activity["instance"] = relationship.GetPresence().GetActivity().GetInstance();
|
||||||
|
presence_activity["party_id"] = relationship.GetPresence().GetActivity().GetParty().GetId();
|
||||||
|
presence_activity["current_party_size"] = relationship.GetPresence().GetActivity().GetParty().GetSize().GetCurrentSize();
|
||||||
|
presence_activity["max_party_size"] = relationship.GetPresence().GetActivity().GetParty().GetSize().GetMaxSize();
|
||||||
|
presence_activity["join_secret"] = relationship.GetPresence().GetActivity().GetSecrets().GetJoin();
|
||||||
|
presence_activity["spectate_secret"] = relationship.GetPresence().GetActivity().GetSecrets().GetSpectate();
|
||||||
|
presence_activity["match_secret"] = relationship.GetPresence().GetActivity().GetSecrets().GetMatch();
|
||||||
|
presence["activity"] = presence_activity;
|
||||||
|
presence.make_read_only();
|
||||||
|
switch (relationship.GetType())
|
||||||
|
{
|
||||||
|
case discord::RelationshipType::None:
|
||||||
|
dict_relationship["type"] = "None";
|
||||||
|
break;
|
||||||
|
case discord::RelationshipType::Friend:
|
||||||
|
dict_relationship["type"] = "Friend";
|
||||||
|
break;
|
||||||
|
case discord::RelationshipType::Blocked:
|
||||||
|
dict_relationship["type"] = "Blocked";
|
||||||
|
break;
|
||||||
|
case discord::RelationshipType::PendingIncoming:
|
||||||
|
dict_relationship["type"] = "PendingIncoming";
|
||||||
|
break;
|
||||||
|
case discord::RelationshipType::PendingOutgoing:
|
||||||
|
dict_relationship["type"] = "PendingOutgoing";
|
||||||
|
break;
|
||||||
|
case discord::RelationshipType::Implicit:
|
||||||
|
dict_relationship["type"] = "Implicit";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dict_relationship["type"] = "NotAvailable";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
dict_relationship["user"] = user2dict(relationship.GetUser());
|
||||||
|
dict_relationship["presence"] = presence;
|
||||||
|
dict_relationship.make_read_only();
|
||||||
|
return dict_relationship;
|
||||||
|
}
|
@@ -17,12 +17,24 @@ class discord_sdk : public RefCounted
|
|||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
private:
|
public:
|
||||||
int64_t app_id;
|
static discord_sdk *
|
||||||
|
get_singleton();
|
||||||
|
|
||||||
|
discord_sdk();
|
||||||
|
~discord_sdk();
|
||||||
|
|
||||||
|
// INTERBNAL
|
||||||
|
int64_t old_app_id;
|
||||||
|
Dictionary relationship2dict(discord::Relationship relationship);
|
||||||
|
Dictionary user2dict(discord::User user);
|
||||||
|
///
|
||||||
|
|
||||||
|
int64_t app_id = 0;
|
||||||
|
|
||||||
String state;
|
String state;
|
||||||
String details;
|
String details;
|
||||||
// just want to make pr
|
|
||||||
String large_image;
|
String large_image;
|
||||||
String large_image_text;
|
String large_image_text;
|
||||||
String small_image;
|
String small_image;
|
||||||
@@ -44,18 +56,12 @@ private:
|
|||||||
|
|
||||||
bool is_overlay_locked;
|
bool is_overlay_locked;
|
||||||
|
|
||||||
public:
|
|
||||||
static discord_sdk *
|
|
||||||
get_singleton();
|
|
||||||
|
|
||||||
discord_sdk();
|
|
||||||
~discord_sdk();
|
|
||||||
|
|
||||||
void debug();
|
void debug();
|
||||||
void coreupdate();
|
void coreupdate();
|
||||||
void refresh();
|
void refresh();
|
||||||
void clear();
|
void clear(bool reset_values);
|
||||||
|
|
||||||
|
void unclear();
|
||||||
int64_t get_app_id();
|
int64_t get_app_id();
|
||||||
void set_app_id(int64_t value);
|
void set_app_id(int64_t value);
|
||||||
String get_state();
|
String get_state();
|
||||||
@@ -112,7 +118,8 @@ public:
|
|||||||
void register_steam(int32_t value);
|
void register_steam(int32_t value);
|
||||||
|
|
||||||
Dictionary get_current_user();
|
Dictionary get_current_user();
|
||||||
void set_current_user(Dictionary value);
|
Dictionary get_relationship(int64_t user_id);
|
||||||
|
Array get_all_relationships();
|
||||||
|
|
||||||
bool get_is_discord_working();
|
bool get_is_discord_working();
|
||||||
int get_result_int();
|
int get_result_int();
|
||||||
|
Submodule src/lib/godot-cpp updated: feaba551b5...d627942b64
@@ -11,7 +11,7 @@ using namespace godot;
|
|||||||
|
|
||||||
static discord_sdk *discordsdk;
|
static discord_sdk *discordsdk;
|
||||||
|
|
||||||
void gdextension_initialize(ModuleInitializationLevel p_level)
|
void initialize_discordsdk_module(ModuleInitializationLevel p_level)
|
||||||
{
|
{
|
||||||
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
||||||
{
|
{
|
||||||
@@ -21,7 +21,7 @@ void gdextension_initialize(ModuleInitializationLevel p_level)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void gdextension_terminate(ModuleInitializationLevel p_level)
|
void uninitialize_discordsdk_module(ModuleInitializationLevel p_level)
|
||||||
{
|
{
|
||||||
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE)
|
||||||
{
|
{
|
||||||
@@ -32,12 +32,12 @@ void gdextension_terminate(ModuleInitializationLevel p_level)
|
|||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
GDExtensionBool GDE_EXPORT discordsdkgd_library_init(const GDExtensionInterface *p_interface, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization)
|
GDExtensionBool GDE_EXPORT discordsdkgd_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization)
|
||||||
{
|
{
|
||||||
godot::GDExtensionBinding::InitObject init_obj(p_interface, p_library, r_initialization);
|
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
|
||||||
|
|
||||||
init_obj.register_initializer(gdextension_initialize);
|
init_obj.register_initializer(initialize_discordsdk_module);
|
||||||
init_obj.register_terminator(gdextension_terminate);
|
init_obj.register_terminator(uninitialize_discordsdk_module);
|
||||||
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
|
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
|
||||||
|
|
||||||
return init_obj.init();
|
return init_obj.init();
|
||||||
|
Reference in New Issue
Block a user