diff --git a/fortnite/image.go b/fortnite/image.go index e1a9a7f..570effc 100644 --- a/fortnite/image.go +++ b/fortnite/image.go @@ -16,7 +16,7 @@ import ( var ( PlaylistImages = map[string][]byte{ "Playlist_DefaultSolo": {}, - // "Playlist_DefaultDuo": {}, + "Playlist_DefaultDuo": {}, // "Playlist_DefaultSquad": {}, } ) @@ -68,4 +68,53 @@ func GenerateSoloImage() { } PlaylistImages["Playlist_DefaultSolo"] = bytes.Bytes() +} + +func GenerateDuoImage() { + background := *storage.Asset("background.png") + + itemFound := Cosmetics.GetRandomItemByType("AthenaCharacter") + for itemFound.Images.Featured == "" { + itemFound = Cosmetics.GetRandomItemByType("AthenaCharacter") + } + aid.Print(itemFound.Images.Featured) + + res, err := http.Get(itemFound.Images.Featured) + if err != nil { + panic(err) + } + defer res.Body.Close() + + data, err := io.ReadAll(res.Body) + if err != nil { + panic(err) + } + + bg, _, err := image.Decode(bytes.NewReader(background)) + if err != nil { + panic(err) + } + + soloPlayer, _, err := image.Decode(bytes.NewReader(data)) + if err != nil { + panic(err) + } + + m := image.NewRGBA(bg.Bounds()) + draw.Draw(m, m.Bounds(), bg, image.Point{0, 0}, draw.Src) + + resized := resize.Resize(0, uint(float64(m.Bounds().Dy()) * 1.4), soloPlayer, resize.Lanczos3) + centre := image.Point{ + m.Bounds().Dx()/2 - resized.Bounds().Dx()/2, + (m.Bounds().Dy()/2 - resized.Bounds().Dy()/2) + 200, + } + draw.Draw(m, resized.Bounds().Add(centre), resized, image.Point{0, 0}, draw.Over) + + var bytes bytes.Buffer + err = png.Encode(&bytes, m) + if err != nil { + panic(err) + } + + PlaylistImages["Playlist_DefaultDuo"] = bytes.Bytes() } \ No newline at end of file diff --git a/handlers/discovery.go b/handlers/discovery.go index 8258d51..436faa4 100644 --- a/handlers/discovery.go +++ b/handlers/discovery.go @@ -1,6 +1,7 @@ package handlers import ( + "math/rand" "strconv" "github.com/ectrc/snow/aid" @@ -75,7 +76,7 @@ func createPlaylist(mnemonic string, image string) aid.JSON { func PostDiscovery(c *fiber.Ctx) error { results := []aid.JSON{} for playlist := range fortnite.PlaylistImages { - results = append(results, createPlaylist(playlist, "http://" + aid.Config.API.Host + aid.Config.API.Port + "/snow/image/" + playlist + ".png")) + results = append(results, createPlaylist(playlist, "http://" + aid.Config.API.Host + aid.Config.API.Port + "/snow/image/" + playlist + ".png?cache="+strconv.Itoa(rand.Intn(9999)))) } results = append(results, createPlaylist("Playlist_DefaultSolo", "http://bucket.retrac.site/55737fa15677cd57fab9e7f4499d62f89cfde320.png")) @@ -156,7 +157,7 @@ func GetContentPages(c *fiber.Ctx) error { playlists := []aid.JSON{} for playlist := range fortnite.PlaylistImages { playlists = append(playlists, aid.JSON{ - "image": "http://" + aid.Config.API.Host + aid.Config.API.Port + "/snow/image/" + playlist + ".png", + "image": "http://" + aid.Config.API.Host + aid.Config.API.Port + "/snow/image/" + playlist + ".png?cache="+strconv.Itoa(rand.Intn(9999)), "playlist_name": playlist, "hidden": false, }) diff --git a/handlers/profile.go b/handlers/profile.go index 76a34b8..c3dbc88 100644 --- a/handlers/profile.go +++ b/handlers/profile.go @@ -35,6 +35,7 @@ func PostProfileAction(c *fiber.Ctx) error { profile := person.GetProfileFromType(c.Query("profileId")) if profile == nil { + aid.Print(c.Query("profileId"), "not found") return c.Status(404).JSON(aid.ErrorBadRequest("No Profile Found")) } defer profile.ClearProfileChanges() diff --git a/person/person.go b/person/person.go index cf7496a..c1d9ae7 100644 --- a/person/person.go +++ b/person/person.go @@ -14,6 +14,7 @@ type Person struct { CommonPublicProfile *Profile Profile0Profile *Profile CollectionsProfile *Profile + CreativeProfile *Profile } type Option struct { @@ -31,6 +32,7 @@ func NewPerson() *Person { CommonPublicProfile: NewProfile("common_public"), Profile0Profile: NewProfile("profile0"), CollectionsProfile: NewProfile("collections"), + CreativeProfile: NewProfile("creative"), } } @@ -76,6 +78,7 @@ func findHelper(databasePerson *storage.DB_Person) *Person { commonPublicProfile := NewProfile("common_public") profile0 := NewProfile("profile0") collectionsProfile := NewProfile("collections") + creativeProfile := NewProfile("creative") for _, profile := range databasePerson.Profiles { if profile.Type == "athena" { @@ -102,6 +105,11 @@ func findHelper(databasePerson *storage.DB_Person) *Person { collectionsProfile.ID = profile.ID collectionsProfile = FromDatabaseProfile(&profile) } + + if profile.Type == "creative" { + creativeProfile.ID = profile.ID + creativeProfile = FromDatabaseProfile(&profile) + } } person := &Person{ @@ -113,6 +121,7 @@ func findHelper(databasePerson *storage.DB_Person) *Person { CommonPublicProfile: commonPublicProfile, Profile0Profile: profile0, CollectionsProfile: collectionsProfile, + CreativeProfile: creativeProfile, } cache.SavePerson(person) @@ -155,6 +164,8 @@ func (p *Person) GetProfileFromType(profileType string) *Profile { return p.Profile0Profile case "collections": return p.CollectionsProfile + case "creative": + return p.CreativeProfile } return nil @@ -179,6 +190,7 @@ func (p *Person) ToDatabase() *storage.DB_Person { "common_public": p.CommonPublicProfile, "profile0": p.Profile0Profile, "collections": p.CollectionsProfile, + "creative": p.CreativeProfile, } for profileType, profile := range profilesToConvert { @@ -247,5 +259,6 @@ func (p *Person) Snapshot() *PersonSnapshot { CommonPublicProfile: *p.CommonPublicProfile.Snapshot(), Profile0Profile: *p.Profile0Profile.Snapshot(), CollectionsProfile: *p.CollectionsProfile.Snapshot(), + CreativeProfile: *p.CreativeProfile.Snapshot(), } } \ No newline at end of file diff --git a/person/snapshot.go b/person/snapshot.go index 8ce29fc..fe174bc 100644 --- a/person/snapshot.go +++ b/person/snapshot.go @@ -8,6 +8,7 @@ type PersonSnapshot struct { CommonPublicProfile ProfileSnapshot Profile0Profile ProfileSnapshot CollectionsProfile ProfileSnapshot + CreativeProfile ProfileSnapshot } type ProfileSnapshot struct {