Skip to content

Commit

Permalink
Introduce banner support
Browse files Browse the repository at this point in the history
  • Loading branch information
Reco1I committed Dec 16, 2024
1 parent 75801eb commit 911fe01
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 0 deletions.
88 changes: 88 additions & 0 deletions src/com/reco1l/osu/BannerManager.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package com.reco1l.osu

import android.content.Intent
import android.net.Uri
import android.util.Log
import com.reco1l.andengine.Anchor
import com.reco1l.andengine.sprite.ExtendedSprite
import com.reco1l.framework.net.JsonObjectRequest
import com.reco1l.framework.net.WebRequest
import com.reco1l.toolkt.data.writeToFile
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 BannerManager {

@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) {
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)

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

}
}

}
3 changes: 3 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.BannerManager;
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,8 @@ public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX
scene.registerTouchArea(music_next);
scene.setTouchAreaBindingEnabled(true);

BannerManager.loadBanner(scene);

progressBar = new LinearSongProgress(null, 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 911fe01

Please sign in to comment.