core icon indicating copy to clipboard operation
core copied to clipboard

Update internal data and user systems before continuing work

Open 1ForeverHD opened this issue 4 years ago • 0 comments

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 avatar Sep 07 '21 06:09 1ForeverHD