Skip to content
This repository has been archived by the owner on Jul 28, 2022. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Sleitnick/AeroGameFramework
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.2.6
Choose a base ref
...
head repository: Sleitnick/AeroGameFramework
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref

Commits on Nov 12, 2018

  1. Fixed Aero side of infinite yield bug

    Will no longer infinite yield if boundToCloseFuncs is 0 and will no longer infinite yield if the number of DataCaches is 0. This fixes the Aero side of the infinite yield bug, Roblox has yet to fix the bug on their end.
    ThoughtSpinnr authored Nov 12, 2018
    Copy the full SHA
    30f89a3 View commit details
  2. Updated changelog

    Sleitnick committed Nov 12, 2018
    Copy the full SHA
    d22d1be View commit details
  3. Changed logic slightly

    👍
    ThoughtSpinnr authored Nov 12, 2018
    Copy the full SHA
    5f7da63 View commit details
  4. Copy the full SHA
    d518045 View commit details
  5. Merge pull request #53 from Rocky28447/master

    Fixed Aero side of infinite yield bug when nothing is bound to close callbacks
    Sleitnick authored Nov 12, 2018
    Copy the full SHA
    e9d4339 View commit details

Commits on Nov 14, 2018

  1. Gamepad:IsDown(key)

    Pretty self explanatory. Returns true if the given key is pressed on the current gamepad.
    ThoughtSpinnr authored Nov 14, 2018
    Copy the full SHA
    0852cfd View commit details
  2. Copy the full SHA
    a2164f8 View commit details

Commits on Nov 20, 2018

  1. Coroutine assertions

    Sleitnick committed Nov 20, 2018
    Copy the full SHA
    cc03cb4 View commit details

Commits on Nov 21, 2018

  1. Updated plugin

    Sleitnick committed Nov 21, 2018
    Copy the full SHA
    4797164 View commit details
  2. Updated plugin

    Sleitnick committed Nov 21, 2018
    Copy the full SHA
    250a85d View commit details
  3. Merge pull request #55 from Rocky28447/master

    Add IsDown method for Gamepad
    Sleitnick authored Nov 21, 2018
    Copy the full SHA
    b49d4e3 View commit details

Commits on Nov 24, 2018

  1. Shuffle fix

    Sleitnick committed Nov 24, 2018
    Copy the full SHA
    e32ff63 View commit details

Commits on Nov 25, 2018

  1. Copy the full SHA
    2fbfd57 View commit details

Commits on Nov 26, 2018

  1. SafeDataStore Budget Fix

    Sleitnick committed Nov 26, 2018
    Copy the full SHA
    49ece02 View commit details

Commits on Dec 7, 2018

  1. Added ApplyDeadzone method

    Sleitnick committed Dec 7, 2018
    Copy the full SHA
    48cbdf6 View commit details
  2. Copy the full SHA
    bb403e4 View commit details
  3. Updated plugin

    Sleitnick committed Dec 7, 2018
    Copy the full SHA
    6b1daa1 View commit details
  4. Updated plugin

    Sleitnick committed Dec 7, 2018
    Copy the full SHA
    da7473c View commit details

Commits on Dec 18, 2018

  1. Copy the full SHA
    7d0f7fa View commit details
  2. Copy the full SHA
    0ae96e0 View commit details
  3. Updated plugin

    Sleitnick committed Dec 18, 2018
    Copy the full SHA
    aac64e6 View commit details

Commits on Dec 22, 2018

  1. Updated plugin

    Sleitnick committed Dec 22, 2018
    Copy the full SHA
    9a92eaa View commit details
  2. Copy the full SHA
    1c9cb67 View commit details
  3. Copy the full SHA
    d67c708 View commit details

Commits on Jan 2, 2019

  1. Copy the full SHA
    4ead890 View commit details

Commits on Jan 22, 2019

  1. Updated plugin readme

    Sleitnick committed Jan 22, 2019
    Copy the full SHA
    90157f1 View commit details
  2. Added gitignore

    Sleitnick committed Jan 22, 2019
    Copy the full SHA
    69eae1a View commit details
  3. Added logo images

    Sleitnick committed Jan 22, 2019
    Copy the full SHA
    a0003b4 View commit details
  4. Updated README

    Sleitnick committed Jan 22, 2019
    Copy the full SHA
    64541f1 View commit details

