mirror of
https://github.com/SashLilac/cambridge.git
synced 2024-11-22 12:59:02 -06:00
Race 40 added to main game, PAIRS moved to modpack
This commit is contained in:
parent
716de2814b
commit
4c4a818c5c
155
tetris/modes/race_40.lua
Normal file
155
tetris/modes/race_40.lua
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
require 'funcs'
|
||||||
|
|
||||||
|
local GameMode = require 'tetris.modes.gamemode'
|
||||||
|
local Piece = require 'tetris.components.piece'
|
||||||
|
|
||||||
|
local Bag7Randomiser = require 'tetris.randomizers.bag7noSZOstart'
|
||||||
|
|
||||||
|
local Race40Game = GameMode:extend()
|
||||||
|
|
||||||
|
Race40Game.name = "Race 40"
|
||||||
|
Race40Game.hash = "Race40"
|
||||||
|
Race40Game.tagline = "How fast can you clear 40 lines?"
|
||||||
|
|
||||||
|
|
||||||
|
function Race40Game:new()
|
||||||
|
Race40Game.super:new()
|
||||||
|
|
||||||
|
self.lines = 0
|
||||||
|
self.line_goal = 40
|
||||||
|
self.pieces = 0
|
||||||
|
self.randomizer = Bag7Randomiser()
|
||||||
|
|
||||||
|
self.roll_frames = 0
|
||||||
|
|
||||||
|
self.SGnames = {
|
||||||
|
[0] = "",
|
||||||
|
"9", "8", "7", "6", "5", "4", "3", "2", "1",
|
||||||
|
"S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9",
|
||||||
|
"GM"
|
||||||
|
}
|
||||||
|
self.upstacked = false
|
||||||
|
|
||||||
|
self.lock_drop = true
|
||||||
|
self.lock_hard_drop = true
|
||||||
|
self.instant_hard_drop = true
|
||||||
|
self.instant_soft_drop = false
|
||||||
|
self.enable_hold = true
|
||||||
|
self.next_queue_length = 6
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getDropSpeed()
|
||||||
|
return 20
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getARR()
|
||||||
|
return config.arr
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getARE()
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getLineARE()
|
||||||
|
return self:getARE()
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getDasLimit()
|
||||||
|
return config.das
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getLineClearDelay()
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getLockDelay()
|
||||||
|
return 30
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getGravity()
|
||||||
|
return 1/64
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getDasCutDelay()
|
||||||
|
return config.dcd
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:advanceOneFrame()
|
||||||
|
if self.clear then
|
||||||
|
self.roll_frames = self.roll_frames + 1
|
||||||
|
if self.roll_frames > 150 then
|
||||||
|
self.completed = true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
elseif self.ready_frames == 0 then
|
||||||
|
self.frames = self.frames + 1
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:onPieceLock()
|
||||||
|
self.super:onPieceLock()
|
||||||
|
self.pieces = self.pieces + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:onLineClear(cleared_row_count)
|
||||||
|
if not self.clear then
|
||||||
|
self.lines = self.lines + cleared_row_count
|
||||||
|
if self.lines >= self.line_goal then
|
||||||
|
self.clear = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:drawGrid(ruleset)
|
||||||
|
self.grid:draw()
|
||||||
|
if self.piece ~= nil then
|
||||||
|
self:drawGhostPiece(ruleset)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getHighscoreData()
|
||||||
|
return {
|
||||||
|
level = self.level,
|
||||||
|
frames = self.frames,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getSecretGrade(sg)
|
||||||
|
if sg == 19 then self.upstacked = true end
|
||||||
|
if self.upstacked then return self.SGnames[14 + math.floor((20 - sg) / 4)]
|
||||||
|
else return self.SGnames[math.floor((sg / 19) * 14)] end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:drawScoringInfo()
|
||||||
|
Race40Game.super.drawScoringInfo(self)
|
||||||
|
love.graphics.setColor(1, 1, 1, 1)
|
||||||
|
|
||||||
|
local text_x = config["side_next"] and 320 or 240
|
||||||
|
|
||||||
|
love.graphics.setFont(font_3x5_2)
|
||||||
|
love.graphics.printf("NEXT", 64, 40, 40, "left")
|
||||||
|
love.graphics.printf("LINES", text_x, 320, 40, "left")
|
||||||
|
love.graphics.printf("line/min", text_x, 160, 80, "left")
|
||||||
|
love.graphics.printf("piece/sec", text_x, 220, 80, "left")
|
||||||
|
local sg = self.grid:checkSecretGrade()
|
||||||
|
if sg >= 7 or self.upstacked then
|
||||||
|
love.graphics.printf("SECRET GRADE", 240, 430, 180, "left")
|
||||||
|
end
|
||||||
|
|
||||||
|
love.graphics.setFont(font_3x5_3)
|
||||||
|
love.graphics.printf(string.format("%.02f", self.lines / math.max(1, self.frames) * 3600), text_x, 180, 80, "left")
|
||||||
|
love.graphics.printf(string.format("%.04f", self.pieces / math.max(1, self.frames) * 60), text_x, 240, 80, "left")
|
||||||
|
if sg >= 7 or self.upstacked then
|
||||||
|
love.graphics.printf(self:getSecretGrade(sg), 240, 450, 180, "left")
|
||||||
|
end
|
||||||
|
|
||||||
|
love.graphics.setFont(font_3x5_4)
|
||||||
|
love.graphics.printf(math.max(0, self.line_goal - self.lines), text_x, 340, 40, "left")
|
||||||
|
end
|
||||||
|
|
||||||
|
function Race40Game:getBackground()
|
||||||
|
return 2
|
||||||
|
end
|
||||||
|
|
||||||
|
return Race40Game
|
@ -1,258 +0,0 @@
|
|||||||
local Ruleset = require 'tetris.rulesets.ruleset'
|
|
||||||
|
|
||||||
local PAIRS = Ruleset:extend()
|
|
||||||
|
|
||||||
PAIRS.name = "PAIRS"
|
|
||||||
PAIRS.hash = "PAIRS"
|
|
||||||
PAIRS.world = true
|
|
||||||
|
|
||||||
PAIRS.spawn_positions = {
|
|
||||||
[1] = { x=4, y=4 },
|
|
||||||
[2] = { x=4, y=5 },
|
|
||||||
[3] = { x=4, y=5 },
|
|
||||||
[4] = { x=4, y=5 },
|
|
||||||
[5] = { x=5, y=5 },
|
|
||||||
[6] = { x=5, y=5 },
|
|
||||||
[7] = { x=5, y=5 },
|
|
||||||
[8] = { x=5, y=5 },
|
|
||||||
[9] = { x=5, y=5 },
|
|
||||||
[10] = { x=5, y=5 },
|
|
||||||
[11] = { x=4, y=5 },
|
|
||||||
[12] = { x=4, y=5 },
|
|
||||||
[13] = { x=4, y=5 },
|
|
||||||
[14] = { x=4, y=5 },
|
|
||||||
[15] = { x=4, y=5 },
|
|
||||||
[16] = { x=4, y=5 },
|
|
||||||
[17] = { x=4, y=5 },
|
|
||||||
[18] = { x=4, y=5 },
|
|
||||||
}
|
|
||||||
|
|
||||||
PAIRS.big_spawn_positions = {
|
|
||||||
[1] = { x=2, y=2 },
|
|
||||||
[2] = { x=2, y=3 },
|
|
||||||
[3] = { x=2, y=3 },
|
|
||||||
[4] = { x=2, y=3 },
|
|
||||||
[5] = { x=3, y=3 },
|
|
||||||
[6] = { x=3, y=3 },
|
|
||||||
[7] = { x=3, y=3 },
|
|
||||||
[8] = { x=3, y=3 },
|
|
||||||
[9] = { x=3, y=3 },
|
|
||||||
[10] = { x=3, y=3 },
|
|
||||||
[11] = { x=2, y=3 },
|
|
||||||
[12] = { x=2, y=3 },
|
|
||||||
[13] = { x=2, y=3 },
|
|
||||||
[14] = { x=2, y=3 },
|
|
||||||
[15] = { x=2, y=3 },
|
|
||||||
[16] = { x=2, y=3 },
|
|
||||||
[17] = { x=2, y=3 },
|
|
||||||
[18] = { x=2, y=3 },
|
|
||||||
}
|
|
||||||
|
|
||||||
PAIRS.next_sounds = {
|
|
||||||
[1] = "I",
|
|
||||||
[2] = "O",
|
|
||||||
[3] = "S",
|
|
||||||
[4] = "Z",
|
|
||||||
[5] = "L",
|
|
||||||
[6] = "J",
|
|
||||||
[7] = "Z",
|
|
||||||
[8] = "S",
|
|
||||||
[9] = "J",
|
|
||||||
[10] = "L",
|
|
||||||
[11] = "O",
|
|
||||||
[12] = "O",
|
|
||||||
[13] = "T",
|
|
||||||
[14] = "L",
|
|
||||||
[15] = "J",
|
|
||||||
[16] = "T",
|
|
||||||
[17] = "J",
|
|
||||||
[18] = "I"
|
|
||||||
}
|
|
||||||
|
|
||||||
PAIRS.colourscheme = {
|
|
||||||
[1] = "R",
|
|
||||||
[2] = "C",
|
|
||||||
[3] = "G",
|
|
||||||
[4] = "M",
|
|
||||||
[5] = "O",
|
|
||||||
[6] = "C",
|
|
||||||
[7] = "G",
|
|
||||||
[8] = "M",
|
|
||||||
[9] = "G",
|
|
||||||
[10] = "M",
|
|
||||||
[11] = "Y",
|
|
||||||
[12] = "B",
|
|
||||||
[13] = "M",
|
|
||||||
[14] = "O",
|
|
||||||
[15] = "B",
|
|
||||||
[16] = "G",
|
|
||||||
[17] = "C",
|
|
||||||
[18] = "R"
|
|
||||||
}
|
|
||||||
|
|
||||||
PAIRS.pieces = 18
|
|
||||||
|
|
||||||
PAIRS.block_offsets = {
|
|
||||||
[1]={
|
|
||||||
{ {x=-2, y=0}, {x=-1, y=0}, {x=0, y=0}, {x=1, y=0}, {x=2, y=0} },
|
|
||||||
{ {x=0, y=-2}, {x=0, y=-1}, {x=0, y=0}, {x=0, y=1}, {x=0, y=2} },
|
|
||||||
{ {x=-2, y=0}, {x=-1, y=0}, {x=0, y=0}, {x=1, y=0}, {x=2, y=0} },
|
|
||||||
{ {x=0, y=-2}, {x=0, y=-1}, {x=0, y=0}, {x=0, y=1}, {x=0, y=2} },
|
|
||||||
},
|
|
||||||
[2]={
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-1}, {x=-1, y=-1} },
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-1}, {x=-1, y=-1} },
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-1}, {x=-1, y=-1} },
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-1}, {x=-1, y=-1} },
|
|
||||||
},
|
|
||||||
[3]={
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-2}, {x=-1, y=0} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=-1}, {x=1, y=-1}, {x=1, y=0}, {x=-1, y=-2} },
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-2}, {x=-1, y=0} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=-1}, {x=1, y=-1}, {x=1, y=0}, {x=-1, y=-2} },
|
|
||||||
},
|
|
||||||
[4]={
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=0}, {x=-1, y=-2} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=-1}, {x=1, y=-1}, {x=-1, y=0}, {x=1, y=-2} },
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=0}, {x=-1, y=-2} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=-1}, {x=1, y=-1}, {x=-1, y=0}, {x=1, y=-2} },
|
|
||||||
},
|
|
||||||
[5]={
|
|
||||||
{ {x=1, y=-1}, {x=-2, y=0}, {x=-1, y=0}, {x=0, y=0}, {x=1, y=0} },
|
|
||||||
{ {x=0, y=0}, {x=-1, y=-3}, {x=-1, y=-2}, {x=-1, y=-1}, {x=-1, y=0} },
|
|
||||||
{ {x=-2, y=0}, {x=-2, y=-1}, {x=-1, y=-1}, {x=0, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=-1, y=-3}, {x=0, y=-3}, {x=0, y=-2}, {x=0, y=-1}, {x=0, y=0} },
|
|
||||||
},
|
|
||||||
[6]={
|
|
||||||
{ {x=-2, y=-1}, {x=-2, y=0}, {x=-1, y=0}, {x=0, y=0}, {x=1, y=0} },
|
|
||||||
{ {x=0, y=-3}, {x=-1, y=-3}, {x=-1, y=-2}, {x=-1, y=-1}, {x=-1, y=0} },
|
|
||||||
{ {x=1, y=0}, {x=-2, y=-1}, {x=-1, y=-1}, {x=0, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=-1, y=0}, {x=0, y=-3}, {x=0, y=-2}, {x=0, y=-1}, {x=0, y=0} },
|
|
||||||
},
|
|
||||||
[7]={
|
|
||||||
{ {x=-2, y=-1}, {x=-1, y=-1}, {x=-1, y=0}, {x=0, y=0}, {x=1, y=0} },
|
|
||||||
{ {x=0, y=-3}, {x=0, y=-2}, {x=-1, y=-2}, {x=-1, y=-1}, {x=-1, y=0} },
|
|
||||||
{ {x=-2, y=-1}, {x=-1, y=-1}, {x=0, y=-1}, {x=0, y=0}, {x=1, y=0} },
|
|
||||||
{ {x=-1, y=0}, {x=0, y=-3}, {x=0, y=-2}, {x=0, y=-1}, {x=-1, y=-1} },
|
|
||||||
},
|
|
||||||
[8]={
|
|
||||||
{ {x=1, y=-1}, {x=-2, y=0}, {x=-1, y=0}, {x=0, y=0}, {x=0, y=-1} },
|
|
||||||
{ {x=0, y=0}, {x=-1, y=-3}, {x=-1, y=-2}, {x=-1, y=-1}, {x=0, y=-1} },
|
|
||||||
{ {x=-2, y=0}, {x=-1, y=0}, {x=-1, y=-1}, {x=0, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=-1, y=-3}, {x=-1, y=-2}, {x=0, y=-2}, {x=0, y=-1}, {x=0, y=0} },
|
|
||||||
},
|
|
||||||
[9]={
|
|
||||||
{ {x=-1, y=-1}, {x=-2, y=0}, {x=-1, y=0}, {x=0, y=0}, {x=1, y=0} },
|
|
||||||
{ {x=0, y=-2}, {x=-1, y=-3}, {x=-1, y=-2}, {x=-1, y=-1}, {x=-1, y=0} },
|
|
||||||
{ {x=0, y=0}, {x=-2, y=-1}, {x=-1, y=-1}, {x=0, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=-1, y=-1}, {x=0, y=-3}, {x=0, y=-2}, {x=0, y=-1}, {x=0, y=0} },
|
|
||||||
},
|
|
||||||
[10]={
|
|
||||||
{ {x=0, y=-1}, {x=-2, y=0}, {x=-1, y=0}, {x=0, y=0}, {x=1, y=0} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=-3}, {x=-1, y=-2}, {x=-1, y=-1}, {x=-1, y=0} },
|
|
||||||
{ {x=-1, y=0}, {x=-2, y=-1}, {x=-1, y=-1}, {x=0, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=-1, y=-2}, {x=0, y=-3}, {x=0, y=-2}, {x=0, y=-1}, {x=0, y=0} },
|
|
||||||
},
|
|
||||||
[11]={
|
|
||||||
{ {x=0, y=0}, {x=-1, y=0}, {x=1, y=0}, {x=0, y=-1}, {x=-1, y=-1} },
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=1, y=-1}, {x=1, y=-2} },
|
|
||||||
{ {x=0, y=0}, {x=1, y=-1}, {x=1, y=0}, {x=0, y=-1}, {x=-1, y=-1} },
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=-1, y=-1}, {x=-1, y=0} },
|
|
||||||
},
|
|
||||||
[12]={
|
|
||||||
{ {x=0, y=0}, {x=1, y=-1}, {x=1, y=0}, {x=0, y=-1}, {x=-1, y=0} },
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=1, y=-1}, {x=1, y=0} },
|
|
||||||
{ {x=0, y=0}, {x=-1, y=0}, {x=1, y=-1}, {x=0, y=-1}, {x=-1, y=-1} },
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=-1, y=-1}, {x=-1, y=-2} },
|
|
||||||
},
|
|
||||||
[13]={
|
|
||||||
{ {x=0, y=0}, {x=-1, y=0}, {x=1, y=0}, {x=-1, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=1, y=0}, {x=1, y=-2} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=0}, {x=1, y=0}, {x=-1, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=-1, y=0}, {x=-1, y=-2} },
|
|
||||||
},
|
|
||||||
[14]={
|
|
||||||
{ {x=0, y=-1}, {x=0, y=0}, {x=0, y=-2}, {x=-1, y=-1}, {x=1, y=0} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=-1}, {x=1, y=-1}, {x=0, y=-2}, {x=-1, y=0} },
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-1}, {x=-1, y=-2} },
|
|
||||||
{ {x=0, y=-1}, {x=1, y=-1}, {x=-1, y=-1}, {x=0, y=0}, {x=1, y=-2} },
|
|
||||||
},
|
|
||||||
[15]={
|
|
||||||
{ {x=0, y=-1}, {x=0, y=0}, {x=0, y=-2}, {x=-1, y=0}, {x=1, y=-1} },
|
|
||||||
{ {x=0, y=-1}, {x=-1, y=-1}, {x=1, y=-1}, {x=-1, y=-2}, {x=0, y=0} },
|
|
||||||
{ {x=0, y=-1}, {x=0, y=-2}, {x=0, y=0}, {x=1, y=-2}, {x=-1, y=-1} },
|
|
||||||
{ {x=0, y=-1}, {x=1, y=-1}, {x=-1, y=-1}, {x=1, y=0}, {x=0, y=-2} },
|
|
||||||
},
|
|
||||||
[16]={
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=-1, y=0}, {x=1, y=0} },
|
|
||||||
{ {x=-1, y=0}, {x=0, y=-1}, {x=-1, y=-2}, {x=-1, y=-1}, {x=1, y=-1} },
|
|
||||||
{ {x=0, y=0}, {x=0, y=-1}, {x=0, y=-2}, {x=-1, y=-2}, {x=1, y=-2} },
|
|
||||||
{ {x=1, y=0}, {x=0, y=-1}, {x=1, y=-2}, {x=-1, y=-1}, {x=1, y=-1} },
|
|
||||||
},
|
|
||||||
[17]={
|
|
||||||
{ {x=0, y=0}, {x=1, y=0}, {x=-1, y=0}, {x=-1, y=-1}, {x=-1, y=-2} },
|
|
||||||
{ {x=0, y=-2}, {x=1, y=-2}, {x=-1, y=0}, {x=-1, y=-1}, {x=-1, y=-2} },
|
|
||||||
{ {x=0, y=-2}, {x=1, y=0}, {x=-1, y=-2}, {x=1, y=-1}, {x=1, y=-2} },
|
|
||||||
{ {x=0, y=0}, {x=1, y=0}, {x=-1, y=0}, {x=1, y=-1}, {x=1, y=-2} },
|
|
||||||
},
|
|
||||||
[18]={
|
|
||||||
{ {x=1, y=0}, {x=0, y=0}, {x=0, y=-1}, {x=-1, y=-1}, {x=-1, y=-2} },
|
|
||||||
{ {x=-1, y=0}, {x=-1, y=-1}, {x=0, y=-1}, {x=0, y=-2}, {x=1, y=-2} },
|
|
||||||
{ {x=-1, y=-2}, {x=0, y=-2}, {x=0, y=-1}, {x=1, y=-1}, {x=1, y=0} },
|
|
||||||
{ {x=1, y=-2}, {x=1, y=-1}, {x=0, y=-1}, {x=0, y=0}, {x=-1, y=0} },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
PAIRS.wallkicks = {
|
|
||||||
{x=1, y=0}, {x=-1, y=0}, {x=2, y=0}, {x=-2, y=0}, {x=0, y=-1}
|
|
||||||
}
|
|
||||||
|
|
||||||
function PAIRS:attemptWallkicks(piece, new_piece, rot_dir, grid)
|
|
||||||
if (piece.shape == 2) then return end
|
|
||||||
|
|
||||||
local kicks = PAIRS.wallkicks
|
|
||||||
|
|
||||||
assert(piece.rotation ~= new_piece.rotation)
|
|
||||||
|
|
||||||
for idx, offset in pairs(kicks) do
|
|
||||||
kicked_piece = new_piece:withOffset(offset)
|
|
||||||
if grid:canPlacePiece(kicked_piece) then
|
|
||||||
self:onPieceRotate(piece, grid)
|
|
||||||
piece:setRelativeRotation(rot_dir)
|
|
||||||
piece:setOffset(offset)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function PAIRS:checkNewLow(piece)
|
|
||||||
for _, block in pairs(piece:getBlockOffsets()) do
|
|
||||||
local y = piece.position.y + block.y
|
|
||||||
if y > piece.lowest_y then
|
|
||||||
piece.lock_delay = 0
|
|
||||||
piece.lowest_y = y
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function PAIRS:onPieceCreate(piece, grid)
|
|
||||||
piece.lowest_y = -math.huge
|
|
||||||
end
|
|
||||||
|
|
||||||
function PAIRS:onPieceDrop(piece, grid)
|
|
||||||
self:checkNewLow(piece)
|
|
||||||
end
|
|
||||||
|
|
||||||
function PAIRS:get180RotationValue()
|
|
||||||
return 3
|
|
||||||
end
|
|
||||||
|
|
||||||
function PAIRS:getAboveFieldOffset(shape, orientation)
|
|
||||||
if shape == 1 then
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return 2
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return PAIRS
|
|
Loading…
Reference in New Issue
Block a user