mobile-eggbert-core/InputPad.cs

1003 lines
48 KiB
C#

// WindowsPhoneSpeedyBlupi, Version=1.0.0.5, Culture=neutral, PublicKeyToken=6db12cd62dbec439
// WindowsPhoneSpeedyBlupi.InputPad
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Microsoft.Devices.Sensors;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Input.Touch;
using static WindowsPhoneSpeedyBlupi.EnvClasses;
namespace WindowsPhoneSpeedyBlupi
{
public class InputPad
{
private static readonly int padRadius = 140;
private readonly Game1 game1;
private readonly Decor decor;
private readonly Pixmap pixmap;
private readonly Sound sound;
private readonly GameData gameData;
private readonly List<Def.ButtonGlyph> pressedGlyphs;
private readonly Accelerometer accelSensor;
private readonly Slider accelSlider;
private bool padPressed;
private bool showCheatMenu;
private TinyPoint padTouchPos;
private Def.ButtonGlyph lastButtonDown;
private Def.ButtonGlyph buttonPressed;
private int touchCount;
private bool accelStarted;
private bool accelActive;
private double accelSpeedX;
private bool accelLastState;
private bool accelWaitZero;
private int mission;
public Def.Phase Phase { get; set; }
public int SelectedGamer { get; set; }
public TinyPoint PixmapOrigin { get; set; }
public int TotalTouch
{
get
{
return touchCount;
}
}
public Def.ButtonGlyph ButtonPressed
{
get
{
Def.ButtonGlyph result = buttonPressed;
buttonPressed = Def.ButtonGlyph.None;
return result;
}
}
public bool ShowCheatMenu
{
get
{
return showCheatMenu;
}
set
{
showCheatMenu = value;
}
}
private IEnumerable<Def.ButtonGlyph> ButtonGlyphs
{
get
{
switch (Phase)
{
case Def.Phase.Init:
yield return Def.ButtonGlyph.InitGamerA;
yield return Def.ButtonGlyph.InitGamerB;
yield return Def.ButtonGlyph.InitGamerC;
yield return Def.ButtonGlyph.InitSetup;
yield return Def.ButtonGlyph.InitPlay;
if (game1.IsTrialMode)
{
yield return Def.ButtonGlyph.InitBuy;
}
if (game1.IsRankingMode)
{
yield return Def.ButtonGlyph.InitRanking;
}
break;
case Def.Phase.Play:
yield return Def.ButtonGlyph.PlayPause;
yield return Def.ButtonGlyph.PlayAction;
yield return Def.ButtonGlyph.PlayJump;
if (accelStarted)
{
yield return Def.ButtonGlyph.PlayDown;
}
yield return Def.ButtonGlyph.Cheat11;
yield return Def.ButtonGlyph.Cheat12;
yield return Def.ButtonGlyph.Cheat21;
yield return Def.ButtonGlyph.Cheat22;
yield return Def.ButtonGlyph.Cheat31;
yield return Def.ButtonGlyph.Cheat32;
break;
case Def.Phase.Pause:
yield return Def.ButtonGlyph.PauseMenu;
if (mission != 1)
{
yield return Def.ButtonGlyph.PauseBack;
}
yield return Def.ButtonGlyph.PauseSetup;
if (mission != 1 && mission % 10 != 0)
{
yield return Def.ButtonGlyph.PauseRestart;
}
yield return Def.ButtonGlyph.PauseContinue;
break;
case Def.Phase.Resume:
yield return Def.ButtonGlyph.ResumeMenu;
yield return Def.ButtonGlyph.ResumeContinue;
break;
case Def.Phase.Lost:
case Def.Phase.Win:
yield return Def.ButtonGlyph.WinLostReturn;
break;
case Def.Phase.Trial:
yield return Def.ButtonGlyph.TrialBuy;
yield return Def.ButtonGlyph.TrialCancel;
break;
case Def.Phase.MainSetup:
yield return Def.ButtonGlyph.SetupSounds;
yield return Def.ButtonGlyph.SetupJump;
yield return Def.ButtonGlyph.SetupZoom;
yield return Def.ButtonGlyph.SetupAccel;
yield return Def.ButtonGlyph.SetupReset;
yield return Def.ButtonGlyph.SetupReturn;
break;
case Def.Phase.PlaySetup:
yield return Def.ButtonGlyph.SetupSounds;
yield return Def.ButtonGlyph.SetupJump;
yield return Def.ButtonGlyph.SetupZoom;
yield return Def.ButtonGlyph.SetupAccel;
yield return Def.ButtonGlyph.SetupReturn;
break;
case Def.Phase.Ranking:
yield return Def.ButtonGlyph.RankingContinue;
break;
}
if (showCheatMenu)
{
yield return Def.ButtonGlyph.Cheat1;
yield return Def.ButtonGlyph.Cheat2;
yield return Def.ButtonGlyph.Cheat3;
yield return Def.ButtonGlyph.Cheat4;
yield return Def.ButtonGlyph.Cheat5;
yield return Def.ButtonGlyph.Cheat6;
yield return Def.ButtonGlyph.Cheat7;
yield return Def.ButtonGlyph.Cheat8;
yield return Def.ButtonGlyph.Cheat9;
}
}
}
/// <summary>
/// Returns the point of the center of the pad on the screen.
/// </summary>
private TinyPoint PadCenter
{
get
{
TinyRect drawBounds = pixmap.DrawBounds;
int x = gameData.JumpRight ? 100 : drawBounds.Width - 100;
return new TinyPoint(x, drawBounds.Height - 100);
}
}
public InputPad(Game1 game1, Decor decor, Pixmap pixmap, Sound sound, GameData gameData)
{
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Expected O, but got Unknown
this.game1 = game1;
this.decor = decor;
this.pixmap = pixmap;
this.sound = sound;
this.gameData = gameData;
pressedGlyphs = new List<Def.ButtonGlyph>();
accelSensor = new Accelerometer();
((SensorBase<AccelerometerReading>)(object)accelSensor).CurrentValueChanged += HandleAccelSensorCurrentValueChanged;
accelSlider = new Slider(new TinyPoint(320, 400), this.gameData.AccelSensitivity);
lastButtonDown = Def.ButtonGlyph.None;
buttonPressed = Def.ButtonGlyph.None;
}
public void StartMission(int mission)
{
this.mission = mission;
accelWaitZero = true;
}
public void Update()
{
pressedGlyphs.Clear();
if (accelActive != gameData.AccelActive)
{
accelActive = gameData.AccelActive;
if (accelActive)
{
StartAccel();
}
else
{
StopAccel();
}
}
double horizontalChange = 0.0;
double verticalChange = 0.0;
int keyPress = 0;
padPressed = false;
Def.ButtonGlyph buttonGlyph = Def.ButtonGlyph.None;
TouchCollection touches = default;
if (Env.IMPL.isNotKNI())
{
touches = TouchPanel.GetState();
touchCount = touches.Count;
}
List <TinyPoint> touchesOrClicks = new List<TinyPoint>();
if(Env.IMPL.isNotKNI()) foreach (TouchLocation item in touches)
{
if (item.State == TouchLocationState.Pressed || item.State == TouchLocationState.Moved)
{
TinyPoint touchPress = new TinyPoint((int)item.Position.X, (int)item.Position.Y);
touchesOrClicks.Add(touchPress);
}
}
MouseState mouseState = Mouse.GetState();
if (mouseState.LeftButton == ButtonState.Pressed)
{
touchCount++;
TinyPoint mouseClick = new TinyPoint(mouseState.X, mouseState.Y);
touchesOrClicks.Add(mouseClick);
}
float screenWidth = game1.getGraphics().GraphicsDevice.Viewport.Width;
float screenHeight = game1.getGraphics().GraphicsDevice.Viewport.Height;
float screenRatio = screenWidth / screenHeight;
if ((Env.PLATFORM.isAndroid() && screenRatio > 1.3333333333333333) || (Env.IMPL.isKNI()))
{
for (int i = 0; i < touchesOrClicks.Count; i++)
{
var touchOrClick = touchesOrClicks[i];
if (touchOrClick.X == -1) continue;
float originalX = touchOrClick.X;
float originalY = touchOrClick.Y;
float widthHeightRatio = screenWidth / screenHeight;
float heightRatio = 480 / screenHeight;
float widthRatio = 640 / screenWidth;
if(Env.DETAILED_DEBUGGING)
{
Debug.WriteLine("-----");
Debug.WriteLine("originalX=" + originalX);
Debug.WriteLine("originalY=" + originalY);
Debug.WriteLine("heightRatio=" + heightRatio);
Debug.WriteLine("widthRatio=" + widthRatio);
Debug.WriteLine("widthHeightRatio=" + widthHeightRatio);
}
if (screenHeight> 480) {
touchOrClick.X = (int)(originalX * heightRatio);
touchOrClick.Y = (int)(originalY * heightRatio);
touchesOrClicks[i] = touchOrClick;
}
if(Env.DETAILED_DEBUGGING) Debug.WriteLine("new X" + touchOrClick.X);
if(Env.DETAILED_DEBUGGING) Debug.WriteLine("new Y" + touchOrClick.Y);
}
}
KeyboardState newKeyboardState = Keyboard.GetState();
Keys[] keysToBeChecked = new Keys[6] { Keys.LeftControl, Keys.Up, Keys.Right, Keys.Down, Keys.Left, Keys.Space };
foreach(Keys keys in keysToBeChecked) {
if (newKeyboardState.IsKeyDown(keys)) touchesOrClicks.Add(new TinyPoint(-1, (int)keys));
}
if (newKeyboardState.IsKeyDown(Keys.F11))
{
game1.ToggleFullScreen ();
Debug.WriteLine("F11 was pressed.");
}
Boolean keyPressedUp = false;
Boolean keyPressedDown = false;
Boolean keyPressedLeft = false;
Boolean keyPressedRight = false;
foreach (TinyPoint touchOrClickItem in touchesOrClicks)
{
Boolean keyboardPressed = false;
if (touchOrClickItem.X == -1)
{
keyboardPressed = true;
}
Keys keyPressed = keyboardPressed ? (Keys)touchOrClickItem.Y : Keys.None;
keyPressedUp = keyPressed == Keys.Up ? true : keyPressedUp;
keyPressedDown = keyPressed == Keys.Down ? true : keyPressedDown;
keyPressedLeft = keyPressed == Keys.Left ? true : keyPressedLeft;
keyPressedRight = keyPressed == Keys.Right ? true : keyPressedRight;
{
TinyPoint touchOrClick = keyboardPressed ? new TinyPoint(1, 1) : touchOrClickItem;
if (!accelStarted && Misc.IsInside(GetPadBounds(PadCenter, padRadius), touchOrClick))
{
padPressed = true;
padTouchPos = touchOrClick;
}
if (keyPressedUp || keyPressedDown || keyPressedLeft || keyPressedRight)
{
padPressed = true;
}
Debug.WriteLine("padPressed=" + padPressed);
Def.ButtonGlyph pressedGlyph = ButtonDetect(touchOrClick);
Debug.WriteLine("buttonGlyph2 =" + pressedGlyph);
if (pressedGlyph != 0)
{
pressedGlyphs.Add(pressedGlyph);
}
if (keyboardPressed)
{
switch (keyPressed)
{
case Keys.LeftControl: pressedGlyph = Def.ButtonGlyph.PlayJump; pressedGlyphs.Add(pressedGlyph); break;
case Keys.Space: pressedGlyph = Def.ButtonGlyph.PlayAction; pressedGlyphs.Add(pressedGlyph); break;
}
}
if ((Phase == Def.Phase.MainSetup || Phase == Def.Phase.PlaySetup) && accelSlider.Move(touchOrClick))
{
gameData.AccelSensitivity = accelSlider.Value;
}
switch (pressedGlyph)
{
case Def.ButtonGlyph.PlayJump:
Debug.WriteLine("Jumping detected");
accelWaitZero = false;
keyPress |= 1;
break;
case Def.ButtonGlyph.PlayDown:
accelWaitZero = false;
keyPress |= 4;
break;
case Def.ButtonGlyph.InitGamerA:
case Def.ButtonGlyph.InitGamerB:
case Def.ButtonGlyph.InitGamerC:
case Def.ButtonGlyph.InitSetup:
case Def.ButtonGlyph.InitPlay:
case Def.ButtonGlyph.InitBuy:
case Def.ButtonGlyph.InitRanking:
case Def.ButtonGlyph.WinLostReturn:
case Def.ButtonGlyph.TrialBuy:
case Def.ButtonGlyph.TrialCancel:
case Def.ButtonGlyph.SetupSounds:
case Def.ButtonGlyph.SetupJump:
case Def.ButtonGlyph.SetupZoom:
case Def.ButtonGlyph.SetupAccel:
case Def.ButtonGlyph.SetupReset:
case Def.ButtonGlyph.SetupReturn:
case Def.ButtonGlyph.PauseMenu:
case Def.ButtonGlyph.PauseBack:
case Def.ButtonGlyph.PauseSetup:
case Def.ButtonGlyph.PauseRestart:
case Def.ButtonGlyph.PauseContinue:
case Def.ButtonGlyph.PlayPause:
case Def.ButtonGlyph.PlayAction:
case Def.ButtonGlyph.ResumeMenu:
case Def.ButtonGlyph.ResumeContinue:
case Def.ButtonGlyph.RankingContinue:
case Def.ButtonGlyph.Cheat11:
case Def.ButtonGlyph.Cheat12:
case Def.ButtonGlyph.Cheat21:
case Def.ButtonGlyph.Cheat22:
case Def.ButtonGlyph.Cheat31:
case Def.ButtonGlyph.Cheat32:
case Def.ButtonGlyph.Cheat1:
case Def.ButtonGlyph.Cheat2:
case Def.ButtonGlyph.Cheat3:
case Def.ButtonGlyph.Cheat4:
case Def.ButtonGlyph.Cheat5:
case Def.ButtonGlyph.Cheat6:
case Def.ButtonGlyph.Cheat7:
case Def.ButtonGlyph.Cheat8:
case Def.ButtonGlyph.Cheat9:
accelWaitZero = false;
buttonGlyph = pressedGlyph;
showCheatMenu = false;
break;
}
}
}
if (buttonGlyph != 0 && buttonGlyph != Def.ButtonGlyph.PlayAction && buttonGlyph != Def.ButtonGlyph.Cheat11 && buttonGlyph != Def.ButtonGlyph.Cheat12 && buttonGlyph != Def.ButtonGlyph.Cheat21 && buttonGlyph != Def.ButtonGlyph.Cheat22 && buttonGlyph != Def.ButtonGlyph.Cheat31 && buttonGlyph != Def.ButtonGlyph.Cheat32 && lastButtonDown == Def.ButtonGlyph.None)
{
TinyPoint pos = new TinyPoint(320, 240);
sound.PlayImage(0, pos);
}
if (buttonGlyph == Def.ButtonGlyph.None && lastButtonDown != 0)
{
buttonPressed = lastButtonDown;
}
lastButtonDown = buttonGlyph;
if (padPressed)
{
Debug.WriteLine("PadCenter.X=" + PadCenter.X);
Debug.WriteLine("PadCenter.Y=" + PadCenter.Y);
Debug.WriteLine("padTouchPos.X=" + padTouchPos.X);
Debug.WriteLine("padTouchPos.Y=" + padTouchPos.Y);
Debug.WriteLine("keyPressedUp=" + keyPressedUp);
Debug.WriteLine("keyPressedDown=" + keyPressedDown);
Debug.WriteLine("keyPressedLeft=" + keyPressedLeft);
Debug.WriteLine(" keyPressedRight=" + keyPressedRight);
{
if (keyPressedUp)
{
padTouchPos.Y = PadCenter.Y - 30;
padTouchPos.X = PadCenter.X;
if (keyPressedLeft) padTouchPos.X = PadCenter.X - 30;
if (keyPressedRight) padTouchPos.X = PadCenter.X + 30;
}
if (keyPressedDown) {
padTouchPos.Y = PadCenter.Y + 30;
padTouchPos.X = PadCenter.X;
if (keyPressedLeft) padTouchPos.X = PadCenter.X - 30;
if (keyPressedRight) padTouchPos.X = PadCenter.X + 30;
}
if (keyPressedLeft) {
padTouchPos.X = PadCenter.X - 30;
padTouchPos.Y = PadCenter.Y;
if (keyPressedUp) padTouchPos.Y = PadCenter.Y - 30;
if (keyPressedDown) padTouchPos.Y = PadCenter.Y + 30;
}
if (keyPressedRight) {
padTouchPos.X = PadCenter.X + 30;
padTouchPos.Y = PadCenter.Y;
if (keyPressedUp) padTouchPos.Y = PadCenter.Y - 30;
if (keyPressedDown) padTouchPos.Y = PadCenter.Y + 30;
}
}
double horizontalPosition = padTouchPos.X - PadCenter.X;
double verticalPosition = padTouchPos.Y - PadCenter.Y;
if (horizontalPosition > 20.0)
{
horizontalChange += 1.0;
Debug.WriteLine(" horizontalChange += 1.0;");
}
if (horizontalPosition < -20.0)
{
horizontalChange -= 1.0;
Debug.WriteLine(" horizontalChange -= 1.0;");
}
if (verticalPosition > 20.0)
{
verticalChange += 1.0;
Debug.WriteLine(" verticalPosition += 1.0;");
}
if (verticalPosition < -20.0)
{
verticalChange -= 1.0;
Debug.WriteLine(" verticalPosition -= 1.0;");
}
}
if (accelStarted)
{
horizontalChange = accelSpeedX;
verticalChange = 0.0;
if (((uint)keyPress & 4u) != 0)
{
verticalChange = 1.0;
}
}
decor.SetSpeedX(horizontalChange);
decor.SetSpeedY(verticalChange);
decor.KeyChange(keyPress);
}
private Def.ButtonGlyph ButtonDetect(TinyPoint touchOrClick)
{
foreach (Def.ButtonGlyph buttonGlyph in ButtonGlyphs.Reverse())
{
TinyRect buttonRect = GetButtonRect(buttonGlyph);
if (buttonGlyph == Def.ButtonGlyph.PlayJump || buttonGlyph == Def.ButtonGlyph.PlayAction || buttonGlyph == Def.ButtonGlyph.PlayDown || buttonGlyph == Def.ButtonGlyph.PlayPause)
{
buttonRect = Misc.Inflate(buttonRect, 20);
}
if (Misc.IsInside(buttonRect, touchOrClick))
{
return buttonGlyph;
}
}
return Def.ButtonGlyph.None;
}
public void Draw()
{
if (!accelStarted && Phase == Def.Phase.Play)
{
pixmap.DrawIcon(14, 0, GetPadBounds(PadCenter, padRadius / 2), 1.0, false);
TinyPoint center = (padPressed ? padTouchPos : PadCenter);
pixmap.DrawIcon(14, 1, GetPadBounds(center, padRadius / 2), 1.0, false);
}
foreach (Def.ButtonGlyph buttonGlyph in ButtonGlyphs)
{
bool pressed = pressedGlyphs.Contains(buttonGlyph);
bool selected = false;
if (buttonGlyph >= Def.ButtonGlyph.InitGamerA && buttonGlyph <= Def.ButtonGlyph.InitGamerC)
{
int selectedGamer = (int)(buttonGlyph - 1);
selected = selectedGamer == gameData.SelectedGamer;
}
if (buttonGlyph == Def.ButtonGlyph.SetupSounds)
{
selected = gameData.Sounds;
}
if (buttonGlyph == Def.ButtonGlyph.SetupJump)
{
selected = gameData.JumpRight;
}
if (buttonGlyph == Def.ButtonGlyph.SetupZoom)
{
selected = gameData.AutoZoom;
}
if (buttonGlyph == Def.ButtonGlyph.SetupAccel)
{
selected = gameData.AccelActive;
}
pixmap.DrawInputButton(GetButtonRect(buttonGlyph), buttonGlyph, pressed, selected);
}
if ((Phase == Def.Phase.MainSetup || Phase == Def.Phase.PlaySetup) && gameData.AccelActive)
{
accelSlider.Draw(pixmap);
}
}
private TinyRect GetPadBounds(TinyPoint center, int radius)
{
return new TinyRect(center.X - radius, center.X + radius, center.Y - radius, center.Y + radius);
}
public TinyRect GetButtonRect(Def.ButtonGlyph glyph)
{
TinyRect drawBounds = pixmap.DrawBounds;
double drawBoundsWidth = drawBounds.Width;
double drawBoundsHeight = drawBounds.Height;
double buttonSizeFactor1 = drawBoundsHeight / 5.0;
double buttonSizeFactor2 = drawBoundsHeight * 140.0 / 480.0;
double cheatButtonSizeFactor = drawBoundsHeight / 3.5;
if (glyph >= Def.ButtonGlyph.Cheat1 && glyph <= Def.ButtonGlyph.Cheat9)
{
int cheatNumber = (int)(glyph - 35);
TinyRect result = default(TinyRect);
result.LeftX = 80 * cheatNumber;
result.RightX = 80 * (cheatNumber + 1);
result.TopY = 0;
result.BottomY = 80;
return result;
}
int leftXForButtonsInLeftColumn = (int)(20.0 + buttonSizeFactor2 * 0.0);
int rightXForButtonsInLeftColumn = (int)(20.0 + buttonSizeFactor2 * 0.5);
switch (glyph)
{
case Def.ButtonGlyph.InitGamerA:
{
TinyRect result19 = default(TinyRect);
result19.LeftX = leftXForButtonsInLeftColumn;
result19.RightX = rightXForButtonsInLeftColumn;
result19.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 2.1);
result19.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.6);
return result19;
}
case Def.ButtonGlyph.InitGamerB:
{
TinyRect result18 = default(TinyRect);
result18.LeftX = leftXForButtonsInLeftColumn;
result18.RightX = rightXForButtonsInLeftColumn;
result18.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.6);
result18.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.1);
return result18;
}
case Def.ButtonGlyph.InitGamerC:
{
TinyRect result15 = default(TinyRect);
result15.LeftX = leftXForButtonsInLeftColumn;
result15.RightX = rightXForButtonsInLeftColumn;
result15.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.1);
result15.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.6);
return result15;
}
case Def.ButtonGlyph.InitSetup:
{
TinyRect result14 = default(TinyRect);
result14.LeftX = leftXForButtonsInLeftColumn;
result14.RightX = rightXForButtonsInLeftColumn;
result14.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.5);
result14.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.0);
return result14;
}
case Def.ButtonGlyph.InitPlay:
{
TinyRect result11 = default(TinyRect);
result11.LeftX = (int)(drawBoundsWidth - 20.0 - buttonSizeFactor2 * 1.0);
result11.RightX = (int)(drawBoundsWidth - 20.0 - buttonSizeFactor2 * 0.0);
result11.TopY = (int)(drawBoundsHeight - 40.0 - buttonSizeFactor2 * 1.0);
result11.BottomY = (int)(drawBoundsHeight - 40.0 - buttonSizeFactor2 * 0.0);
return result11;
}
case Def.ButtonGlyph.InitBuy:
case Def.ButtonGlyph.InitRanking:
{
TinyRect result10 = default(TinyRect);
result10.LeftX = (int)(drawBoundsWidth - 20.0 - buttonSizeFactor2 * 0.75);
result10.RightX = (int)(drawBoundsWidth - 20.0 - buttonSizeFactor2 * 0.25);
result10.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 2.1);
result10.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.6);
return result10;
}
case Def.ButtonGlyph.PauseMenu:
{
TinyRect result37 = default(TinyRect);
result37.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * -0.21);
result37.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 0.79);
result37.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.2);
result37.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.2);
return result37;
}
case Def.ButtonGlyph.PauseBack:
{
TinyRect result36 = default(TinyRect);
result36.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 0.79);
result36.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 1.79);
result36.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.2);
result36.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.2);
return result36;
}
case Def.ButtonGlyph.PauseSetup:
{
TinyRect result35 = default(TinyRect);
result35.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 1.79);
result35.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 2.79);
result35.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.2);
result35.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.2);
return result35;
}
case Def.ButtonGlyph.PauseRestart:
{
TinyRect result34 = default(TinyRect);
result34.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 2.79);
result34.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 3.79);
result34.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.2);
result34.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.2);
return result34;
}
case Def.ButtonGlyph.PauseContinue:
{
TinyRect result33 = default(TinyRect);
result33.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 3.79);
result33.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 4.79);
result33.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.2);
result33.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.2);
return result33;
}
case Def.ButtonGlyph.ResumeMenu:
{
TinyRect result32 = default(TinyRect);
result32.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 1.29);
result32.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 2.29);
result32.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.2);
result32.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.2);
return result32;
}
case Def.ButtonGlyph.ResumeContinue:
{
TinyRect result31 = default(TinyRect);
result31.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 2.29);
result31.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 3.29);
result31.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.2);
result31.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.2);
return result31;
}
case Def.ButtonGlyph.WinLostReturn:
{
TinyRect result30 = default(TinyRect);
result30.LeftX = (int)((double)PixmapOrigin.X + drawBoundsWidth - buttonSizeFactor1 * 2.2);
result30.RightX = (int)((double)PixmapOrigin.X + drawBoundsWidth - buttonSizeFactor1 * 1.2);
result30.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor1 * 0.2);
result30.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor1 * 1.2);
return result30;
}
case Def.ButtonGlyph.TrialBuy:
{
TinyRect result29 = default(TinyRect);
result29.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 2.5);
result29.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 3.5);
result29.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.1);
result29.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.1);
return result29;
}
case Def.ButtonGlyph.TrialCancel:
{
TinyRect result28 = default(TinyRect);
result28.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 3.5);
result28.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 4.5);
result28.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.1);
result28.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.1);
return result28;
}
case Def.ButtonGlyph.RankingContinue:
{
TinyRect result27 = default(TinyRect);
result27.LeftX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 3.5);
result27.RightX = (int)((double)PixmapOrigin.X + buttonSizeFactor2 * 4.5);
result27.TopY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 2.1);
result27.BottomY = (int)((double)PixmapOrigin.Y + buttonSizeFactor2 * 3.1);
return result27;
}
case Def.ButtonGlyph.SetupSounds:
{
TinyRect result26 = default(TinyRect);
result26.LeftX = leftXForButtonsInLeftColumn;
result26.RightX = rightXForButtonsInLeftColumn;
result26.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 2.0);
result26.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.5);
return result26;
}
case Def.ButtonGlyph.SetupJump:
{
TinyRect result25 = default(TinyRect);
result25.LeftX = leftXForButtonsInLeftColumn;
result25.RightX = rightXForButtonsInLeftColumn;
result25.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.5);
result25.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.0);
return result25;
}
case Def.ButtonGlyph.SetupZoom:
{
TinyRect result24 = default(TinyRect);
result24.LeftX = leftXForButtonsInLeftColumn;
result24.RightX = rightXForButtonsInLeftColumn;
result24.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.0);
result24.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.5);
return result24;
}
case Def.ButtonGlyph.SetupAccel:
{
TinyRect result23 = default(TinyRect);
result23.LeftX = leftXForButtonsInLeftColumn;
result23.RightX = rightXForButtonsInLeftColumn;
result23.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.5);
result23.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.0);
return result23;
}
case Def.ButtonGlyph.SetupReset:
{
TinyRect result22 = default(TinyRect);
result22.LeftX = (int)(450.0 + buttonSizeFactor2 * 0.0);
result22.RightX = (int)(450.0 + buttonSizeFactor2 * 0.5);
result22.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 2.0);
result22.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 1.5);
return result22;
}
case Def.ButtonGlyph.SetupReturn:
{
TinyRect result21 = default(TinyRect);
result21.LeftX = (int)(drawBoundsWidth - 20.0 - buttonSizeFactor2 * 0.8);
result21.RightX = (int)(drawBoundsWidth - 20.0 - buttonSizeFactor2 * 0.0);
result21.TopY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.8);
result21.BottomY = (int)(drawBoundsHeight - 20.0 - buttonSizeFactor2 * 0.0);
return result21;
}
case Def.ButtonGlyph.PlayPause:
{
TinyRect result20 = default(TinyRect);
result20.LeftX = (int)(drawBoundsWidth - buttonSizeFactor1 * 0.7);
result20.RightX = (int)(drawBoundsWidth - buttonSizeFactor1 * 0.2);
result20.TopY = (int)(buttonSizeFactor1 * 0.2);
result20.BottomY = (int)(buttonSizeFactor1 * 0.7);
return result20;
}
case Def.ButtonGlyph.PlayAction:
{
if (gameData.JumpRight)
{
TinyRect result16 = default(TinyRect);
result16.LeftX = (int)((double)drawBounds.Width - buttonSizeFactor1 * 1.2);
result16.RightX = (int)((double)drawBounds.Width - buttonSizeFactor1 * 0.2);
result16.TopY = (int)(drawBoundsHeight - buttonSizeFactor1 * 2.6);
result16.BottomY = (int)(drawBoundsHeight - buttonSizeFactor1 * 1.6);
return result16;
}
TinyRect result17 = default(TinyRect);
result17.LeftX = (int)(buttonSizeFactor1 * 0.2);
result17.RightX = (int)(buttonSizeFactor1 * 1.2);
result17.TopY = (int)(drawBoundsHeight - buttonSizeFactor1 * 2.6);
result17.BottomY = (int)(drawBoundsHeight - buttonSizeFactor1 * 1.6);
return result17;
}
case Def.ButtonGlyph.PlayJump:
{
if (gameData.JumpRight)
{
TinyRect result12 = default(TinyRect);
result12.LeftX = (int)((double)drawBounds.Width - buttonSizeFactor1 * 1.2);
result12.RightX = (int)((double)drawBounds.Width - buttonSizeFactor1 * 0.2);
result12.TopY = (int)(drawBoundsHeight - buttonSizeFactor1 * 1.2);
result12.BottomY = (int)(drawBoundsHeight - buttonSizeFactor1 * 0.2);
return result12;
}
TinyRect result13 = default(TinyRect);
result13.LeftX = (int)(buttonSizeFactor1 * 0.2);
result13.RightX = (int)(buttonSizeFactor1 * 1.2);
result13.TopY = (int)(drawBoundsHeight - buttonSizeFactor1 * 1.2);
result13.BottomY = (int)(drawBoundsHeight - buttonSizeFactor1 * 0.2);
return result13;
}
case Def.ButtonGlyph.PlayDown:
{
if (gameData.JumpRight)
{
TinyRect result8 = default(TinyRect);
result8.LeftX = (int)(buttonSizeFactor1 * 0.2);
result8.RightX = (int)(buttonSizeFactor1 * 1.2);
result8.TopY = (int)(drawBoundsHeight - buttonSizeFactor1 * 1.2);
result8.BottomY = (int)(drawBoundsHeight - buttonSizeFactor1 * 0.2);
return result8;
}
TinyRect result9 = default(TinyRect);
result9.LeftX = (int)((double)drawBounds.Width - buttonSizeFactor1 * 1.2);
result9.RightX = (int)((double)drawBounds.Width - buttonSizeFactor1 * 0.2);
result9.TopY = (int)(drawBoundsHeight - buttonSizeFactor1 * 1.2);
result9.BottomY = (int)(drawBoundsHeight - buttonSizeFactor1 * 0.2);
return result9;
}
case Def.ButtonGlyph.Cheat11:
{
TinyRect result7 = default(TinyRect);
result7.LeftX = (int)(cheatButtonSizeFactor * 0.0);
result7.RightX = (int)(cheatButtonSizeFactor * 1.0);
result7.TopY = (int)(cheatButtonSizeFactor * 0.0);
result7.BottomY = (int)(cheatButtonSizeFactor * 1.0);
return result7;
}
case Def.ButtonGlyph.Cheat12:
{
TinyRect result6 = default(TinyRect);
result6.LeftX = (int)(cheatButtonSizeFactor * 0.0);
result6.RightX = (int)(cheatButtonSizeFactor * 1.0);
result6.TopY = (int)(cheatButtonSizeFactor * 1.0);
result6.BottomY = (int)(cheatButtonSizeFactor * 2.0);
return result6;
}
case Def.ButtonGlyph.Cheat21:
{
TinyRect result5 = default(TinyRect);
result5.LeftX = (int)(cheatButtonSizeFactor * 1.0);
result5.RightX = (int)(cheatButtonSizeFactor * 2.0);
result5.TopY = (int)(cheatButtonSizeFactor * 0.0);
result5.BottomY = (int)(cheatButtonSizeFactor * 1.0);
return result5;
}
case Def.ButtonGlyph.Cheat22:
{
TinyRect result4 = default(TinyRect);
result4.LeftX = (int)(cheatButtonSizeFactor * 1.0);
result4.RightX = (int)(cheatButtonSizeFactor * 2.0);
result4.TopY = (int)(cheatButtonSizeFactor * 1.0);
result4.BottomY = (int)(cheatButtonSizeFactor * 2.0);
return result4;
}
case Def.ButtonGlyph.Cheat31:
{
TinyRect result3 = default(TinyRect);
result3.LeftX = (int)(cheatButtonSizeFactor * 2.0);
result3.RightX = (int)(cheatButtonSizeFactor * 3.0);
result3.TopY = (int)(cheatButtonSizeFactor * 0.0);
result3.BottomY = (int)(cheatButtonSizeFactor * 1.0);
return result3;
}
case Def.ButtonGlyph.Cheat32:
{
TinyRect result2 = default(TinyRect);
result2.LeftX = (int)(cheatButtonSizeFactor * 2.0);
result2.RightX = (int)(cheatButtonSizeFactor * 3.0);
result2.TopY = (int)(cheatButtonSizeFactor * 1.0);
result2.BottomY = (int)(cheatButtonSizeFactor * 2.0);
return result2;
}
default:
return default(TinyRect);
}
}
private void StartAccel()
{
try
{
accelSensor.Start();
accelStarted = true;
}
catch (AccelerometerFailedException)
{
accelStarted = false;
}
catch (UnauthorizedAccessException)
{
accelStarted = false;
}
}
private void StopAccel()
{
if (accelStarted)
{
try
{
accelSensor.Stop();
}
catch (AccelerometerFailedException)
{
}
accelStarted = false;
}
}
private void HandleAccelSensorCurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
AccelerometerReading sensorReading = e.SensorReading;
float y = ((AccelerometerReading)(sensorReading)).Acceleration.Y;
float sensitivityThreshold = (1f - (float)gameData.AccelSensitivity) * 0.06f + 0.04f;
float adjustedThreshold = (accelLastState ? (sensitivityThreshold * 0.6f) : sensitivityThreshold);
if (y > adjustedThreshold)
{
accelSpeedX = 0.0 - Math.Min((double)y * 0.25 / (double)sensitivityThreshold + 0.25, 1.0);
}
else if (y < 0f - adjustedThreshold)
{
accelSpeedX = Math.Min((double)(0f - y) * 0.25 / (double)sensitivityThreshold + 0.25, 1.0);
}
else
{
accelSpeedX = 0.0;
}
accelLastState = accelSpeedX != 0.0;
if (accelWaitZero)
{
if (accelSpeedX == 0.0)
{
accelWaitZero = false;
}
else
{
accelSpeedX = 0.0;
}
}
}
}
}