Commits on Jan 30, 2019

  1. Added FastSpawn

    Sleitnick committed Jan 30, 2019
    Copy the full SHA
    415c970 View commit details
  2. Improved error reporting

    Sleitnick committed Jan 30, 2019
    Copy the full SHA
    54b9bff View commit details
  3. Fix filelist

    Sleitnick committed Jan 30, 2019
    Copy the full SHA
    c116bdb View commit details
  4. Merge pull request #64 from Mduro/patch-1

    Fixed small mistake in example.
    Sleitnick authored Jan 30, 2019
    Copy the full SHA
    2743ff8 View commit details

Commits on Feb 4, 2019

  1. Fix typo

    Sleitnick committed Feb 4, 2019
    Copy the full SHA
    43b8877 View commit details
  2. Copy the full SHA
    1e3952f View commit details
  3. Updated version

    Sleitnick committed Feb 4, 2019
    Copy the full SHA
    061f0b1 View commit details

Commits on Feb 11, 2019

  1. Fixed typo

    Sleitnick committed Feb 11, 2019
    Copy the full SHA
    06488d0 View commit details
  2. 1
    Copy the full SHA
    59903dc View commit details

Commits on Feb 13, 2019

  1. Restructured for Rojo

    Sleitnick committed Feb 13, 2019
    Copy the full SHA
    72e6dc3 View commit details
  2. Filelist updated

    Sleitnick committed Feb 13, 2019
    Copy the full SHA
    7078ebd View commit details
  3. Plugin updated

    Sleitnick committed Feb 13, 2019
    Copy the full SHA
    0f25520 View commit details
  4. Copy the full SHA
    8987a78 View commit details

Commits on Feb 25, 2019

  1. Cleanup

    Sleitnick committed Feb 25, 2019
    Copy the full SHA
    bd0c122 View commit details

Commits on Feb 27, 2019

  1. Restructured core scripts

    Sleitnick committed Feb 27, 2019
    Copy the full SHA
    7127898 View commit details
  2. Filelist updated

    Sleitnick committed Feb 27, 2019
    Copy the full SHA
    80fe858 View commit details

Commits on Mar 24, 2019

  1. Update DataService.lua

    ThoughtSpinnr authored Mar 24, 2019
    Copy the full SHA
    bdc063f View commit details
  2. DataService:OnUpdate()

    OnUpdate but for players
    ThoughtSpinnr authored Mar 24, 2019
    Copy the full SHA
    59744a7 View commit details

Commits on Apr 19, 2019

  1. Update Easing.lua

    More easing functions.
    howmanysmall authored Apr 19, 2019
    Copy the full SHA
    42688bb View commit details

Commits on Apr 20, 2019

  1. Merge pull request #72 from Rocky28447/master

    DataService:OnUpdate()
    Sleitnick authored Apr 20, 2019
    Copy the full SHA
    8e3cfd4 View commit details
  2. Return OnUpdate connection

    Sleitnick committed Apr 20, 2019
    Copy the full SHA
    aa34a85 View commit details
