Skip to content
This repository has been archived by the owner on Jan 4, 2023. It is now read-only.

Commit

Permalink
Change tile flag to byte, cleaning up tilemap export, and fixing bugs…
Browse files Browse the repository at this point in the history
… in settings tool.
  • Loading branch information
jessefreeman committed Apr 24, 2020
1 parent 3578673 commit 30a323e
Show file tree
Hide file tree
Showing 23 changed files with 954 additions and 285 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,9 @@ function EditorUI:ClearGroupSelections(data)
buttonData = data.buttons[i]
if(buttonData ~= nil)then
-- TODO this will accidentally enable disabled buttons. Need to check that they are selected and disabled
self:Enable(buttonData, true)
if(buttonData.selected and buttonData.enabled == false) then
self:Enable(buttonData, true)
end
buttonData.selected = false
buttonData.invalid = true
end
Expand Down
10 changes: 1 addition & 9 deletions Disks/PixelVisionOS/System/Tools/ChipEditor/saves.json
Original file line number Diff line number Diff line change
@@ -1,9 +1 @@
{

"GameChip":
{
"savedData":{

}
}
}
{"GameChip":{"savedData":{}}}
4 changes: 2 additions & 2 deletions Disks/PixelVisionOS/System/Tools/ColorTool/saves.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"savedData":{
"selectedPalettePage": "0",
"selectedSpritePage": "1",
"sessionID": "202004022111567560",
"rootDirectory": "/Workspace/ArtPacks/DragonSweeper/",
"sessionID": "202004220556525425",
"rootDirectory": "/Workspace/MyFirstGame/",
"selectedColor": "-1",
"selectedPalette": "-1",
"selectedSprite": "-1"
Expand Down
125 changes: 125 additions & 0 deletions Disks/PixelVisionOS/System/Tools/SettingsTool/code-key-code-map.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
-- List of all the valid keys
keyCodeMap = {
{name = None, keyCode = 0, char = ""},
{name = Backspace, keyCode = 8, char = "!"},
{name = Tab, keyCode = 9, char = "@"},
{name = Enter, keyCode = 13, char = "#"},
{name = Space, keyCode = 32, char = "%"},
{name = Left, keyCode = 37, char = "^"},
{name = Up, keyCode = 38, char = "&"},
{name = Right, keyCode = 39, char = "*"},
{name = Down, keyCode = 40, char = "("},
{name = Delete, keyCode = 46, char = ")"},
{name = Alpha0, keyCode = 48, char = "0"},
{name = Alpha1, keyCode = 49, char = "1"},
{name = Alpha2, keyCode = 50, char = "2"},
{name = Alpha3, keyCode = 51, char = "3"},
{name = Alpha4, keyCode = 52, char = "4"},
{name = Alpha5, keyCode = 53, char = "5"},
{name = Alpha6, keyCode = 54, char = "6"},
{name = Alpha7, keyCode = 55, char = "7"},
{name = Alpha8, keyCode = 56, char = "8"},
{name = Alpha9, keyCode = 57, char = "9"},
{name = A, keyCode = 65, char = "A"},
{name = B, keyCode = 66, char = "B"},
{name = C, keyCode = 67, char = "C"},
{name = D, keyCode = 68, char = "D"},
{name = E, keyCode = 69, char = "E"},
{name = F, keyCode = 70, char = "F"},
{name = G, keyCode = 71, char = "G"},
{name = H, keyCode = 72, char = "H"},
{name = I, keyCode = 73, char = "I"},
{name = J, keyCode = 74, char = "J"},
{name = K, keyCode = 75, char = "K"},
{name = L, keyCode = 76, char = "L"},
{name = M, keyCode = 77, char = "M"},
{name = N, keyCode = 78, char = "N"},
{name = O, keyCode = 79, char = "O"},
{name = P, keyCode = 80, char = "P"},
{name = Q, keyCode = 81, char = "Q"},
{name = R, keyCode = 82, char = "R"},
{name = S, keyCode = 83, char = "S"},
{name = T, keyCode = 84, char = "T"},
{name = U, keyCode = 85, char = "U"},
{name = V, keyCode = 86, char = "V"},
{name = W, keyCode = 87, char = "W"},
{name = X, keyCode = 88, char = "X"},
{name = Y, keyCode = 89, char = "Y"},
{name = Z, keyCode = 90, char = "Z"},
{name = LeftShift, keyCode = 160, char = "}"},
{name = RightShift, keyCode = 161, char = "~"},
{name = Semicolon, keyCode = 186, char = ";"},
{name = Plus, keyCode = 187, char = "+"},
{name = Comma, keyCode = 188, char = ","},
{name = Minus, keyCode = 189, char = "-"},
{name = Period, keyCode = 190, char = "."},
{name = Question, keyCode = 191, char = "/"},
{name = Tilde, keyCode = 192, char = "`"},
{name = OpenBrackets, keyCode = 219, char = "["},
{name = Pipe, keyCode = 220, char = "\\"},
{name = CloseBrackets, keyCode = 221, char = "]"},
{name = Quotes, keyCode = 222, char = "'"},
}


shortcutKeys = {
"RunGameKey",
"ScreenshotKey",
"RecordKey",
"RestartKey"
}

player1Keys = {
"Player1UpKey",
"Player1DownKey",
"Player1LeftKey",
"Player1RightKey",
"Player1SelectKey",
"Player1StartKey",
"Player1AKey",
"Player1BKey"
}

player2Keys = {
"Player2UpKey",
"Player2DownKey",
"Player2LeftKey",
"Player2RightKey",
"Player2SelectKey",
"Player2StartKey",
"Player2AKey",
"Player2BKey"
}

player1Buttons = {
"Player1UpButton",
"Player1DownButton",
"Player1LeftButton",
"Player1RightButton",
"Player1SelectButton",
"Player1StartButton",
"Player1AButton",
"Player1BButton"
}

player2Buttons = {
"Player2UpButton",
"Player2DownButton",
"Player2LeftButton",
"Player2RightButton",
"Player2SelectButton",
"Player2StartButton",
"Player2AButton",
"Player2BButton",
}

buttonTypes = {
"Up",
"Down",
"Left",
"Right",
"A",
"B",
"Select",
"Start"
}
177 changes: 177 additions & 0 deletions Disks/PixelVisionOS/System/Tools/SettingsTool/code-settings-tool.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
-- Create table to store the workspace tool logic
SettingsTool = {}
SettingsTool.__index = SettingsTool

LoadScript("code-key-code-map")

function SettingsTool:Init()

-- Create an global instance of the Pixel Vision OS
pixelVisionOS = PixelVisionOS:Init()

-- Used for debugging
-- pixelVisionOS.displayFPS = true

-- Get a global reference to the Editor UI
editorUI = pixelVisionOS.editorUI

-- Create a new table for the instance with default properties
local _settingTool = {
toolName = "System Settings",
runnerName = SystemName(),
rootPath = ReadMetadata("RootPath", "/"),
invalid = true,
SaveShortcut = 6
}

-- Create a global reference of the new workspace tool
setmetatable(_settingTool, SettingsTool)

-- Update title if it running from the disk
if(string.starts(_settingTool.rootPath, "/Disks/")) then
_settingTool.toolName = _settingTool.toolName .. " (DISK)"
end

-- Change the title
pixelVisionOS:ChangeTitle(_settingTool.toolName, "toolbaricontool")

_settingTool:CreateDropDownMenu()

-- Return the new instance of the editor ui
return _settingTool

end

function SettingsTool:Update(timeDelta)

end

-- function SettingsTool:Draw()

-- end

function SettingsTool:InvalidateData()

-- Only everything if it needs to be
if(invalid == true)then
return
end

pixelVisionOS:ChangeTitle(toolName .."*", "toolbaricontool")

invalid = true

pixelVisionOS:EnableMenuItem(self.SaveShortcut, true)

end

function SettingsTool:ResetDataValidation()

-- Only everything if it needs to be
if(invalid == false)then
return
end

pixelVisionOS:ChangeTitle(toolName, "toolbaricontool")
invalid = false

pixelVisionOS:EnableMenuItem(self.SaveShortcut, false)

end

function SettingsTool:CreateDropDownMenu()

local menuOptions =
{
-- About ID 1
{name = "About", action = function() pixelVisionOS:ShowAboutModal(toolName) end, toolTip = "Learn about PV8."},
{divider = true},
{name = "Sound Effects", action = ToggleSoundEffects, toolTip = "Toggle system sound."}, -- Reset all the values
{divider = true},
{name = "Save", action = OnSave, enabled = false, key = Keys.S, toolTip = "Save changes made to the controller mapping."}, -- Reset all the values
{name = "Reset", action = OnReset, key = Keys.R, toolTip = "Revert controller mapping to its default value."}, -- Reset all the values
{divider = true},
{name = "Quit", key = Keys.Q, action = OnQuit, toolTip = "Quit the current game."}, -- Quit the current game
}

pixelVisionOS:CreateTitleBarMenu(menuOptions, "See menu options for this tool.")

end

function SettingsTool:CreatePreferencePanel()

self.volumeKnobData = editorUI:CreateKnob({x = 16, y = 192, w = 24, h = 24}, "knob", "Change the volume.")
self.volumeKnobData.onAction = OnVolumeChange
self.volumeKnobData.value = Volume() / 100

editorUI:Enable(self.volumeKnobData, not Mute())

self.brightnessKnobData = editorUI:CreateKnob({x = 40, y = 192, w = 24, h = 24}, "knob", "Change the brightness.")
self.brightnessKnobData.onAction = OnBrightnessChange
self.brightnessKnobData.value = (Brightness() - .5)

self.sharpnessKnobData = editorUI:CreateKnob({x = 64, y = 192, w = 24, h = 24}, "knob", "Change the sharpness.")
self.sharpnessKnobData.onAction = OnSharpnessChange
self.sharpnessKnobData.value = (((Sharpness() * - 1) / 6))

self.scaleInputData = editorUI:CreateInputField({x = 112, y = 200, w = 8}, Scale(), "This changes the scale of the window when not in fullscreen.", "number")
self.scaleInputData.min = 1
self.scaleInputData.max = 4
self.scaleInputData.onAction = OnChangeScale


self.fullScreenCheckBoxData = editorUI:CreateToggleButton({x = 128, y = 192, w = 8, h = 8}, "checkbox", "Toggle full screen mode.")
self.fullScreenCheckBoxData.hitRect = {x = 131, y = 192, w = 8, h = 8}
self.fullScreenCheckBoxData.onAction = function(value)
Fullscreen(value)

WriteBiosData("FullScreen", value == true and "True" or "False")
end
editorUI:ToggleButton(self.fullScreenCheckBoxData, Fullscreen(), false)

self.cropCheckBoxData = editorUI:CreateToggleButton({x = 128, y = 200, w = 8, h = 8}, "checkbox", "Enable the window to crop.")
self.cropCheckBoxData.onAction = function (value)
CropScreen(value)

WriteBiosData("CropScreen", value == true and "True" or "False")
end

editorUI:ToggleButton(self.cropCheckBoxData, CropScreen())

self.stretchCheckBoxData = editorUI:CreateToggleButton({x = 128, y = 208, w = 8, h = 8}, "checkbox", "Stretch the display to fit the window.")

self.stretchCheckBoxData.onAction = function (value)
StretchScreen(value)

WriteBiosData("StretchScreen", value == true and "True" or "False")
end

editorUI:ToggleButton(self.stretchCheckBoxData, StretchScreen())

self.crtToggleButton = editorUI:CreateToggleButton({x = 128, y = 216, w = 8, h = 8}, "checkbox", "Toggle the CRT effect.")

self.crtToggleButton.onAction = function (value)
OnToggleCRT(value)

WriteBiosData("CRT", value == true and "True" or "False")
end

editorUI:ToggleButton(self.crtToggleButton, EnableCRT())

end

function SettingsTool:UpdatePrefPanel()

-- TOTO Check for modal

editorUI:UpdateKnob(volumeKnobData)
editorUI:UpdateKnob(brightnessKnobData)
editorUI:UpdateKnob(sharpnessKnobData)

-- Update toggle groups
editorUI:UpdateButton(fullScreenCheckBoxData)
editorUI:UpdateButton(cropCheckBoxData)
editorUI:UpdateButton(stretchCheckBoxData)
editorUI:UpdateButton(crtToggleButton)

end

0 comments on commit 30a323e

Please sign in to comment.