Compare commits

...

24 Commits

Author SHA1 Message Date
Sanjay c6a68071d2
Merge pull request #68 from Sanjay-B/documentation-contrib-guide
Add Documentation Contributors Guide
2020-03-22 16:24:12 -04:00
Sanjay 2f6670f889
Merge pull request #65 from teverse/feature-round-theme-property
Round theme property / themer override
2020-03-22 16:23:58 -04:00
Sanjay 4110d0dfc1 Merge branch 'master' into documentation-contrib-guide 2020-03-22 16:15:10 -04:00
Sanjay a1cefc3ddc Merge remote-tracking branch 'upstream/master' 2020-03-22 16:14:35 -04:00
Sanjay Bhadra de8545ee49 Update Readme 2020-03-22 15:50:44 -04:00
Sanjay Bhadra 295c363a9f Fix spelling mistakes on contrib guide 2020-03-22 15:48:00 -04:00
Sanjay Bhadra 5e75bc8b4f Add contributors guide 2020-03-22 14:09:53 -04:00
Sanjay f652190ddd contrib start 2020-03-22 00:18:51 -04:00
Sanjay dd76af69e3
Merge pull request #64 from Sanjay-B/feature-round-theme-property
Feature round theme property / themer overrides
2020-03-21 01:27:34 -04:00
Sanjay af58910caa Remove random comment 2020-03-21 01:23:00 -04:00
Sanjay eebc40a117 Fixed non-zeros being assigned as nil themer bug 2020-03-21 01:22:09 -04:00
Sanjay a30e04495a Theme Property Overrides, add borderRadius override on theme page 2020-03-21 01:08:22 -04:00
Sanjay 0d0677fb30 Merge remote-tracking branch 'upstream/master' 2020-03-20 13:16:13 -04:00
Sanjay 6d1ae20efc docs stuff 2020-02-08 17:47:49 -05:00
Sanjay 64ae8ea6e3 Merge remote-tracking branch 'upstream/master' 2020-02-08 17:47:19 -05:00
Sanjay 9dd05de288 Merge remote-tracking branch 'upstream/master' 2020-01-24 18:26:48 -05:00
Sanjay 3e9a845bd9 Merge remote-tracking branch 'upstream/master' 2020-01-22 00:42:44 -05:00
Sanjay 383838b989 Merge remote-tracking branch 'upstream/master' 2020-01-16 19:33:41 -05:00
Sanjay 3b7ca838dd Merge branch 'master' of https://github.com/Sanjay-B/teverse 2020-01-14 22:47:07 -05:00
Sanjay 329472a88d Ignore notes.txt 2020-01-14 22:47:01 -05:00
Sanjay ec44060106
Deleted .DS_Store files in Workshop & UI Directory 2020-01-14 22:44:32 -05:00
Sanjay 4d39715a2f
Delete .DS_Store 2020-01-14 22:42:53 -05:00
Sanjay 61895527dc
Delete .DS_Store 2020-01-14 22:42:43 -05:00
Sanjay abce559f76
Delete .DS_Store 2020-01-14 22:40:34 -05:00
5 changed files with 163 additions and 19 deletions

View File

@ -1,7 +1,18 @@
# teverse
# Teverse
This repo contains open source components produced for Teverse. This repo contains open source components produced for Teverse.
[View Style Guide](/TEVERSE-STYLE.md)
# Contributing to Teverse
Teverse is a platform that enables developers with a simple, unified interface to create game and learn about game development.
As a platform, we pride ourselves on giving developers more control without little to no strings attached. As such, we allow contribution to be made by our community in order better our own platform.
Please see the [Contributing Guide](/TEVERSE-CONTRIB.md) and [View Style Guide](/TEVERSE-STYLE.md) for more details.
For those that have contributed, we thank you for your time and service to make this platform powerful.
# Copyright # Copyright

77
TEVERSE-CONTRIB.md Normal file
View File

