Releases: Emik03/KeepCoding
Releases · Emik03/KeepCoding
Fix Mono crash
This is NOT an April Fools update. It just happened to be this way.
I wasn't expecting to be making another release, however as many modules depend on this library, I have decided to fix a long-standing issue so that you aren't required to rewrite code. For this repository's future, I will continue to fix bugs. However, new modules should use wawa still, as this API is completely frozen. I will not accept any feature or enhancement here.
[Hotfix] Fixed severe NullOrEmptyCheck error
13.0.2 Version bump
[Hotfix] Fixed uploaded incorrect version of KeepCoding
Turns out I somehow uploaded an experimental build of KeepCoding
that caused many problems. Sorry about that!
PATCH
Changes
- Changed
Helper.GetModules()
into an extension method.
Fixes
- Uploaded correct build of
KeepCoding
.
Marking deprecated methods as Obsolete
MAJOR
Deprecated code
- Marked some methods as
Obsolete
, particularly inHelper
andKeyHelper
. This library will from now on be fully backwards-compatible, that a module made in a previous version will work identically/better in the future. This decision isn't necessarily final and may change in the future, but is my intended vision ofKeepCoding
going forward.KeepCodingLite
will continue to remove deprecated methods and as such continue to introduce breaking changes.
Removals
- Removed
External
class, moving its functionality inModuleContainer
andHelper
. This changes nothing unless you are using those methods directly as oppose to indirectly fromModuleScript
. - Removed Unity Message interfaces in
KeepCodingLite
.
MINOR
Additions
- Added
OnException
inModuleScript
.
Improvements
- Improved
ReflectionScript
's inspector significantly.
PATCH
Improvements
- Correctly disposed local variables in a few
Helper
methods.
Prevented ModConfig from crashing in Editor
12.0.1 Version bump
Fixed TPScript + Changed Helper.Flatten except argument
12 Version bump
Fixed TPScript's string-building methods
11.0.1 Assembly: Version bump
New Lite version + ModuleContainer rewrite
MAJOR
ModuleContainer rewrite
- Rewrote
ModuleContainer
, now supports vanillas. Refer to the exhaustive documentation for more details.
Additions
- Added
External
class which includesGetIgnoredModules()
andGetRuleSeedId()
. - Added
KeepCodingLite
, which removes a lot of code already filled by other libraries, or isn't needed with the latest versions of C#. - Added
ModuleEvent
class as part ofModuleContainer
. - Added
Record
andStrictRecord
class. - Added tuple sizes 5 through 9.
Changes
- Changed
ModuleScript
virtual
methods to include vanilla modules. - Changed
ModuleScript.Modules
to the typeReadOnlyCollection<ModuleContainer>
fromModuleContainer[]
. - Changed
ModuleScript.Sounds
to the typeList<Sound>
fromSound[]
, increasing performance. - Changed return values of
TPScript
'sIEnumerator
methods toIEnumerable<T>
. They will still work like normal.
Renames
- Renamed
EventHelper.StopSound()
toEventHelper.StopSounds()
. - Renamed
TupleBase
toTuple
.
Removals
- Removed
ArrayHelper.ForEach()
due to conflicts. - Removed
ModuleScript.GetIgnoredModules()
, which now exists inExternal
.
MINOR
Additions
- Added ability to yield return
IEnumerable
correctly inTPScript
. - Added and implemented Unity MonoBehaviour Message interfaces,
IAwake
,IFixedUpdate
,ILateUpdate
,IReset
,IStart
, andIUpdate
. - Added
HashCode
polyfill class. - Added
Helper.Assert()
which throws an exception if the given condition is false. - Added
ImmutableException
for exceptions relating to the transmutation of immutable objects. - Added
ModuleContainer.Append()
andModuleScript.Append()
which append events instead of overriding them. - Added
ModuleScript.ModulesOfBomb()
which allows you to get all the modules of a given bomb and cache it automatically. - Added module-grab caching which significantly increases the startup performance.
PATCH
Fixes
- Fixed
Helper.ImplementsMethod
to work correctly. - Fixed TP solver buttons being runnable outside of play mode.
Improvements
- Improved performance of
Helper.GetValues()
. - Improved performance of
Helper.ToNumber()
. - Significant performance improvements to
ModuleScript
's initialization as a whole.
Mutable AudioScript._isSFX
-
Added the property
IsSFX
inAudioScript
toget
/set
the value of_isSFX
, which is a serialized private field normally only settable in the Unity Inspector. -
Fixed typo in one of
ClipMax
's arguments inUtilityHelper
.
Added ModConfig and MonoRandom
MAJOR
Additions
- Added
ModConfig
class. - Added
MonoRandom
class.
Changes
- Changed
AudioScript
to beabstract
rather thansealed
, for more information on this change, look at Setting up AudioScript. - Changed
ColorblindInfo
constructor to disallowmoduleId
to be null. - Changed library to be mostly CLS-Compliant, and added attributes accordingly. Theoretically, this library should be good to go for other languages like Visual Basic.
- Changed
ModuleScript.IsVR
to only check forControlType.Motion
because this is the only one that changes the behaviour ofKMSelectable
s.
Removals
- Removed
For
overloads. Now it only has 1 definition which iterates until it reaches the number passed in.
MINOR
Additions
- Added
AudioScript.OnAwake()
andAudioScript.OnUpdate()
for consistency. - Added
Helper.Rev<T>()
overload to partially reverse a list. - Added
Helper.Range<T>()
overload which allows you to generate numbers 0-x without specifying 0. - Added
Helper.Repeat<T>()
overload which allows you to pass in a method instead of a variable. This allows you to re-evaluate a value as oppose to evaluating it once and cloning it for the entire iterator. - Added
ILog
toColorblindInfo
. - Added
KeyHelper.AsStruct<T>()
which allows you to apply anas
operator on a nullable struct. - Added
KeyHelper.Catch<T>()
andKeyHelper.If<T>()
, andKeyHelper.Using<T>()
overloads. - Added
KeyHelper.Conditional<T>()
,KeyHelper.Cast<T>()
,KeyHelper.Default<T>()
,KeyHelper.Is<T>()
,KeyHelper.New<T>()
,KeyHelper.Or<T>()
, andKeyHelper.TypeOf<T>()
. - Added many
KeyHelper.ForEach
overloads, which will now return itself instead ofIEnumerable<T>
, also allowing you to pass in indexes, and separate key-value pairs into 2 variables for anything inheritingIDictionary
. - Added
ModuleScript.RuleSeed
andModuleScript.GetRuleSeedId()
. - Added
readonly
keyword toNumber
andQuotientRemainder
structs.
PATCH
Additions
- Added
KeyHelper.WorkBase
deconstructor to abort the thread.
Changes
- Changed
ColorblindInfo
to inheritModConfig
. - Changed return value of
Assign
to be the iterator itself.
Fixes
- Fixed
Game.Mission.GeneratorSetting
from casting the incorrect type. - Fixed
PathManager.LoadAssets<T>()
returning incorrect values.