Created
September 20, 2022 08:44
-
-
Save kos0ng/95092381869c0a4d1d1e5e32616434ed to your computer and use it in GitHub Desktop.
Smali Patch intechfest game #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.class public Lcom/intechfest/game/GameView; | |
.super Landroid/view/View; | |
.source "GameView.java" | |
# instance fields | |
.field private m_CirclePaint:Landroid/graphics/Paint; | |
.field private m_FlagTextPaint:Landroid/graphics/Paint; | |
.field private m_ScoreTextPaint:Landroid/graphics/Paint; | |
.field private m_circlePos:[F | |
.field private m_circleRad:I | |
.field private m_score:I | |
# direct methods | |
.method static constructor <clinit>()V | |
.registers 1 | |
const-string v0, "game" | |
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V | |
return-void | |
.end method | |
.method public constructor <init>(Landroid/content/Context;)V | |
.registers 6 | |
invoke-direct {p0, p1}, Landroid/view/View;-><init>(Landroid/content/Context;)V | |
const/4 v0, 0x2 | |
new-array v0, v0, [F | |
fill-array-data v0, :array_66 | |
iput-object v0, p0, Lcom/intechfest/game/GameView;->m_circlePos:[F | |
const/16 v0, 0x19 | |
invoke-virtual {p0, v0}, Lcom/intechfest/game/GameView;->scaleSize(I)I | |
move-result v0 | |
iput v0, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
const/4 v0, 0x0 | |
iput v0, p0, Lcom/intechfest/game/GameView;->m_score:I | |
new-instance v0, Landroid/graphics/Paint; | |
invoke-direct {v0}, Landroid/graphics/Paint;-><init>()V | |
iput-object v0, p0, Lcom/intechfest/game/GameView;->m_CirclePaint:Landroid/graphics/Paint; | |
const v1, -0xff0100 | |
invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setColor(I)V | |
iget-object v0, p0, Lcom/intechfest/game/GameView;->m_CirclePaint:Landroid/graphics/Paint; | |
sget-object v1, Landroid/graphics/Paint$Style;->FILL:Landroid/graphics/Paint$Style; | |
invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setStyle(Landroid/graphics/Paint$Style;)V | |
new-instance v0, Landroid/graphics/Paint; | |
invoke-direct {v0}, Landroid/graphics/Paint;-><init>()V | |
iput-object v0, p0, Lcom/intechfest/game/GameView;->m_ScoreTextPaint:Landroid/graphics/Paint; | |
const/high16 v1, -0x10000 | |
invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setColor(I)V | |
iget-object v0, p0, Lcom/intechfest/game/GameView;->m_ScoreTextPaint:Landroid/graphics/Paint; | |
const/16 v2, 0x14 | |
invoke-virtual {p0, v2}, Lcom/intechfest/game/GameView;->scaleSize(I)I | |
move-result v3 | |
int-to-float v3, v3 | |
invoke-virtual {v0, v3}, Landroid/graphics/Paint;->setTextSize(F)V | |
iget-object v0, p0, Lcom/intechfest/game/GameView;->m_ScoreTextPaint:Landroid/graphics/Paint; | |
sget-object v3, Landroid/graphics/Paint$Align;->CENTER:Landroid/graphics/Paint$Align; | |
invoke-virtual {v0, v3}, Landroid/graphics/Paint;->setTextAlign(Landroid/graphics/Paint$Align;)V | |
new-instance v0, Landroid/graphics/Paint; | |
invoke-direct {v0}, Landroid/graphics/Paint;-><init>()V | |
iput-object v0, p0, Lcom/intechfest/game/GameView;->m_FlagTextPaint:Landroid/graphics/Paint; | |
invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setColor(I)V | |
iget-object v0, p0, Lcom/intechfest/game/GameView;->m_FlagTextPaint:Landroid/graphics/Paint; | |
invoke-virtual {p0, v2}, Lcom/intechfest/game/GameView;->scaleSize(I)I | |
move-result v1 | |
int-to-float v1, v1 | |
invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setTextSize(F)V | |
iget-object v0, p0, Lcom/intechfest/game/GameView;->m_FlagTextPaint:Landroid/graphics/Paint; | |
sget-object v1, Landroid/graphics/Paint$Align;->LEFT:Landroid/graphics/Paint$Align; | |
invoke-virtual {v0, v1}, Landroid/graphics/Paint;->setTextAlign(Landroid/graphics/Paint$Align;)V | |
return-void | |
nop | |
:array_66 | |
.array-data 4 | |
0x0 | |
0x0 | |
.end array-data | |
.end method | |
.method public static native getFlag()Ljava/lang/String; | |
.end method | |
.method public static native submitScore()V | |
.end method | |
# virtual methods | |
.method drawCircle(Landroid/graphics/Canvas;)V | |
.registers 8 | |
invoke-static {}, Ljava/lang/Math;->random()D | |
move-result-wide v0 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getWidth()I | |
move-result v2 | |
int-to-double v2, v2 | |
mul-double v0, v0, v2 | |
double-to-int v0, v0 | |
invoke-static {}, Ljava/lang/Math;->random()D | |
move-result-wide v1 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getHeight()I | |
move-result v3 | |
int-to-double v3, v3 | |
mul-double v1, v1, v3 | |
double-to-int v1, v1 | |
iget v2, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
sub-int v3, v0, v2 | |
if-gez v3, :cond_20 | |
iget v0, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
:cond_20 | |
add-int/2addr v2, v0 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getWidth()I | |
move-result v3 | |
if-le v2, v3, :cond_2f | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getWidth()I | |
move-result v2 | |
iget v3, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
sub-int v0, v2, v3 | |
:cond_2f | |
iget v2, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
sub-int v3, v1, v2 | |
if-gez v3, :cond_37 | |
iget v1, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
:cond_37 | |
add-int/2addr v2, v1 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getHeight()I | |
move-result v3 | |
if-le v2, v3, :cond_46 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getHeight()I | |
move-result v2 | |
iget v3, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
sub-int v1, v2, v3 | |
:cond_46 | |
iget-object v2, p0, Lcom/intechfest/game/GameView;->m_circlePos:[F | |
const/4 v3, 0x0 | |
int-to-float v4, v0 | |
aput v4, v2, v3 | |
const/4 v3, 0x1 | |
int-to-float v4, v1 | |
aput v4, v2, v3 | |
int-to-float v2, v0 | |
int-to-float v3, v1 | |
iget v4, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
int-to-float v4, v4 | |
iget-object v5, p0, Lcom/intechfest/game/GameView;->m_CirclePaint:Landroid/graphics/Paint; | |
invoke-virtual {p1, v2, v3, v4, v5}, Landroid/graphics/Canvas;->drawCircle(FFFLandroid/graphics/Paint;)V | |
return-void | |
.end method | |
.method protected onDraw(Landroid/graphics/Canvas;)V | |
.registers 7 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, "" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
iget v1, p0, Lcom/intechfest/game/GameView;->m_score:I | |
const/16 v2, 0x2 | |
rsub-int/lit8 v1, v1, 0xa | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
const-string v1, " point(s) left to unlock the flag!" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getWidth()I | |
move-result v1 | |
div-int/lit8 v1, v1, 0x2 | |
int-to-float v1, v1 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getHeight()I | |
move-result v3 | |
div-int/lit8 v3, v3, 0x2 | |
int-to-float v3, v3 | |
iget-object v4, p0, Lcom/intechfest/game/GameView;->m_ScoreTextPaint:Landroid/graphics/Paint; | |
invoke-virtual {p1, v0, v1, v3, v4}, Landroid/graphics/Canvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V | |
invoke-virtual {p0, p1}, Lcom/intechfest/game/GameView;->drawCircle(Landroid/graphics/Canvas;)V | |
iget v0, p0, Lcom/intechfest/game/GameView;->m_score:I | |
const/16 v1, 0x2 | |
if-lt v0, v1, :cond_6d | |
if-ne v0, v2, :cond_6a | |
const/4 v0, 0x0 | |
:try_start_3b | |
invoke-static {}, Lcom/intechfest/game/GameView;->getFlag()Ljava/lang/String; | |
move-result-object v1 | |
:try_end_3f | |
.catch Ljava/lang/Exception; {:try_start_3b .. :try_end_3f} :catch_41 | |
move-object v0, v1 | |
goto :goto_45 | |
:catch_41 | |
move-exception v1 | |
invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V | |
:goto_45 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getWidth()I | |
move-result v1 | |
int-to-float v1, v1 | |
iget-object v2, p0, Lcom/intechfest/game/GameView;->m_FlagTextPaint:Landroid/graphics/Paint; | |
invoke-virtual {v2, v0}, Landroid/graphics/Paint;->measureText(Ljava/lang/String;)F | |
move-result v2 | |
const v3, 0x3e4ccccd # 0.2f | |
mul-float v2, v2, v3 | |
sub-float/2addr v1, v2 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getHeight()I | |
move-result v2 | |
div-int/lit8 v2, v2, 0x2 | |
const/16 v3, 0x32 | |
invoke-virtual {p0, v3}, Lcom/intechfest/game/GameView;->scaleSize(I)I | |
move-result v3 | |
add-int/2addr v2, v3 | |
int-to-float v2, v2 | |
iget-object v3, p0, Lcom/intechfest/game/GameView;->m_FlagTextPaint:Landroid/graphics/Paint; | |
invoke-virtual {p1, v0, v1, v2, v3}, Landroid/graphics/Canvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V | |
goto :goto_6d | |
:cond_6a | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->invalidate()V | |
:cond_6d | |
:goto_6d | |
return-void | |
.end method | |
.method public onTouchEvent(Landroid/view/MotionEvent;)Z | |
.registers 9 | |
iget v0, p0, Lcom/intechfest/game/GameView;->m_score:I | |
const/4 v1, 0x0 | |
const/16 v2, 0xa | |
if-lt v0, v2, :cond_8 | |
return v1 | |
:cond_8 | |
invoke-virtual {p1}, Landroid/view/MotionEvent;->getX()F | |
move-result v0 | |
float-to-int v0, v0 | |
invoke-virtual {p1}, Landroid/view/MotionEvent;->getY()F | |
move-result v2 | |
float-to-int v2, v2 | |
int-to-float v3, v0 | |
iget-object v4, p0, Lcom/intechfest/game/GameView;->m_circlePos:[F | |
aget v5, v4, v1 | |
sub-float/2addr v3, v5 | |
int-to-float v5, v0 | |
aget v1, v4, v1 | |
sub-float/2addr v5, v1 | |
mul-float v3, v3, v5 | |
int-to-float v1, v2 | |
const/4 v5, 0x1 | |
aget v6, v4, v5 | |
sub-float/2addr v1, v6 | |
int-to-float v6, v2 | |
aget v4, v4, v5 | |
sub-float/2addr v6, v4 | |
mul-float v1, v1, v6 | |
add-float/2addr v3, v1 | |
iget v1, p0, Lcom/intechfest/game/GameView;->m_circleRad:I | |
mul-int v1, v1, v1 | |
int-to-float v1, v1 | |
cmpg-float v1, v3, v1 | |
if-gez v1, :cond_43 | |
iget v1, p0, Lcom/intechfest/game/GameView;->m_score:I | |
add-int/2addr v1, v5 | |
iput v1, p0, Lcom/intechfest/game/GameView;->m_score:I | |
:try_start_38 | |
invoke-static {}, Lcom/intechfest/game/GameView;->submitScore()V | |
invoke-static {}, Lcom/intechfest/game/GameView;->submitScore()V | |
invoke-static {}, Lcom/intechfest/game/GameView;->submitScore()V | |
invoke-static {}, Lcom/intechfest/game/GameView;->submitScore()V | |
invoke-static {}, Lcom/intechfest/game/GameView;->submitScore()V | |
:try_end_3b | |
.catch Ljava/lang/Exception; {:try_start_38 .. :try_end_3b} :catch_3c | |
goto :goto_40 | |
:catch_3c | |
move-exception v1 | |
invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V | |
:goto_40 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->invalidate()V | |
:cond_43 | |
invoke-super {p0, p1}, Landroid/view/View;->onTouchEvent(Landroid/view/MotionEvent;)Z | |
move-result v1 | |
return v1 | |
.end method | |
.method scaleSize(I)I | |
.registers 4 | |
int-to-float v0, p1 | |
invoke-virtual {p0}, Lcom/intechfest/game/GameView;->getResources()Landroid/content/res/Resources; | |
move-result-object v1 | |
invoke-virtual {v1}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; | |
move-result-object v1 | |
iget v1, v1, Landroid/util/DisplayMetrics;->density:F | |
mul-float v0, v0, v1 | |
float-to-int v0, v0 | |
return v0 | |
.end method |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
GG!