@ -0,0 +1,77 @@
# Contributions
Everyone is welcome to contribute to Teverse. For Teverse to truly be for developers, we strongly encourage developers to take part in its development. Whether you're here to suggest, find bugs or build the next component to workshop, those efforts mean a lot to us and the community that we foster.
# Issues
Issues are a core component of development and help identify pitfalls (or improvement) in our design. Whether you're replying to a edge-case or helping to isolate the root cause of a bug, developers can benefit from the knowledge and expertise you bring.
We prefer that all feature requests and bug reports are to be redirected to our [Forum](https://forum.teverse.com) but, if you don't have an account (a teverse account is needed to post), feel free to open up an issue.
# Reporting
Reporting, suggesting features and feedback are essential to help improve Teverse. However, we ask that all reports (including issues) are to follow our format and guidelines.
> If a bug is breaking your workflow and causing serious issues for you and other developers, please label the issue under **Incident Reports** under the [Forum](https://forum.teverse.com) or **Critical** in the title of an opened issue.
When reporting, please include the following format:
* **Descriptive Title** - a title that explains the bug in simple terms; no full sentences
* **Version of Teverse** - the version that the bug started to become noticeable
* **Operating System Name & Version** - i.e. MacOS Catalina 10.15.1
* **Detailed Description** - a description of the bug in full detail
* **Issues caused by the the bug** - development setbacks, workflow disruption, etc
* **Steps that were tried to correct beforehand** - Steps you have taken in an effort to correct the issue.
* **Steps to reproduce the bug** - Steps that can be used to reproduce the bug; clear & concise
* **Additional files** - A video or screenshot of the bug
* **Log Files** - debug.log or any other files that may help to isolate the bug
> **Note:** If any information is missing or unknown, please leave an ``n/a`` for that section. Please do not skip or occlude the entire section.
> **Note:** If you do not follow the format above, it will be rejected and sent back to be corrected.
Teverse is under active development and bugs can be introduced or fixed by mistake. If this does occur, we'll let you know before closing your issue. If the issue is misplaced, please contact a staff member to reopen. If the issue is a duplicate, we'll refer you to the most recent related issue to prevent clutter.
# Contributing Code
Contributions in the form of new features, upgrading current features or fixing a bug is always welcome and we encourage the community to participate in the development of our platform. To keep this process streamlined, we ask that you follow the following format:
> **Note:** Commit messages should be clear and concise; there's no strict format but, keep it ethical and professional
* **Descriptive Title** - a title that explains the pull request in simple terms; no full sentences
* **Descriptive Body** - descriptive paragraph (or more) that explains the pull request in full detail
* **Current Version** - the version of Teverse used when developing this pull request
* **Tested** - a summary of how the pull request functioned when being tested; submit unit tests if used
* **Posted on the forum** - if posted on the forum and this pull request is your follow-up, please link the forum thread
> **Note:** If any information is missing or unknown, please leave an ``n/a`` for that section. Please do not skip or occlude the entire section.
> **Note:** If you do not follow the format above, it will be rejected and sent back to be corrected.
# Code Review
Once you've submitted a pull request and it's properly formatted, it will go through code review to verify accurate, efficiency and software quality / integrity.
* Code Reviews are conducted through Github comments and not our Forum
* All changes that have been pushed by the reviewer must be changed accordingly; we're not responsible for making changes, you are
We'll let you know what needs to be changed and you can request a reviewer to review your code whenever plausible.
> **Note:** Code Review can be an extensive process if our procedure is not followed or we get an influx of pull requests, please be patient
# Policies and Licensing
Contributions to Teverse must follow our [licensing](https://github.com/teverse/teverse/blob/master/LICENSE) and [coding standards](https://github.com/teverse/teverse/blob/master/TEVERSE-STYLE.md). In accordance, all work that has been used from other sources must include a credit line to their respective authors. If you pass copied code as your own with unethical intent, we'll deny your pull request and block your access to the repository. We take this seriously.

View File

@ -723,9 +723,9 @@ addDocs("engine", {
line = property("The default constructor for line"), line = property("The default constructor for line"),
}, },
methods = { methods = {
openUrl = method("opens the default web browser", {['url'] = 'string'}, nil), openUrl = method("Opens the default web browser", {['url'] = 'string'}, nil),
construct = method("a generic constructor", {['parent'] = 'variant', ['properties'] = 'table', ['className'] = 'string'}, {'variant'}), construct = method("A generic constructor", {['parent'] = 'variant', ['properties'] = 'table', ['className'] = 'string'}, {'variant'}),
isAuthenticated = method("undefined", nil, nil), isAuthenticated = method("Returns the internal isAuthenticated cache", nil, {'Table'}),
}, },
events = { events = {
stepped = event("undefined", {}), stepped = event("undefined", {}),

View File

@ -5,6 +5,10 @@ ui = require("tevgit:workshop/controllers/ui/core/ui.lua")
shared = require("tevgit:workshop/controllers/shared.lua") shared = require("tevgit:workshop/controllers/shared.lua")
themer = require("tevgit:workshop/controllers/ui/core/themer.lua") themer = require("tevgit:workshop/controllers/ui/core/themer.lua")
colourPicker = require("tevgit:workshop/controllers/ui/components/colourPicker.lua") colourPicker = require("tevgit:workshop/controllers/ui/components/colourPicker.lua")
parseInputs = require("tevgit:workshop/controllers/ui/components/propertyEditor/parseInputs.lua")
-- Overrides
local radiusNum = 0 -- defaults to flat
presets = { presets = {
{"default", "Classic (default)"}, {"default", "Classic (default)"},
@ -41,6 +45,7 @@ frame = ui.create("guiFrame", importWindow.content, {
cropChildren = true, cropChildren = true,
backgroundAlpha = 0 backgroundAlpha = 0
}) })
importInput = ui.create("guiTextBox", frame, { importInput = ui.create("guiTextBox", frame, {
size = guiCoord(1, 0, 1, 0), size = guiCoord(1, 0, 1, 0),
position = guiCoord(0, 0, 0, 0), position = guiCoord(0, 0, 0, 0),
@ -93,6 +98,32 @@ exportInput = ui.create("guiTextBox", eframe, {
zIndex = 100 zIndex = 100
}, "secondary") }, "secondary")
ui.create("guiTextBox", container, {
position = guiCoord(0.5, 10, 0, 80),
size = guiCoord(0.5, -20, 0, 30),
text = "Border Radius"
}, "backgroundText")
local borderRadiusInput = ui.create("guiTextBox", container, {
size = guiCoord(0.153, 0, 0.038, 0),
position = guiCoord(0.79, 10, 0, 80),
backgroundAlpha = 0.25,
readOnly = false,
multiline = false,
name = "input",
text = tostring(radiusNum),
align = enums.align.middle
}, "secondary")
borderRadiusInput:textInput(function(numText)
num = tonumber(numText)
if #numText == 0 then radiusNum = 0 return end
if string.find(numText,"%a") or string.find(numText,"%s") then borderRadiusInput:setText("0") radiusNum = 0 return end
if string.len(numText) > 5 then borderRadiusInput:setText(string.sub(numText,1,5)) radiusNum = 0 return end
if num < 0 then borderRadiusInput:setText("0") return end
radiusNum = tonumber(borderRadiusInput.text)
end)
THISISTHERESETBUTTON = ui.create("guiButton", container, { THISISTHERESETBUTTON = ui.create("guiButton", container, {
size = guiCoord(0.5, -20, 0, 30), size = guiCoord(0.5, -20, 0, 30),
position = guiCoord(0.5, 10, 0, 80), position = guiCoord(0.5, 10, 0, 80),
@ -101,6 +132,7 @@ THISISTHERESETBUTTON = ui.create("guiButton", container, {
align = enums.align.middle, align = enums.align.middle,
visible = false visible = false
},"primaryVariant") },"primaryVariant")
THISISTHERESETBUTTON:mouseLeftReleased(function() THISISTHERESETBUTTON:mouseLeftReleased(function()
exportInput.text = shared.workshop:getSettings("customTheme") exportInput.text = shared.workshop:getSettings("customTheme")
exportWindow.visible = true exportWindow.visible = true
@ -154,7 +186,7 @@ function generateEditor()
align = enums.align.middle, align = enums.align.middle,
backgroundColour = v, backgroundColour = v,
textColour = cv > 0.5 and colour:black() or colour:white(), textColour = cv > 0.5 and colour:black() or colour:white(),
borderRadius = 4, borderRadius = radiusNum, -- override this
borderColour = colour:black(), borderColour = colour:black(),
borderAlpha = 0.3 borderAlpha = 0.3
}, prop) }, prop)
@ -207,11 +239,11 @@ function makePresetMenu()
if presets[i][1] == "custom" then if presets[i][1] == "custom" then
shared.workshop:setSettings("themeType", presets[i][1]) shared.workshop:setSettings("themeType", presets[i][1])
shared.workshop:setSettings("customTheme", engine.json:encodeWithTypes(theme)) shared.workshop:setSettings("customTheme", engine.json:encodeWithTypes(theme))
themer.setTheme(theme) themer.setTheme(theme,radiusNum)
themeReload() themeReload()
else else
shared.workshop:setSettings("themeType", presets[i][1]) shared.workshop:setSettings("themeType", presets[i][1])
themer.setThemePreset(require("tevgit:workshop/controllers/ui/themes/" .. presets[i][1] .. ".lua")) themer.setThemePreset(require("tevgit:workshop/controllers/ui/themes/" .. presets[i][1] .. ".lua"),radiusNum)
themeReload() themeReload()
end end
makePresetMenu() makePresetMenu()

View File

@ -22,10 +22,16 @@ else
shared.workshop:setSettings("themeType", "default") shared.workshop:setSettings("themeType", "default")
end end
local function themeriseGui(gui) local function themeriseGui(gui,...)
-- Grab the gui's style name set in the "registerGui" func -- Grab the gui's style name set in the "registerGui" func
local styleName = registeredGuis[gui] local styleName = registeredGuis[gui]
local args = nil
if #{...} > 0 then
args = {...}
args = args[1]
end
-- get the style's properties from the current theme -- get the style's properties from the current theme
local style = currentTheme[styleName] local style = currentTheme[styleName]
if not style then if not style then
@ -37,6 +43,9 @@ local function themeriseGui(gui)
if gui[property] and gui[property] ~= value then if gui[property] and gui[property] ~= value then
gui[property] = value gui[property] = value
end end
if args then
gui["borderRadius"] = args[1] or 0
end
end end
end end
@ -60,18 +69,28 @@ return {
themeriseGui = themeriseGui, themeriseGui = themeriseGui,
registerGui = function(gui, style) registerGui = function(gui, style, ...)
-- set the gui's style and themerise it. -- set the gui's style and themerise it.
registeredGuis[gui] = style registeredGuis[gui] = style
local args = {...} -- contains overrides
if args then
themeriseGui(gui,args)
elseif not args then
themeriseGui(gui) themeriseGui(gui)
end
end, end,
setTheme = function(theme) setTheme = function(theme,...)
-- change the current theme AND re-themerise all guis -- change the current theme AND re-themerise all guis
currentTheme = theme currentTheme = theme
args = {...} -- contains overrides
for gui,v in pairs(registeredGuis) do for gui,v in pairs(registeredGuis) do
if args then
themeriseGui(gui,args)
else
themeriseGui(gui) themeriseGui(gui)
end end
end
-- Save the theme -- Save the theme
shared.workshop:setSettings("themeType", "custom") shared.workshop:setSettings("themeType", "custom")
@ -90,12 +109,17 @@ return {
shared.workshop:setSettings("customTheme", null) shared.workshop:setSettings("customTheme", null)
end, end,
setThemePreset = function(theme) setThemePreset = function(theme,...)
-- change the current theme AND re-themerise all guis -- change the current theme AND re-themerise all guis
currentTheme = theme currentTheme = theme
local args = {...} -- contains overrides
for gui,v in pairs(registeredGuis) do for gui,v in pairs(registeredGuis) do
if args then
themeriseGui(gui,args)
elseif not args then
themeriseGui(gui) themeriseGui(gui)
end end
end
shared.workshop:setSettings("customTheme", null) shared.workshop:setSettings("customTheme", null)
end, end,