Showing with 22,053 additions and 4,068 deletions.
  1. +18 −0 .github/workflows/deploy_docs.yaml
  2. +24 −0 .github/workflows/lint.yaml
  3. +6 −0 .gitignore
  4. +89 −13 CHANGELOG.md
  5. +20 −0 DOCS_README.md
  6. +1 −1 LICENSE
  7. +34 −294 README.md
  8. +57 −51 build_filelist.py
  9. +39 −0 default.project.json
  10. +0 −159 doc/ClientController.md
  11. +0 −26 doc/ExecutionModel.md
  12. +0 −16 doc/README.md
  13. +0 −185 doc/ServerService.md
  14. +0 −7 doc/Structure.md
  15. +50 −0 docs.sh
  16. +279 −0 docs/controllers.md
  17. +84 −0 docs/execution_model.md
  18. BIN docs/img/logo_32.png
  19. BIN docs/img/logo_64.png
  20. +64 −0 docs/index.md
  21. +83 −0 docs/install.md
  22. +133 −0 docs/module_docs/client_controllers/fade.md
  23. +1 −0 docs/module_docs/client_controllers/task_scheduler.md
  24. +76 −0 docs/module_docs/client_controllers/user_input.md
  25. +176 −0 docs/module_docs/client_controllers/user_inputs/gamepad.md
  26. +73 −0 docs/module_docs/client_controllers/user_inputs/keyboard.md
  27. +195 −0 docs/module_docs/client_controllers/user_inputs/mobile.md
  28. +162 −0 docs/module_docs/client_controllers/user_inputs/mouse.md
  29. +127 −0 docs/module_docs/client_modules/camera_shaker.md
  30. +144 −0 docs/module_docs/client_modules/pid.md
  31. +94 −0 docs/module_docs/client_modules/smooth.md
  32. +80 −0 docs/module_docs/client_modules/tween.md
  33. +15 −0 docs/module_docs/server_modules/profile_service.md
  34. +31 −0 docs/module_docs/shared/base64.md
  35. +162 −0 docs/module_docs/shared/date.md
  36. +73 −0 docs/module_docs/shared/listener_list.md
  37. +54 −0 docs/module_docs/shared/maid.md
  38. +89 −0 docs/module_docs/shared/number_util.md
  39. +180 −0 docs/module_docs/shared/promise.md
  40. +67 −0 docs/module_docs/shared/signal.md
  41. +176 −0 docs/module_docs/shared/string_util.md
  42. +236 −0 docs/module_docs/shared/table_util.md
  43. +62 −0 docs/module_docs/shared/thread.md
  44. +34 −0 docs/module_docs/shared/vector_util.md
  45. +130 −0 docs/modules.md
  46. +295 −0 docs/services.md
  47. +57 −0 docs/settings.md
  48. +276 −30 filelist.json
  49. +1 −0 filelist.min.json
  50. +2 −0 foreman.toml
  51. BIN imgs/logo_128.png
  52. BIN imgs/logo_256.png
  53. BIN imgs/logo_32.png
  54. BIN imgs/logo_512.png
  55. BIN imgs/logo_512_discord.png
  56. BIN imgs/logo_64.png
  57. BIN imgs/logo_github_readme.png
  58. BIN imgs/social_media_github.png
  59. +3 −322 install.lua
  60. +67 −0 mkdocs.yml
  61. +2,662 −613 plugin/AeroGameFrameworkPlugin.rbxmx
  62. +5 −1 plugin/README.md
  63. +2 −0 requirements.txt
  64. +8,200 −0 roblox.toml
  65. +9 −0 selene.toml
  66. 0 src/ReplicatedFirst/{AeroLoad.localscript.lua → Aero/AeroLoad.client.lua}
  67. +82 −0 src/ReplicatedStorage/Aero/Internal/Settings.lua
  68. +151 −0 src/ReplicatedStorage/Aero/Shared/Base64.lua
  69. +0 −157 src/ReplicatedStorage/Aero/Shared/Base64.modulescript.lua
  70. +3 −3 src/ReplicatedStorage/Aero/Shared/{Date.modulescript.lua → Date.lua}
  71. +0 −169 src/ReplicatedStorage/Aero/Shared/Event.modulescript.lua
  72. +10 −4 src/ReplicatedStorage/Aero/Shared/{ListenerList.modulescript.lua → ListenerList.lua}
  73. +160 −0 src/ReplicatedStorage/Aero/Shared/Maid.lua
  74. +120 −0 src/ReplicatedStorage/Aero/Shared/NumberUtil.lua
  75. +1,428 −0 src/ReplicatedStorage/Aero/Shared/Promise.lua
  76. +182 −0 src/ReplicatedStorage/Aero/Shared/Signal.lua
  77. +310 −0 src/ReplicatedStorage/Aero/Shared/StringUtil.lua
  78. +129 −29 src/ReplicatedStorage/Aero/Shared/{TableUtil.modulescript.lua → TableUtil.lua}
  79. +164 −0 src/ReplicatedStorage/Aero/Shared/Thread.lua
  80. +62 −0 src/ReplicatedStorage/Aero/Shared/VectorUtil.lua
  81. +0 −194 src/ServerScriptService/Aero/AeroServer.script.lua
  82. +396 −0 src/ServerScriptService/Aero/Internal/AeroServer.server.lua
  83. +22 −22 ...taStoreCache.SafeDataStore.MockDataStoreService.modulescript.lua → Data/MockDataStoreService.lua}
  84. +789 −0 src/ServerStorage/Aero/Modules/Data/init.lua
  85. +0 −108 src/ServerStorage/Aero/Modules/DataStoreCache.SafeDataStore.modulescript.lua
  86. +0 −162 src/ServerStorage/Aero/Modules/DataStoreCache.modulescript.lua
  87. +1,729 −0 src/ServerStorage/Aero/Modules/ProfileService.lua
  88. 0 src/ServerStorage/Aero/Services/.gitkeep
  89. +0 −333 src/ServerStorage/Aero/Services/DataService.modulescript.lua
  90. +0 −126 src/ServerStorage/Aero/Services/StoreService.modulescript.lua
  91. +0 −162 src/StarterPlayer/StarterPlayerScripts/Aero/AeroClient.localscript.lua
  92. +2 −2 src/StarterPlayer/StarterPlayerScripts/Aero/Controllers/{Fade.modulescript.lua → Fade.lua}
  93. +12 −12 ...Player/StarterPlayerScripts/Aero/Controllers/{TaskScheduler.modulescript.lua → TaskScheduler.lua}
  94. +0 −87 src/StarterPlayer/StarterPlayerScripts/Aero/Controllers/UserInput.Mobile.modulescript.lua
  95. +0 −49 src/StarterPlayer/StarterPlayerScripts/Aero/Controllers/UserInput.modulescript.lua
  96. +31 −12 ...tarterPlayerScripts/Aero/Controllers/{UserInput.Gamepad.modulescript.lua → UserInput/Gamepad.lua}
  97. +4 −3 ...rterPlayerScripts/Aero/Controllers/{UserInput.Keyboard.modulescript.lua → UserInput/Keyboard.lua}
  98. +142 −0 src/StarterPlayer/StarterPlayerScripts/Aero/Controllers/UserInput/Mobile.lua
  99. +47 −29 ...er/StarterPlayerScripts/Aero/Controllers/{UserInput.Mouse.modulescript.lua → UserInput/Mouse.lua}
  100. +110 −0 src/StarterPlayer/StarterPlayerScripts/Aero/Controllers/UserInput/init.lua
  101. +295 −0 src/StarterPlayer/StarterPlayerScripts/Aero/Internal/AeroClient.client.lua
  102. +1 −1 ...odules/{CameraShaker.CameraShakeInstance.modulescript.lua → CameraShaker/CameraShakeInstance.lua}
  103. +14 −3 .../Modules/{CameraShaker.CameraShakePresets.modulescript.lua → CameraShaker/CameraShakePresets.lua}
  104. +31 −5 ...rPlayer/StarterPlayerScripts/Aero/Modules/{CameraShaker.modulescript.lua → CameraShaker/init.lua}
  105. +75 −0 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/PID.lua
  106. +0 −221 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/PID.modulescript.lua
  107. +0 −32 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/Smooth.SmoothDamp.modulescript.lua
  108. +91 −0 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/Smooth/SmoothDamp.lua
  109. +1 −1 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/{Smooth.modulescript.lua → Smooth/init.lua}
  110. +0 −418 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/Tween.Easing.modulescript.lua
  111. +459 −0 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/Tween/Easing.lua
  112. +3 −5 src/StarterPlayer/StarterPlayerScripts/Aero/Modules/{Tween.modulescript.lua → Tween/init.lua}
  113. +1 −1 version.txt
