private void UnloadButton_Click(object sender, EventArgs e) { if (!CurrentAddress.HasValue) { return; } MarioActions.UnloadObject(_stream, CurrentAddress.Value); }
private void MoveToMarioButton_Click(object sender, EventArgs e) { if (!CurrentAddress.HasValue) { return; } MarioActions.MoveObjectToMario(_stream, CurrentAddress.Value); }
private void CloneButton_Click(object sender, EventArgs e) { if (!CurrentAddress.HasValue) { return; } if (_unclone) { MarioActions.UnCloneObject(_stream, CurrentAddress.Value); } else { MarioActions.CloneObject(_stream, CurrentAddress.Value); } }
public void OnSlotDropAction(DropAction dropAction, ObjectSlot objSlot) { switch (dropAction.Action) { case DropAction.ActionType.Mario: // Move mario to object var objectAddress = objSlot.Address; MarioActions.MoveMarioToObject(_stream, objectAddress); break; case DropAction.ActionType.Object: break; default: return; } }
private void OnDrop(object sender, DragEventArgs e) { // Make sure we have valid Drag and Drop data (it is an index) if (!e.Data.GetDataPresent(typeof(DropAction))) { return; } var dropAction = ((DropAction)e.Data.GetData(typeof(DropAction))); if (dropAction.Action != DropAction.ActionType.Object) { return; } MarioActions.MoveObjectToMario(_stream, dropAction.Address); }
private void GoToV1Button_Click(object sender, EventArgs e) { MarioActions.GoToTriangle(_stream, _triangleAddress, 1, _useMisalignmentOffset); }
private void RetrieveTriangleButton_Click(object sender, EventArgs e) { MarioActions.RetrieveTriangle(_stream, _triangleAddress); }
private void ProcessSpecialVars() { var floorY = BitConverter.ToSingle(_stream.ReadRam(Config.Mario.StructAddress + Config.Mario.GroundYOffset, 4), 0); float marioX, marioY, marioZ; marioX = BitConverter.ToSingle(_stream.ReadRam(Config.Mario.StructAddress + Config.Mario.XOffset, 4), 0); marioY = BitConverter.ToSingle(_stream.ReadRam(Config.Mario.StructAddress + Config.Mario.YOffset, 4), 0); marioZ = BitConverter.ToSingle(_stream.ReadRam(Config.Mario.StructAddress + Config.Mario.ZOffset, 4), 0); float normX, normY, normZ, normOffset; normX = BitConverter.ToSingle(_stream.ReadRam(TriangleAddress + Config.TriangleOffsets.NormX, 4), 0); normY = BitConverter.ToSingle(_stream.ReadRam(TriangleAddress + Config.TriangleOffsets.NormY, 4), 0); normZ = BitConverter.ToSingle(_stream.ReadRam(TriangleAddress + Config.TriangleOffsets.NormZ, 4), 0); normOffset = BitConverter.ToSingle(_stream.ReadRam(TriangleAddress + Config.TriangleOffsets.Offset, 4), 0); var uphillAngle = (Math.Atan2(normZ, normX) / Math.PI + 0.5) / 2 * 65536; if (normX == 0 && normZ == 0) { uphillAngle = double.NaN; } if (normY < -0.01) { uphillAngle += 32768; } foreach (DataContainer specialVar in _specialWatchVars) { switch (specialVar.SpecialName) { case "DistanceAboveFloor": specialVar.Text = (marioY - floorY).ToString(); break; case "DistanceBelowCeiling": specialVar.Text = (BitConverter.ToSingle(_stream.ReadRam(Config.Mario.StructAddress + Config.Mario.CeilingYOffset, 4), 0) - marioY).ToString(); break; case "ClosestVertex": specialVar.Text = String.Format("V{0}", MarioActions.GetClosestVertex(_stream, TriangleAddress)); goto case "CheckTriangleExists"; case "UpHillAngle": specialVar.Text = FixAngle(uphillAngle).ToString(); goto case "CheckTriangleExists"; case "DownHillAngle": specialVar.Text = FixAngle(uphillAngle + 32768).ToString(); goto case "CheckTriangleExists"; case "RightHillAngle": specialVar.Text = FixAngle(uphillAngle - 16384).ToString(); goto case "CheckTriangleExists"; case "LeftHillAngle": specialVar.Text = FixAngle(uphillAngle + 16384).ToString(); goto case "CheckTriangleExists"; case "Classification": if (normY > 0.01) { specialVar.Text = "Floor"; } else if (normY < -0.01) { specialVar.Text = "Ceiling"; } else { specialVar.Text = "Wall"; } goto case "CheckTriangleExists"; case "Steepness": specialVar.Text = (65536 / (Math.PI * 2) * Math.Acos(normY)).ToString(); goto case "CheckTriangleExists"; case "NormalDistAway": specialVar.Text = (marioX * normX + marioY * normY + marioZ * normZ + normOffset).ToString(); goto case "CheckTriangleExists"; case "VerticalDistAway": specialVar.Text = (marioY + (marioX * normX + marioZ * normZ + normOffset) / normY).ToString(); goto case "CheckTriangleExists"; case "HeightOnSlope": specialVar.Text = ((-marioX * normX - marioZ * normZ - normOffset) / normY).ToString(); goto case "CheckTriangleExists"; // Special case "CheckTriangleExists": if (TriangleAddress == 0x0000) { specialVar.Text = "(none)"; break; } break; } } }
private void buttonFill_Click(object sender, EventArgs e) { MarioActions.RefillHp(_stream); }
private void buttonDie_Click(object sender, EventArgs e) { MarioActions.Die(_stream); }
private void buttonStandardHud_Click(object sender, EventArgs e) { MarioActions.StandardHud(_stream); }