Skip to content

Commit

Permalink
Merge pull request #469 from Reco1I/banner
Browse files Browse the repository at this point in the history
Implement banners
  • Loading branch information
Rian8337 authored Dec 16, 2024
2 parents e757321 + cae99af commit 28358a0
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
90 changes: 90 additions & 0 deletions src/com/reco1l/osu/BannerLoader.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package com.reco1l.osu

import android.content.Intent
import android.net.Uri
import android.util.Log
import com.reco1l.framework.net.JsonObjectRequest
import com.reco1l.framework.net.WebRequest
import com.reco1l.toolkt.data.writeToFile
import org.anddev.andengine.entity.modifier.AlphaModifier
import org.anddev.andengine.entity.modifier.ScaleModifier
import org.anddev.andengine.entity.scene.Scene
import org.anddev.andengine.entity.sprite.Sprite
import org.anddev.andengine.input.touch.TouchEvent
import ru.nsu.ccfit.zuev.osu.Config
import ru.nsu.ccfit.zuev.osu.GlobalManager
import ru.nsu.ccfit.zuev.osu.ResourceManager
import ru.nsu.ccfit.zuev.osu.online.OnlineManager
import java.io.File

object BannerLoader {

@JvmStatic
fun loadBanner(scene: Scene) {

async {
val bannerFile = File(Config.getCachePath(), "banner.png")
if (bannerFile.exists()) {
bannerFile.delete()
}

var bannerUrl = ""

try {
JsonObjectRequest(OnlineManager.endpoint + "game/banner.php").use { request ->

val response = request.execute().json
val imageLink = response.getString("ImageLink")

bannerUrl = response.getString("Url")

if (imageLink.isNotBlank()) {
WebRequest(imageLink).use { imageRequest ->
bannerFile.createNewFile()
imageRequest.execute().response.body!!.byteStream().writeToFile(bannerFile)
}
}
}

} catch (e: Exception) {
bannerFile.delete()
Log.e("BannerManager", "Failed to get banner while requesting server.", e)
}

if (bannerFile.exists()) {
ResourceManager.getInstance().loadHighQualityFile("banner", bannerFile)

val bannerSprite = object : Sprite(0f, 0f, ResourceManager.getInstance().getTexture("banner")) {

override fun onAreaTouched(event: TouchEvent, localX: Float, localY: Float): Boolean {

if (event.isActionDown) {
clearEntityModifiers()
registerEntityModifier(ScaleModifier(0.1f, scaleX, 0.95f))
}

if (event.isActionUp || event.isActionCancel || event.isActionOutside) {
clearEntityModifiers()
registerEntityModifier(ScaleModifier(0.1f, scaleX, 1f))

if (event.isActionUp && bannerUrl.isNotBlank()) {
GlobalManager.getInstance().mainActivity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(bannerUrl)))
}
}

return true
}
}
bannerSprite.setScaleCenter(bannerSprite.width / 2f, bannerSprite.height / 2f)
bannerSprite.setPosition(Config.getRES_WIDTH() - bannerSprite.width - 10f, Config.getRES_HEIGHT() - bannerSprite.height - 10f)
bannerSprite.alpha = 0f
bannerSprite.registerEntityModifier(AlphaModifier(0.2f, 0f, 1f))

scene.attachChild(bannerSprite)
scene.registerTouchArea(bannerSprite)
}

}
}

}
5 changes: 5 additions & 0 deletions src/ru/nsu/ccfit/zuev/osu/MainScene.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.reco1l.andengine.Anchor;
import com.reco1l.andengine.shape.RoundedBox;
import com.reco1l.andengine.sprite.ExtendedSprite;
import com.reco1l.osu.BannerLoader;
import com.reco1l.osu.data.BeatmapInfo;
import com.reco1l.osu.Execution;
import com.reco1l.osu.ui.entity.MainMenu;
Expand Down Expand Up @@ -472,6 +473,10 @@ public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX
scene.registerTouchArea(music_next);
scene.setTouchAreaBindingEnabled(true);

if (Config.isStayOnline()) {
BannerLoader.loadBanner(scene);
}

progressBar = new LinearSongProgress(scene, 0, 0, new PointF(Utils.toRes(Config.getRES_WIDTH() - 320), Utils.toRes(100)));
progressBar.setProgressRectColor(new RGBColor(0.9f, 0.9f, 0.9f));
progressBar.setProgressRectAlpha(0.8f);
Expand Down

0 comments on commit 28358a0

Please sign in to comment.