18 changes: 18 additions & 0 deletions .github/workflows/deploy_docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Deploy Docs

on:
push:
branches:
- master

jobs:
build:
name: Build & deploy docs
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy docs
uses: mhausenblas/mkdocs-deploy-gh-pages@master
env:
GITHUB_TOKEN: ${{ SECRETS.GITHUB_TOKEN }}
24 changes: 24 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lint

on:
push:
branches:
- master
pull_request:
branches:
- master

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: Roblox/setup-foreman@v1
name: Install Foreman
with:
version: "^1.0.0"
token: ${{ SECRETS.GITHUB_TOKEN }}
- name: Lint
run: |
selene ./
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
imgs/*.psd
node_modules/
site/
aws/**/*.zip
aws/**/*_deploy/
aws/**/*out.yaml
102 changes: 89 additions & 13 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@

The following are updates that have been implemented into the framework, so you can understand the impact of upgrading the plugin or framework as changes are made.

Understand that the framework may change frequently, so upcoming changes may break compatiblility with previous versions. Before upgrading, it is recommended that you read this `CHANGELOG.md` to see if there are BC Breaks, otherwise known as backwards-compatibility breaks, which may have an impact on your implementation against the framework working.
Understand that the framework may change frequently, so upcoming changes may break compatibility with previous versions. Before upgrading, it is recommended that you read this `CHANGELOG.md` to see if there are BC Breaks, otherwise known as backwards-compatibility breaks, which may have an impact on your implementation against the framework working.

