Skip to content

Commit

Permalink
v17 support
Browse files Browse the repository at this point in the history
  • Loading branch information
CSDotNET committed Jan 21, 2024
1 parent 10209e1 commit 3b81a96
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 10 deletions.
36 changes: 33 additions & 3 deletions TetrEnvironment/Info/FallInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -235,15 +235,23 @@ public void Next(Tetromino.MinoType? newMino)

if (_manager.GameData.Falling.Ihs)
{
//TODO: t.setoptions.display_hold && !t.setoptions.display_hold
_manager.GameData.Falling.Ihs = false;
if (!_manager.GameData.HoldLocked)
SwapHold();
}

if (_manager.GameData.Falling.Irs != 0)
_manager.HandleInfo.RotatePiece((spawnRotation + _manager.GameData.Falling.Irs) % 14);
{
_manager.HandleInfo.RotatePiece((spawnRotation + _manager.GameData.Falling.Irs) % 4);
_manager.GameData.Falling.Irs = 0;
}

_manager.GameData.Falling.Irs = 0;
_manager.GameData.Falling.Ihs = false;
if (_manager.GameData.Options.Version >= 17)
{
if (Is20G())
SlamToFloor();
}
}

public void SwapHold()
Expand Down Expand Up @@ -340,4 +348,26 @@ public Falling.SpinTypeKind IsTspin()

return spinType;
}

public bool Is20G()
{
if (_manager.GameData.Options.Version < 17)
throw new Exception(
"The 20G check should not be called before TETR.IO engine version 17.");

var boardHeight = _manager.GameData.Options.BoardHeight;
if (_manager.GameData.SoftDrop)
return _manager.GameData.Handling.SDF == 41 ||
_manager.GameData.Gravity * _manager.GameData.Handling.SDF >= boardHeight;
else
return _manager.GameData.Gravity >= boardHeight;
}

public void SlamToFloor()
{
var tempGravity = _manager.GameData.Gravity;
_manager.GameData.Gravity = int.MaxValue;
FallEvent(null, 1);
_manager.GameData.Gravity = tempGravity;
}
}
17 changes: 12 additions & 5 deletions TetrEnvironment/Info/HandleInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ public HandleInfo(Environment manager)
_manager = manager;
}

public void KeyDown(EventKeyInputData @event)
public void KeyDown(EventKeyInputData @event)
{
if ((int)@event.key < 8)
_manager.PressingKeys[(int)@event.key] = true;

if (@event.subframe > _manager.GameData.SubFrame)
{
_manager.HandleInfo.ProcessShift(false, @event.subframe - _manager.GameData.SubFrame);
Expand Down Expand Up @@ -140,7 +140,7 @@ public void KeyUp(EventKeyInputData @event)
{
if ((int)@event.key < 8)
_manager.PressingKeys[(int)@event.key] = false;

if (@event.subframe > _manager.GameData.SubFrame)
{
_manager.HandleInfo.ProcessShift(false, @event.subframe - _manager.GameData.SubFrame);
Expand Down Expand Up @@ -256,12 +256,13 @@ internal void RotatePiece(int newRotation)

if (_manager.GameData.Falling.Type == Constants.Tetromino.MinoType.O)
return;

var kicktable = _manager.Kickset.KICKSET_TABLE[currentNewRotation];

var kicktable = _manager.Kickset.KICKSET_TABLE[currentNewRotation];
if (_manager.GameData.Falling.Type == Constants.Tetromino.MinoType.I)
kicktable = _manager.Kickset.KICKSET_TABLE_I[currentNewRotation];

//if(_manager.GameData.Options.Version<17&&_manager.GameData.Options.kickset=="ARS")

for (var kicktableIndex = 0; kicktableIndex < kicktable.Length; kicktableIndex++)
{
var kicktableTest = kicktable[kicktableIndex];
Expand Down Expand Up @@ -351,6 +352,9 @@ private void ProcessLShift(bool value, double subFrameDiff = 1)
_manager.GameData.Falling.Last = Falling.LastKind.Move;
_manager.GameData.Falling.Clamped = false;

if (_manager.GameData.Options.Version >= 17 && _manager.FallInfo.Is20G())
_manager.FallInfo.SlamToFloor();

if (++_manager.GameData.Falling.LockResets < 15 || _manager.GameData.Options.InfiniteMovement)
_manager.GameData.Falling.Locking = 0;
}
Expand Down Expand Up @@ -404,6 +408,9 @@ private void ProcessRShift(bool value, double subFrameDiff = 1)
_manager.GameData.Falling.Last = Falling.LastKind.Move;
_manager.GameData.Falling.Clamped = false;

if (_manager.GameData.Options.Version >= 17 && _manager.FallInfo.Is20G())
_manager.FallInfo.SlamToFloor();

if (++_manager.GameData.Falling.LockResets < 15 || _manager.GameData.Options.InfiniteMovement)
_manager.GameData.Falling.Locking = 0;
}
Expand Down
4 changes: 2 additions & 2 deletions TetrEnvironment/Options.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class Options
public bool Shielded { get; internal set; }
public bool HasGarbage { get; internal set; }
public int GarbageCapMax { get; internal set; }

public int BoardHeight { get; internal set; }
public bool ClipListenIDs { get; internal set; }

public Options(EventFullOptionsData fullOptionsData)
Expand All @@ -58,7 +58,7 @@ public Options(EventFullOptionsData fullOptionsData)
GSpeed = fullOptionsData.gspeed ?? 0.007;
LevelSpeed = fullOptionsData.levelspeed ?? 0.42;
MasterLevels = fullOptionsData.masterlevels ?? false;

BoardHeight = fullOptionsData.boardheight ?? 20;
Version = fullOptionsData.version;
GravityIncrease = fullOptionsData.gincrease ?? 0;
GravityMargin = fullOptionsData.gmargin ?? 0;
Expand Down

0 comments on commit 3b81a96

Please sign in to comment.