Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update internal data and user systems before continuing work #132

Open
50 tasks
1ForeverHD opened this issue Sep 7, 2021 · 0 comments
Open
50 tasks

Update internal data and user systems before continuing work #132

1ForeverHD opened this issue Sep 7, 2021 · 0 comments

Comments

@1ForeverHD
Copy link
Member

1ForeverHD commented Sep 7, 2021

role stuff:

  • for 'limiters' within roles, check against roles with that command and ensure all of those have the setting (see tylers notes for more details)
  • determine how role functions will work now with these new settings?
  • important: now that roleModifiersToOnlyRoleCommands has been removed, ensure role limiters/behaviours/modifiers/etc are exclusively applied to commands within that role, instead of all commands
  • ensure RoleService.verifySettings will still work
  • maybe introduce a new or modify verifySettings so that behaviours are solely limited to commands of that role
    update everywhere which uses verifySettings
  • have located in a separate shared module so that it can be accessed by both client and server
  • repeat the same for game settings

other:

  • replace :waitForHumanoid with CharacterUtil.onHumanoidLoaded(playerOrUserId, callback)
  • Replace all :catch(warn) and :catch(print) with main.warn and main.print then add this to-do task to Nanoblox (maybe also utilise debug.traceback)
  • Have main.print and main.warn act as wrappers which extend the text Nanoblox (then ideally some sort of debug traceback, such as the name of the module)
  • Replace all game.JobId with main.jobId
  • DataUtil.isEqual has changed to DataUtil.areValuesEqual
  • add TeleportUtil
  • create userstores using scope, for example: UserStore.new("Nanoblox", "Players"), UserStore.new("Nanoblox", "Roles"), UserStore.new("Nanoblox", "Bans"), UserStore.new("Nanoblox", "General"), etc
  • ensure systems (within environments) are still split up and have more appropriate datastore key names which allow for potential future scaling (such as when bans exceed 4 million characters), e.g. Scope:Bans/Global/Profiles/1
  • convert PlayerService methods like playerAddedMethod to just playerAdded and rename the signals to playerAddedSignal
  • Replace .ancestryChanged of(game) with .Destroying
  • Introduce StreamingController and ensure replication detection of instances (such as with clientLoadCommandAsset, the melon, sound, etc) are working correctly with this new system instead of the old firing remote
  • PlayerStore (new setTemplate methods), etc
  • Also for all ':GetPropertyChangedSignal("Parent")' ensure that it is disconnected by something else other than itself as it is now always called (for instance if it belongs to a model and its parent id destroyed instead)
    • Either use ancestrychanged or the new .destroying event if is released
  • Important: Update RemoteServer (and maybe RemoteClient) with new one as the limit checks were acting on a per-player basis instead of a per-remote-per-player basis
  • Add in Global module and the two Global enums
    • Add this in under 'Packges'
    • Setup so it works like a package
    • Create a dedicated repo for this originally which a license preventing its use without my permission
  • Update to new Remote package
    • also consider utilising the new 'beforeFiring', 'afterFiring', etc when it comes to replicating assets
  • Update to new UserStore package (with profile service)
    • Explore how systems now work with profiles
    • getLoadedUser is now simply getUser, and getUser only returns once loaded
      • check all uses of getUser and consider replacing some with :onUserLoaded
      • replace all getLoaded with get
    • check all .changed State listeners as these have now been replaced with (pathway, value, oldValue)
      • createDescendantChangedSignal has also been removed
      • consider replacing some listeners with the new :getChangedSignal() with returns the exact value instead of pathwayValue
      • .changed and .changedFirst have been renamed to mutated, mutatedFirst and getValueChangedSignal
    • replace getOrSetup with simply get (or a . index) by adding these values to the default PlayerStore
    • state:getSimple has been removed, make sure to replace all references of this
    • Important: Inverse all State.new() as convertDescendantTables has been replaced with dontConvertDescendantTables
    • the value.isState check has also been removed so make sure that State tables are never created from an object (such as a Role)
    • originalCode:
function State:_get(remainCriteria, ...)
	local pathwayArray = State.getPathwayArray(...)
	local max = #pathwayArray
	local value = self
	if max == 0 then
		return value
	end
	for i, key in pairs(pathwayArray) do
		value = value[key]
		if not remainCriteria(i, max, value) then
			return nil
		end
	end
	return value
end

function State:get(...)
	return self:_get(function(i, max, value)
		return (i == max or (type(value) == "table" and value.isState))
	end, ...)
end

function State:getSimple(...)
	return State._get(self, function(i, max, value)
		return (i == max or type(value) == "table")
	end, ...)
end
  • a lot of DataUtil methods have been moved to State
  • improve CommandService.createFakeUser
    • ensure the PlayerStore has a way to return the default values (e.g. UserStore.getDefaultValues)
    • introduce a UserStore.createUserTemplate
    • improve CommandService.createFakeUser
  • Sound modules (service, controller, etc)
  • TypeChecking
  • TestEZ
@1ForeverHD 1ForeverHD changed the title Consider hard locking items like Signal, Janitor, ec Update internal data and user systems before continuing work Jan 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant