WIP Flip improvements

This commit is contained in:
Buurazu authored and GitHub committed 2022-01-15 19:22:43 -05:00
1 parent 72eb284742
commit d79b29178b
1 file changed
+40 -2
+40 -2
View File
@@ -239,10 +239,10 @@ if REPENTANCE then
-- POST_PICKUP_INIT occurs right before the Flip item is decided, so it sets us up to watch for the Flip item
-- POST_NEW_ROOM then handles putting the result in the entity's GetData
local curFrame = Isaac.GetFrameCount()
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
if curFrame == lastGetItemResult[2] then
if initialItemNext then lastGetItemResult[1] = selectedCollectible
elseif flipItemNext then
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
elseif flipItemNext and lastGetItemResult[1] then
if EID.flipItemPositions[curRoomIndex] == nil then
EID.flipItemPositions[curRoomIndex] = {}
end
@@ -250,6 +250,24 @@ if REPENTANCE then
end
end
-- Check if Flip item pedestals have moved (restock/Greed shops)
-- BUG if you leave the room before the new shop item spawns??
if EID.flipItemPositions[curRoomIndex] then
local pedestals = Isaac.FindByType(5, 100, -1, true, false)
for _, pedestal in ipairs(pedestals) do
local gridPos = game:GetRoom():GetGridIndex(pedestal.Position)
local oldGridPos = pedestal:GetData()["EID_FlipItemPedestalGrid"]
print(gridPos) print(oldGridPos)
if EID.flipItemPositions[curRoomIndex][oldGridPos] and gridPos ~= oldGridPos then
print("chaing a position!")
EID.flipItemPositions[curRoomIndex][oldGridPos] = nil
EID.flipItemPositions[curRoomIndex][gridPos] = gridPos
pedestal:GetData()["EID_FlipItemPedestalGrid"] = gridPos
end
--index is unnecessary?
end
end
-- Handle Crane Game
if itemPoolType == ItemPoolType.POOL_CRANE_GAME then
for _, crane in ipairs(Isaac.FindByType(6, 16, -1, true, false)) do
@@ -286,6 +304,24 @@ if REPENTANCE then
if flipEntry then entity:GetData()["EID_FlipItemID"] = flipEntry end
end
EID:AddCallback(ModCallbacks.MC_POST_PICKUP_INIT, EID.postPickupInit)
function EID:preUseFlip(_)
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
if EID.flipItemPositions[curRoomIndex] then
local pedestals = Isaac.FindByType(5, 100, -1, true, false)
for _, pedestal in ipairs(pedestals) do
local gridPos = game:GetRoom():GetGridIndex(pedestal.Position)
if EID.flipItemPositions[curRoomIndex][gridPos] then
-- don't swap a flip shadow with an empty pedestal!
if pedestal.SubType == 0 then EID.flipItemPositions[curRoomIndex][gridPos] = nil
else EID.flipItemPositions[curRoomIndex][gridPos] = pedestal.SubType end
--postPickupInit will take care of assigning it to the entity's data
end
end
end
end
EID:AddCallback(ModCallbacks.MC_PRE_USE_ITEM, EID.preUseFlip, CollectibleType.COLLECTIBLE_FLIP)
end
---------------------------------------------------------------------------
@@ -460,6 +496,8 @@ if REPENTANCE then
local flipEntry = EID.flipItemPositions[curRoomIndex][gridPos]
if flipEntry then
pedestal:GetData()["EID_FlipItemID"] = flipEntry
pedestal:GetData()["EID_FlipItemPedestalIndex"] = pedestal.Index
pedestal:GetData()["EID_FlipItemPedestalGrid"] = gridPos
end
end
end