package com.mygame;
public class StateMainLevelSelect extends GameState
{
private int animationLevel;
private int animticks;
private boolean doFadeOut;
private Sprite levelSelect;
private Button levelSelectBack;
private Sprite levelsribbon;
private Sprite lockedwhite;
private Sprite medals;
private Sprite medalslock;
private Sprite medalsshine;
private Sprite menubg;
private Sprite numberSprite;
private Sprite shine;
private int soundeffect;
private boolean trial;
private Sprite trialFree;
private Sprite trialFull;
public StateMainLevelSelect(GameCore parent)
{
super.initState(parent);
this.menubg = new Sprite("menubg", 1, 1, 9, true);
this.medals = new Sprite("medals", 3, 1, 0x12, true);
this.medalslock = new Sprite("medalslock", 1, 1, 0x12, true);
this.lockedwhite = new Sprite("lockedwhite", 1, 1, 10, true);
this.numberSprite = new Sprite("bignumbers2", 11, 1, 9, true);
this.levelSelectBack = new Button(EButtonTypes.ENormal, "btnback", 9, 0);
this.levelSelect = new Sprite("levelsbg", 3, 1, 0x12, false);
this.levelsribbon = new Sprite("levelsribbon", 1, 1, 10, false);
this.shine = new Sprite("shine", 1, 1, 0x12, false);
this.medalsshine = new Sprite("medalsshine", 1, 1, 0x12, false);
this.trialFree = new Sprite("trial-free", 1, 1, 10, false);
this.trialFull = new Sprite("trial-full", 1, 1, 10, false);
this.soundeffect = -1;
}
@Override
public void activateState()
{
this.trial = super.game.isTrial();
int num = super.game.getValue(EValues.EValueDoLevelSelectAnimation);
if (num != -1)
{
this.animationLevel = num;
super.game.setValue(EValues.EValueDoLevelSelectAnimation, -1);
this.animticks = 0;
this.levelSelectBack.disable(true);
}
else
{
this.animticks = -1;
this.levelSelectBack.disable(false);
super.game.startMenuMusic(false);
}
this.doFadeOut = false;
}
@Override
public void backButtonPressed()
{
super.game.changeState(EStates.EGameStateMainMenu);
}
@Override
public void deactivateState()
{
if (this.soundeffect != -1)
{
this.soundeffect = -1;
}
}
@Override
public void paint(Painter painter)
{
int w = super.game.getW();
int h = super.game.getH();
for (int i = 0; i < w; i += this.menubg.getWidth())
{
this.menubg.Paint(painter, (float) i, 0f, 0, 0f);
}
int num4 = this.levelSelect.getWidth();
int num5 = this.levelSelect.getHeight();
int num6 = (num4 * 80) / 100;
int num7 = (num5 * 80) / 100;
int num8 = (w - (3 * num4)) / 4;
int num9 = 10;
int ribbonY = (-num5 / 2) + 15;
int num11 = num8;
int num12 = -30;
int num13 = -30;
boolean flag = this.animticks != -1;
float x = 1f;
int num15 = num11 + (num4 / 2);
int num16 = num9 + (num5 / 2);
painter.save();
painter.translate((float) num15, (float) num16);
boolean flag2 = GameUtils.isInside(super.game.getMouseX(), super.game.getMouseY(), num15 - (num6 / 2), num16 - (num7 / 2), num6, num7);
boolean flag3 = (!flag && flag2) && super.game.isMouseDown();
boolean flag4 = (!flag && flag2) && super.game.isMouseUp();
if (flag4 || flag3)
{
x = 0.8f;
}
else
{
x = 0.95f + (((float) GameUtils.sin(super.game.getTick() * 3)) / 163840f);
}
painter.scale(x, x);
this.levelSelect.Paint(painter, 0f, 0f, 0);
if (flag4)
{
super.game.clearMouseStatus();
super.game.setValue(EValues.EValueSelectedMainLevel, 0);
super.game.changeState(EStates.EGameStateLevelSelect);
super.game.doButtonPressSound();
}
this.levelsribbon.Paint(painter, 0f, (float) ribbonY, 0, 0f);
if (this.trial)
{
this.trialFree.Paint(painter, 0f, (float) ribbonY, 0);
}
else
{
this.paintNumbers(painter, 0, -(this.levelsribbon.getWidth() / 2), ribbonY, this.levelsribbon.getWidth(), this.levelsribbon.getHeight());
}
boolean flag5 = super.game.getSettings().m_levels.get(14) > 0;
boolean animMedal = (this.animticks != -1) && (this.animationLevel == 14);
int pos = !animMedal ? 0 : (((this.animticks - 60) << 10) / 80);
int num18 = 0;
int y = num12;
if (flag5)
{
this.paintMedal(painter, num18, y, animMedal, pos, 0);
}
painter.restore();
painter.save();
num15 = w / 2;
flag2 = GameUtils.isInside(super.game.getMouseX(), super.game.getMouseY(), num15 - (num6 / 2), num16 - (num7 / 2), num6, num7);
flag3 = (!flag && flag2) && super.game.isMouseDown();
flag4 = (!flag && flag2) && super.game.isMouseUp();
boolean flag7 = super.game.getSettings().m_levels.get(4) < 1;
boolean flag8 = (this.animticks != -1) && (this.animationLevel == 4);
pos = !flag8 ? 0 : (((this.animticks - 60) << 10) / 80);
if (flag7)
{
x = 0.8f;
painter.setOpacity(0.7f);
}
else if (flag4 || flag3)
{
x = 0.8f;
}
else
{
x = 0.95f + (((float) GameUtils.sin((super.game.getTick() * 3) + 0x41)) / 163840f);
if (flag8)
{
if (pos < 0x300)
{
x = 0.8f;
painter.setOpacity(0.7f);
}
else
{
float num20 = x - 0.8f;
x = 0.8f + ((num20 * (pos - 0x300)) / 256f);
painter.setOpacity(0.7f + (((pos - 0x300) * 0.3f) / 256f));
}
}
}
painter.translate((float) num15, (float) num16);
painter.scale(x, x);
this.levelSelect.Paint(painter, 0f, 0f, 1);
painter.setOpacity(1.0f);
if (!flag7 && flag4)
{
super.game.clearMouseStatus();
if (this.trial)
{
super.game.setValue(EValues.EValueTrialClickedFrom, 0);
super.game.changeState(EStates.EGameStateTrial);
}
else
{
super.game.setValue(EValues.EValueSelectedMainLevel, 1);
super.game.changeState(EStates.EGameStateLevelSelect);
}
super.game.doButtonPressSound();
}
this.levelsribbon.Paint(painter, 0f, (float) ribbonY, 0, 0f);
if (flag7 || flag8)
{
GameUtils.initRandom(((this.animticks + 0x200) * 0xabe63) ^ 0x3eba348);
int num21 = (GameUtils.sin((pos * 180) / 0x400) * 0x20) >> 13;
float num22 = num21;
num21 /= 4;
int num23 = ((pos <= 0) || (num21 < 1)) ? 0 : (((GameUtils.getRandom() >> 3) % num21) - (num21 / 2));
int num24 = ((pos <= 0) || (num21 < 1)) ? 0 : (((GameUtils.getRandom() >> 3) % num21) - (num21 / 2));
float num25 = (pos <= 0) ? 0f : (((GameUtils.sin(pos / 3) * num22) / 8192f) - (num22 / 2f));
int num26 = (h - num13) + this.medalslock.getHeight();
int num27 = (pos < 0x300) ? 0 : (((0x2000 - GameUtils.sin((((pos - 0x300) * 90) / 0x100) + 90)) * num26) >> 13);
if (pos > 0x300)
{
this.paintStars(painter, 0, num13 + (this.medalslock.getHeight() / 10), (pos - 0x300) << 2);
}
this.medalslock.Paint(painter, (float) num23, (float)((num13 + num24) + num27), 0, num25 - (((float) num27) / 3f));
if (pos > 0x200)
{
painter.setOpacity(((float)(0x400 - pos)) / 512f);
}
if (!this.trial)
{
this.lockedwhite.Paint(painter, 0f, (float)(ribbonY + 6), 0);
}
}
if (!flag7 && !this.trial)
{
if (flag8)
{
painter.setOpacity((pos < 0x200) ? 0.0f : (((float)(pos - 0x200)) / 512f));
}
this.paintNumbers(painter, 1, -(this.levelsribbon.getWidth() / 2), ribbonY, this.levelsribbon.getWidth(), this.levelsribbon.getHeight());
painter.setOpacity(1.0f);
}
if (this.trial)
{
painter.setOpacity(1.0f);
this.trialFull.Paint(painter, 0f, (float) ribbonY, 0);
}
flag5 = super.game.getSettings().m_levels.get(0x1d) > 0;
animMedal = (this.animticks != -1) && (this.animationLevel == 0x1d);
pos = !animMedal ? 0 : (((this.animticks - 60) << 10) / 80);
num18 = 0;
y = num12;
if (flag5)
{
this.paintMedal(painter, num18, y, animMedal, pos, 1);
}
painter.restore();
painter.save();
num15 = (w - num11) - (num4 / 2);
flag7 = super.game.getSettings().m_levels.get(0x13) < 1;
flag8 = (this.animticks != -1) && (this.animationLevel == 0x13);
flag2 = GameUtils.isInside(super.game.getMouseX(), super.game.getMouseY(), num15 - (num6 / 2), num16 - (num7 / 2), num6, num7);
flag3 = (!flag && flag2) && super.game.isMouseDown();
flag4 = (!flag && flag2) && super.game.isMouseUp();
pos = !flag8 ? 0 : (((this.animticks - 60) << 10) / 80);
if (flag7)
{
x = 0.8f;
painter.setOpacity(0.7f);
}
else if (flag4 || flag3)
{
x = 0.8f;
}
else
{
x = 0.95f + (((float) GameUtils.sin((super.game.getTick() * 3) + 130)) / 163840f);
if (flag8)
{
if (pos < 0x300)
{
x = 0.8f;
painter.setOpacity(0.7f);
}
else
{
float num28 = x - 0.8f;
x = 0.8f + ((num28 * (pos - 0x300)) / 256f);
painter.setOpacity(0.7f + (((pos - 0x300) * 0.3f) / 256f));
}
}
}
painter.translate((float) num15, (float) num16);
painter.scale(x, x);
this.levelSelect.Paint(painter, 0f, 0f, 2);
painter.setOpacity(1.0f);
if (!flag7 && flag4)
{
super.game.clearMouseStatus();
if (super.game.isTrial())
{
super.game.changeState(EStates.EGameStateTrial);
}
else
{
super.game.setValue(EValues.EValueSelectedMainLevel, 2);
super.game.changeState(EStates.EGameStateLevelSelect);
}
super.game.doButtonPressSound();
}
this.levelsribbon.Paint(painter, 0f, (float) ribbonY, 0, 0f);
if (flag7 || flag8)
{
GameUtils.initRandom(((this.animticks + 0x200) * 0xabe63) ^ 0x3eba348);
int num29 = (GameUtils.sin((pos * 180) / 0x400) * 0x20) >> 13;
float num30 = num29;
num29 /= 4;
int num31 = ((pos <= 0) || (num29 < 1)) ? 0 : (((GameUtils.getRandom() >> 3) % num29) - (num29 / 2));
int num32 = ((pos <= 0) || (num29 < 1)) ? 0 : (((GameUtils.getRandom() >> 3) % num29) - (num29 / 2));
float num33 = (pos <= 0) ? 0f : (((GameUtils.sin(pos / 3) * num30) / 8192f) - (num30 / 2f));
int num34 = (h - num13) + this.medalslock.getHeight();
int num35 = (pos < 0x300) ? 0 : (((0x2000 - GameUtils.sin((((pos - 0x300) * 90) / 0x100) + 90)) * num34) >> 13);
if (pos > 0x300)
{
this.paintStars(painter, 0, num13 + (this.medalslock.getHeight() / 10), (pos - 0x300) << 2);
}
this.medalslock.Paint(painter, (float) num31, (float)((num13 + num32) + num35), 0, num33 - (((float) num35) / 3f));
if (pos > 0x200)
{
painter.setOpacity(((float)(0x400 - pos)) / 512f);
}
if (!this.trial)
{
this.lockedwhite.Paint(painter, 0f, (float)(ribbonY + 6), 0);
}
}
if (!flag7 && !this.trial)
{
if (flag8)
{
painter.setOpacity((pos < 0x200) ? 0f : (((float)(pos - 0x200)) / 512f));
}
this.paintNumbers(painter, 2, -(this.levelsribbon.getWidth() / 2), ribbonY, this.levelsribbon.getWidth(), this.levelsribbon.getHeight());
painter.setOpacity(1.0f);
}
if (this.trial)
{
this.trialFull.Paint(painter, 0f, (float) ribbonY, 0);
}
flag5 = super.game.getSettings().m_levels.get(0x2c) > 0;
animMedal = (this.animticks != -1) && (this.animationLevel == 0x2c);
pos = !animMedal ? 0 : (((this.animticks - 60) << 10) / 80);
num18 = 0;
y = num12;
if (flag5)
{
this.paintMedal(painter, num18, y, animMedal, pos, 2);
}
painter.restore();
if (this.levelSelectBack.paint(painter, super.game, this.levelSelectBack.getW() / 12, h - ((this.levelSelectBack.getH() * 13) / 12)))
{
super.game.doButtonPressSound();
super.game.changeState(EStates.EGameStateMainMenu);
super.game.clearMouseStatus();
}
if ((flag && this.doFadeOut) && (this.animticks > 30))
{
if (this.animticks >= 60)
{
}
else
{
}
}
}
private void paintMedal(Painter painter, int x, int y, boolean animMedal, int pos, int frame)
{
GameUtils.initRandom(0x3eba348);
if (animMedal)
{
painter.setOpacity(((float) pos) / 1024f);
float angle = ((float)(GameUtils.sin(((pos * 180) >> 10) + 90) + 0x2000)) / 91f;
this.medals.Paint(painter, (float) x, (float) y, frame, angle);
painter.setOpacity(1.0f);
}
else
{
this.medals.Paint(painter, (float) x, (float) y, frame);
}
if (animMedal)
{
for (int i = 0; i < 0x20; i++)
{
int num3 = pos - ((GameUtils.getRandom() >> 4) & 0xff);
if (num3 > 0)
{
int num4 = ((GameUtils.getRandom() >> 4) + num3) % 360;
int num5 = (((this.medals.getWidth() * 0x2d) / 100) * ((num3 < 0x200) ? num3 : 0x200)) / 0x200;
int num6 = x + ((GameUtils.cos(num4) * num5) >> 13);
int num7 = y + ((GameUtils.sin(num4) * num5) >> 13);
float scalex = 0.5f + ((num3 < 0x200) ? (((float) num3) / 1024f) : 0.5f);
if (num3 > 0x200)
{
painter.setOpacity(((float)(0x300 - num3)) / 256f);
}
this.shine.PaintScaled(painter, (float) num6, (float) num7, 0, scalex, scalex);
painter.setOpacity(1f);
}
else
{
GameUtils.getRandom();
}
}
if (pos > 0x200)
{
int num9 = pos - 0x200;
int num10 = (this.medals.getWidth() * 0x69) / 100;
int num11 = (x - (num10 / 2)) + ((num9 * num10) / 0x200);
float num12 = ((float) GameUtils.sin((num9 * 180) / 0x200)) / 8100f;
if (num9 > 0x180)
{
painter.setOpacity(((float)(0x200 - num9)) / 128f);
}
this.medalsshine.PaintScaled(painter, (float) num11, (float) y, 0, num12, num12);
painter.setOpacity(1f);
}
}
}
public final void paintNumbers(Painter painter, int mainLevel, int ribbonX, int ribbonY, int ribbonWidth, int ribbonHeight)
{
int num = mainLevel * 15;
int frame = 0;
for (int i = 0; i < 15; i++)
{
if (super.game.getSettings().m_levels.get(i + num) > 0)
{
frame++;
}
}
int num4 = (ribbonY + ((ribbonHeight - this.numberSprite.getHeight()) / 2)) - 0x11;
int num5 = 0;
if (frame < 10)
{
num5 = ribbonX + ((ribbonWidth - (4 * this.numberSprite.getWidth())) / 2);
this.numberSprite.Paint(painter, (float) num5, (float) num4, frame);
num5 += this.numberSprite.getWidth();
}
else
{
num5 = ribbonX + ((ribbonWidth - (5 * this.numberSprite.getWidth())) / 2);
this.numberSprite.Paint(painter, (float) num5, (float) num4, frame / 10);
num5 += this.numberSprite.getWidth();
this.numberSprite.Paint(painter, (float) num5, (float) num4, frame % 10);
num5 += this.numberSprite.getWidth();
}
this.numberSprite.Paint(painter, (float) num5, (float) num4, 10);
num5 += this.numberSprite.getWidth();
this.numberSprite.Paint(painter, (float) num5, (float) num4, 1);
num5 += this.numberSprite.getWidth();
this.numberSprite.Paint(painter, (float) num5, (float) num4, 5);
}
private void paintStars(Painter painter, int x, int y, int pos)
{
if (pos > 0x400)
{
pos = 0x400;
}
int startvalue = 0x3eba348;
GameUtils.initRandom(startvalue);
for (int i = 0; i < 0x20; i++)
{
int num3 = pos - ((GameUtils.getRandom() >> 4) & 0xff);
if (num3 > 0)
{
int angle = (GameUtils.getRandom() >> 4) % 360;
int num5 = (this.medals.getWidth() * num3) / 0x300;
int num6 = x + ((GameUtils.cos(angle) * num5) >> 13);
int num7 = y + ((GameUtils.sin(angle) * num5) >> 13);
float scalex = 1f + (((float) num3) / 2048f);
if (num3 > 0x200)
{
painter.setOpacity(((float)(0x300 - num3)) / 256f);
}
this.shine.PaintScaled(painter, (float) num6, (float) num7, 0, scalex, scalex);
painter.setOpacity(1.0f);
}
else
{
GameUtils.getRandom();
}
}
}
@Override
public void tick()
{
if (this.animticks != -1)
{
this.animticks++;
if ((this.animticks == 30) && ((this.animationLevel == 4) || (this.animationLevel == 0x13)))
{
}
if ((this.animticks == 40) && (((this.animationLevel == 14) || (this.animationLevel == 0x1d)) || (this.animationLevel == 0x2c)))
{
}
int num = this.doFadeOut ? 60 : (((this.animationLevel == 4) || (this.animationLevel == 0x13)) ? 140 : 140);
if (this.animticks > num)
{
if (this.doFadeOut)
{
this.animationLevel = -1;
super.game.changeState(EStates.EGameStateGameEnd);
}
else if (super.game.getValue(EValues.EValueDoGameEndAnimation) > 0)
{
this.animationLevel = -1;
this.doFadeOut = true;
this.animticks = 0;
}
else
{
this.animticks = -1;
this.levelSelectBack.disable(false);
super.game.clearMouseStatus();
super.game.startMenuMusic(false);
}
}
}
}
}