Anything noted with a ==[BC Break]== you should be cautious about upgrading until you understand what refactoring you may have to do in order to support the framework version.

@@ -14,6 +14,16 @@ As always, you can also check the commit history for a given version as well, an

| Version | Date | Description |
| ---|---|--- |
| [1.7.2]($1.7.2) | 2020-11-23 | <ul><li>Fix ProfileService so that it will work properly within the AGF environment</li><li>Replace `tick()` with appropriate replacements (e.g. `time()` and `os.time()`)</li><li>Fix linter</li></ul>
| [1.7.1](#1.7.1) | 2020-08-25 | <ul><li>Remove StoreService</li><li>Remove old Event module</li><li>Add new Signal module (replaces Event module)</li><li>Add new raycasting methods</li><li>Add ProfileService module</li><li>Upgrade Promise to 3.0.1</li><li>Implement new `.settings` file for configuring module behavior within the framework</li><li>Updated VS Code extension to allow for creating settings files (v0.0.23)</li><li>New PID implementation</li></ul> |
| [1.6.1](#1.6.1) | 2020-05-21 | <ul><li>Switch to Selene for linting</li><li>Include GitHub Action to run Selene for new pull requests</li><li>Less verbose method names for firing events</li><li>Various bug fixes and performance improvements</li></ul> |
| [1.6.0](#1.6.0) | 2020-04-23 | <ul><li>Add NumberUtil and VectorUtil libraries under Shared</li></ul> |
| [1.5.2](#1.5.2) | 2020-04-14 | <ul><li>Fix a breaking issue with back-to-back calls to a RemoteFunction incorrectly caching</li></ul> |
| [1.5.1](#1.5.1) | 2020-04-06 | <ul><li>Added Maid class</li></ul> |
| [1.5.0](#1.5.0) | 2020-01-05 | <ul><li>Added Data module</li><li><b>==[BC Break]==</b> Removed DataStoreService and its dependencies</li><li>Added Thread module</li></ul> |
| [1.4.1](#1.4.1) | 2019-12-15 | <ul><li>Fixed execution order for modules to respect init/start lifecycle</li><li>Add ability to force `Init` execution order using `__aeroOrder` field</li></ul> |
| [1.4.0](#1.4.0) | 2019-10-17 | <ul><li>Added `service:FireAllClientsEventExcept(eventName, player, ...)`</li><li>Dropped Roblox Studio plugin support in favor of VS Code extension</li><li>New documentation site</li></ul> |
| [1.3.0](#1.3.0) | 2018-12-19 | <ul><li>Restructured source directory and installer to be compatible with Rojo</li></ul> |
| [1.2.6](#1.2.6) | 2018-11-12 | <ul><li>Expanded TableUtil library</li></ul> |
| [1.2.5](#1.2.5) | 2018-09-20 | <ul><li>Added `__aeroPreventStart` flag for modules that already implement a Start method.</li><li>Added `__aeroPreventInit` flag for modules that already implement an Init method.</li><li>Flagged `__aeroPreventStart` for CameraShaker module.</li></ul> |
| [1.2.4](#1.2.4) | 2018-09-20 | <ul><li>Using `coroutine` yielding/resuming where applicable</li><li>Cleaned up deprecated code in TaskScheduler</li></ul> |
@@ -22,22 +32,88 @@ As always, you can also check the commit history for a given version as well, an

### Version History Notes

#### <a name="1.2.6"> Version 1.2.6
#### <a name="1.7.2"></a> Version 1.7.2
Fixes ProfileService so that it properly works within the AGF environment.

Use proper time functions within the code. `tick()` is no longer considered acceptable, and most cases can be swapped with `time()`. See [DevForum thread](https://devforum.roblox.com/t/luau-recap-june-2020/632346) on this topic.

[AGF Development] Fixed automated Selene linter by switching to Foreman for tool installations.

#### <a name="1.7.1"></a> Version 1.7.1
<b>==[BC Break]==</b> Removed StoreService, as it was not very good and pigeonholed developers into a specific pattern for product purchases.

<b>==[BC Break]==</b> Added new Signal module to replace the older Event module. The API is the same, but the implementation is more robust.

<b>==[BC Break]==</b> New PID implementation.

Replaced older raycasting methods with the newer ones within the Mouse and Mobile input modules.

Added MadStudio's ProfileService module for datastore use. This module is much more robust than the existing Data module.

Added a new `.settings` module feature to configure the behavior of modules within the framework. For instance, a controller named `MyController` can now have a `MyController.settings` module that contains specific configuration details for the module. See [Settings](https://sleitnick.github.io/AeroGameFramework/settings/) documentation. The VS Code extension for AGF has also been updated to support this feature (v0.0.22).

#### <a name="1.6.1"></a> Version 1.6.1
Added support for Selene. All pull requests are now required to pass through the Selene check before being merged into master.

Implemented less verbose method names for firing events and deprecated the old versions.

Modules are no longer wrapped with the Aero metatable if they already have a metatable and a `__call` metamethod. This adds easier support of third-party modules such as DataStore2.

The mouse is no longer enabled/disabled by default based on user input. If developers wish to hide the mouse automatically when a gamepad is used, `UserInput.HideMouse` must be set to `true`.

There were also various bug fixes and performance enhancements thanks to the implementation of Selene.

#### <a name="1.6.0"></a> Version 1.6.0
Added NumberUtil and VectorUtil libraries. These libraries contain functions that are commonly used in game development but are not available out-of-the-box in Roblox's API.

#### <a name="1.5.2"></a> Version 1.5.2
Fix a breaking issue regarding back-to-back invocations of RemoteFunctions within the internal client script. This issue was caused by an incorrect design decision that subsequent calls to a pending RemoteFunction should return the result of the first pending invocation. In other words, if a RemoteFunction was invoked 5 times at the exact same time, each invocation would return the result of the _first_ invocation.

This faulty design has been reverted to the old behavior from before v1.5.1, which guarantees that each invocation of a RemoteFunction is unique.

#### <a name="1.5.1"></a> Version 1.5.1
Added [Quenty's](https://github.com/Quenty) Maid class. This class allows for easy cleanup of tasks.

Also fixed many small bugs and made minor improvements throughout the framework.

#### <a name="1.5.0"></a> Version 1.5.0
Added a new Data module, which replaces the older DataStoreService. The new Data module gives developers more robust control over data, including improved error handling due to the module using promises.

<b>==[BC Break]==</b> The DataStoreService and its dependencies have been removed. The Data module is the official replacement. The DataStoreService had many flaws and could introduce developers into tricky situations that caused data losses due to unknown data failures.

Added a Thread module under Shared. This module should be used instead of the built-in global functions `spawn` and `delay`. Both the `spawn` and `delay` functions are known to throttle unexpectedly. Such behavior is unacceptable, and thus the Thread module aims at giving alternatives to both functions. The use of the Thread's `Thread.Spawn` and `Thread.Delay` functions can easily be dropped in to replace any existing `spawn` and `delay` code. The module also contains a `Thread.SpawnNow` function, which will spawn a new thread immediately, as opposed to the next frame. In addition, the `Thread.Delay` returns the heartbeat connection, which means that the delay can be cancelled by disconnecting the connection.

#### <a name="1.4.1"></a> Version 1.4.1
Fixed an issue with lazy-loaded modules. Before, lazy-loaded modules could break the execution lifecycle rule if loaded within the `Init` method of a service or controller. When this happened, the `Init` _and_ `Start` method would execute within the loaded module. This is a problem, since `Start` should not be executed yet. This is now fixed. The `Start` method will be held off from execution until the proper time within the framework lifecycle.

A new optional field has been added called `__aeroOrder`. Setting this field to a number will define the `Init` execution order for the service or controller. The order is interpreted in ascending order. In other words, a service with an order of `1` will be guaranteed to initialize before a service with the order of `2`. Services and controllers that don't define `__aeroOrder` will default to an order of `math.huge`, which simply makes them executed last, but in no particular order otherwise.

#### <a name="1.4.0"></a> Version 1.4.0
Added `service:FireAllClientsEventExcept(eventName, player, ...)`, which allows firing client events for all clients except the given player. One use-case for this is to implement custom replication, where a player's action needs to be communicated to the other players.

The origin AGF plugin for Roblox Studio is now deprecated in favor of the VS Code extension.

The documentation site has been rebuilt using MkDocs, which will enable easier additions, edits, and contributions.

#### <a name="1.3.0"></a> Version 1.3.0
Restructured source directory and installer to be compatible with Rojo. For compatibility, please be sure to update the plugin as well. The older versions of the plugin are not compatible with the new directory structure, and thus will fail to install or update the framework.

#### <a name="1.2.6"></a> Version 1.2.6
Expanded the TableUtil library. Specifically, the following functions have been added:

- TableUtil.Map(Table tbl, Function callback)
- TableUtil.Filter(Table tbl, Function callback)
- TableUtil.Reduce(Table tbl, Function callback [, Number initialValue])
- TableUtil.IndexOf(Table tbl, Variant item)
- TableUtil.Reverse(Table tbl)
- TableUtil.Shuffle(Table tbl)
- TableUtil.IsEmpty(Table tbl)
- TableUtil.EncodeJSON(Table tbl)
- TableUtil.DecodeJSON(String json)
- `TableUtil.Map(Table tbl, Function callback)`
- `TableUtil.Filter(Table tbl, Function callback)`
- `TableUtil.Reduce(Table tbl, Function callback [, Number initialValue])`
- `TableUtil.IndexOf(Table tbl, Variant item)`
- `TableUtil.Reverse(Table tbl)`
- `TableUtil.Shuffle(Table tbl)`
- `TableUtil.IsEmpty(Table tbl)`
- `TableUtil.EncodeJSON(Table tbl)`
- `TableUtil.DecodeJSON(String json)`

Examples have been added within the source code of the TableUtil module.

#### <a name="1.2.5"> Version 1.2.5
#### <a name="1.2.5"></a> Version 1.2.5
Added `__aeroPreventStart` and `__aeroPreventInit` flags for modules (both server and client). If the `__aeroPreventStart` flag is present for a module, then the framework will not invoke the `Start` method for that module when first loaded. Similarly, `__aeroPreventInit` will prevent the framework from invoking the `Init` method when first loaded. In summary, the two flags will prevent the default behavior of the framework calling the associated `Start` and `Init` methods. This is useful if an existing module is added to the framework that has already implemented these methods for other uses.

This change will also apply to any modules using the `WrapModule` method on either the server or client.
@@ -60,7 +136,7 @@ function MyModule:Init()
end
```

#### <a name="1.2.4"> Version 1.2.4
#### <a name="1.2.4"></a> Version 1.2.4
Instead of using `while` loops to wait for code to complete, proper usage of `coroutine.yield` and `coroutine.resume` have been implemented. This change reflects best practices on Roblox. Doing this was not possible before a recent Roblox update. The overall behavior of the code remains entirely the same.

Some deprecated code has also been fixed in the TaskScheduler. The functionality remains entirely the same.
20 changes: 20 additions & 0 deletions DOCS_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Docs Readme

All documentation files are found under `/docs`. The documentation runs on [MkDocs](https://www.mkdocs.org/).

To simplify the development process, the `docs.sh` script has been written. The commands are shown below.

#### Watch:
```sh
$ ./docs.sh watch
```

#### Build:
```sh
$ ./docs.sh build
```

#### Deploy:
```sh
$ ./docs.sh deploy
```
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2018 Stephen Leitnick
Copyright (c) 2018-2020 Stephen Leitnick

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Loading