IdleKit Changelog
Version 2.1.1 2022-05-04
- CHANGE Changed
MilestoneClaimableActiontoMilestoneClaimableStateAction. Now all calls to this action requires theMilestoneentity. - CHANGE Improvements to the
IPayoutEntityinterface to be able to pay out more than just currencies. - CHANGE Improvements to decrease strain on the backend, generator saved data is not sent with every automated generator collection.
- BUFIX Fixes related to load phases being unable to complete if Beamable hasn't loaded.
- BUGFIX Deserializing in beamable will only return true when returning valid save data.
- FEATURE A user description string has been added to the
IProgressableinterface which can be used to display information about what is currently happening in load phases.
Version 2.1 2022-03-16
- BUGFIX Fixes issue saving analytics events to json.
- CHANGE Kraang Analytics package has been split into its own package, and is now pulled in as a dependency of IdleKit.
- CHANGE Kraang Analytics classes have been refactored to be less dependent on IdleKit.
- CHANGE Story Sequence Tool has been split into its own pacakge, and is now pulled in as a dependency of IdleKit.
- BUGFIX Fixed a bug where random rewards for sometimes unevenly weighted to omit the lowest and the highest values in the rewards list.
- CHANGE Refactored the
ActivityTrackingServiceto make use of theProjectionServiceinstead of using its own logic for calculations. This change also introduced a newOfflineProgressActionwhich replaced the previousOfflineProgressActionStartandOfflineProgressActionEnd. - CHANGE The
Startupclass now has 2 separate methods for switching to main game content and to event content:SwitchToMainGameandSwitchToEvent. Both methods have clearer signatures. - FEATURE Added
CheckVersionLoadPhaseas well asVersionMismatchActionandVersionServicefor reacting to client's version mismatch. The data about current client version is stored inside of theVersionDataclass. - CHANGE
UserSavedDatanow has a clear separation betweenContentIdandEventSettingsId. - BUGFIX A bunch of bugfixes for the Story Sequence Tool.
- CHANGE Added an
IsForceShowedproperty to theIPromoSavedDataso the promo system can now tell whether a force shown promo has already been shown to the player.
Version 2.0.0, 2021-12-13
- FEATURE Beamable backend framework has been integrated into IdleKit to handle saving player data.
- FEATURE Added
PromoPurchasedStateActionfor savingPromoSaveDatawhen a promo is purchased. - CHANGE Added
RankRewardsSpritePathproperty intoEventSettingsDatafor adding unique sprites for event rewards on rewarded leaderboards. - CHANGE
Promonow inherits fromStoreRewardso it can be bought by in-game currency. - CHANGE Rename CurrencyUnlockReward to CurrencyAvailableReward
List of features added to IdleKit since 1.4.1
- App Review Request Service
- Handles opening the app review native dialogue for ios/android
- Avatar Service for Manager Avatars
- Handles retrieving avatars available to the player, unlocking new avatars
- Beamable Backend
- Game server for syncing player/game state to the cloud
- Data Pipeline
- Designer-friendly game data management
- Gacha Odds Calculation Service
- Generates odds for gacha rewards in game
- IAP Purchase Service with Receipt Validation
- Real money purchases integrated with backend validation
- Kraang Analytics V2
- Updated standard game analytic events within IdleKit
- Leaderboard Service with Rewards
- Handles event and main game leaderboards and gives out rewards based on leaderboard rankings and points
- Localization Service
- Localization service for accessing translation dictionaries for multiple languages
- Local Notification Service
- Show local notifications on device at a specific time in the future
- Navigation Service for Android Inputs
- Android back button navigation mapping with view layering
- Network Connection Status Service
- Service which detects when the game loses connection to the backend servers
- New events structure based on phases
- Introduces an announcement phase and a main phase to alert players about upcoming events
- Plot Points deprecated in place of the Story Sequence Tool
- Replaced by the new narrative engine for authoring story moments - Story Sequence Tool
- Presentation Service
- A service for queueing several visual elements in the game one after the other
- Promos with Timed Durations and Triggers
- Provide promos to the player for in-app purchases which can be triggered based on a varity of rules
- Single Unified Repository
- Idlekit repositories have been consolidated into easy to manage repository
- Story Sequence Tool Integration
- Story Sequence tool is now integrated into IdleKit for narrative moments.
- User Stats Service for saving simple player data remotely
- Simple player data can be stored in the server and used between sessions
- Views Service
- Optional service for controlling the lifecycle of UI views in IdleKit
- Activity Tracking Service
- Automatically detect and account for a player’s break from the game.
Version 1.4.1, 2021-01-13
idlekit-implementation
- BUGFIX
ClaimTimedRewardStateActionandGrantGoalRewardStateActionnow dispatch as their base ActionGrantRewardStateAction.
idlekit-tools
- BUGFIX
DebugGrantRewardStateActionnow dispatches as their base ActionGrantRewardStateAction.
idlekit-examples
- FEATURE Added a new example to demonstrate extension of an
IEntity. The new example is located in theEquippableCurrencyscene, and corresponds to the newEntities/Customizing Entitiespage in the documentation. The example adds ability to equip/unequip a currency to apply its effects to a generator in the scene.
Version 1.4.0, 2020-10-16
idlekit-logging
- N/A
idlekit-ioc
- N/A
idlekit-framework
Base Collector Entity
- FEATURE Introduced
IPayoutEntity, which is implemented byIEntitythat can be paid out by any implementation ofIBaseCollectorEntity. At the moment, onlyICurrencyandIRewardimplement the interface. - CHANGE
IBaseCollectorBalanceData'sdouble basePayoutandstring payoutCurrencyIdgetters have been renamed tobasePayoutAmountandpayoutEntityId. SeeUPGRADENOTES.mdfor details. - CHANGE
IBaseCollectorEntity'sdouble payoutgetter andvoid GetPayout(bool, IModifier[])method have been renamed. SeeUPGRADENOTES.mdfor details.
Currency
- CHANGE
ICurrencyandICurrencyDataimplementIPayoutEntityandIPayoutEntityDataso it can be output by anIBaseCollectorEntity.
Reward
- CHANGE
IRewardandIRewardDataimplementIPayoutEntityandIPayoutEntityDataso it can be output by anIBaseCollectorEntity.
Time Service
- FEATURE Introduced
PauseandResumeto theITimerServiceto preventgametimefrom automatically updated.
idlekit-implementation
Activity Tracking Service
- CHANGE The service now pauses the
ITimerServiceto prevent automatic timed updates between theSetContentStateActionandIdleKitInitializedActionduring the initialization of aIContent. This makes sure that the catchup logic can be performed afterIdleKitInitializedActionafter anIContentinitialization.
Goal
- CHANGE
DynamicGoal.targetProgressestimation has been changed to only targetIGeneratorEntitiesthat are producingICurrenciessince anIGeneratorEntitycan also produceIRewarddue to the introduction ofIPayoutEntity. - FEATURE Added
CollectFromCollectorTypeGoal, which progresses when the player collects from any or a specifiedICollectorEntity. - CHANGE Added
CollectFromGeneratorTypeGoalData.any, so whenanyis set to true the goal targets anyIGeneratorEntitys in the Stage. - CHANGE
GeneratorGoalhas been renamed toBaseCollectorGoal.
Projection Service
- CHANGE
GetPayoutProjections()calculation has been changed to only targetIGeneratorEntitiesthat are producingICurrenciessince anIGeneratorEntitycan also produceIRewarddue to the introduction ofIPayoutEntity.
State Action
- CHANGE Due to
ICurrencyandIRewardchanged to implement the commonIPayoutEntityinterface,GrantRewardStateActionandCollectFromBaseCollectorStateActionalso changed to share the same base codeGrantPayoutStateAction.
idlekit-tools
UI
- CHANGE
CollectorandGeneratorUI info buttons now also display theIPayoutEntityid, type, and amount.
PlotPoint Editor
- CHANGE
PlotPointEditor.SaveSequencehas been simplified and refactored into a number of methods to improve readability and extensibility.
idlekit-examples
Generator Example
- CHANGE The Generator example has been retrofitted to work with a regular
IGeneratorEntityto produce anIReward. All the custom scripts have been removed as the baseIBaseCollectorEntitynow supports outputting anIReward.
idlekit-showcase
- N/A
Version 1.3.0, 2020-09-02
idlekit-logging
- N/A
idlekit-ioc
- N/A
idlekit-framework
Base Collector Entity
- FEATURE Added a new
IBaseCollectorEntitythat contains the properties shared betweenIGeneratorEntityandICollectorEntity. The following interfaces have been similarly added: IBaseCollectorBalanceDataIBaseCollectorDataIBaseCollectorEntityDataIBaseCollectorEntitySavedData
Collector Entity
- FEATURE Added a new
ICollectorEntitywhich extendsIBaseCollectorEntity. Similarly toIGeneratorEntity, the following interfaces have also been added: ICollectorBalanceDataICollectorDataICollectorEntityDataICollectorEntitySavedData- FEATURE The following Actions have been added:
CollectorInitializedActionCollectorPayoutChangedActionCollectorStateChangedActionCollectorSpeedChangedAction- FEATURE The following StateActions have been added:
BuyCollectorStateActionCollectFromCollectorStateAction
Economy Service
- CHANGE
IEconomyService.GetPayout(IBaseCollectorEntity baseCollectorEntity)has been deprecated, useIBaseCollectorEntity.GetPayout()instead. - CHANGE
IEconomyService.GetPayout(IBaseCollectorEntity baseCollectorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)has been deprecated, useIBaseCollectorEntity.GetPayout(bool applyModifiers, IModifier[] excludedModifiers = null)instead. - CHANGE
IEconomyService.GetDuration(IBaseCollectorEntity baseCollectorEntity)has been deprecated, useIBaseCollectorEntity.GetDuration()instead. - CHANGE
IEconomyService.GetDuration(IBaseCollectorEntity baseCollectorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)has been deprecated, useIBaseCollectorEntity.GetDuration(bool applyModifiers, IModifier[] excludedModifiers = null)instead. - CHANGE
IEconomyService.GetAffordableUnitsToNextTarget(IGeneratorEntity generatorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)has been deprecated, useIGeneratorEntity.GetAffordableUnitsToNextTarget(bool applyModifiers, IModifier[] excludedModifiers = null)instead. - CHANGE
IEconomyService.GetMaxAffordableUnits(IGeneratorEntity generatorEntity, bool applyModifiers, int maxCap = -1, IModifier[] excludedModifiers = null)has been deprecated, useIGeneratorEntity.GetMaxAffordableUnits(bool applyModifiers, int maxCap = -1, IModifier[] excludedModifiers = null)instead. - CHANGE
IEconomyService.GetIncrementGeneratorUnitCost(int unitsToIncrease, IGeneratorEntity generatorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)has been deprecated, useIGeneratorEntity.GetIncrementGeneratorUnitCost(int unitsToIncrease, bool applyModifiers, IModifier[] excludedModifiers = null)instead.
Event Content
- REMOVE
IEventContentSavedDataandIStandardEventContentSavedDatahave been removed as we no longer track the index of the activeIMilestone. SeeUPGRADENOTES.mdfor details. - CHANGE
IEventContent.activeMilestonehas been renamed toIEventContent.GetCurrentMilestone(). - FEATURE Added
IEventContent.GetCurrentMilestoneIndex()to return the index of the currentIMilestone. This is useful for UI display purpose.
Event Settings
- FEATURE Added
bool MilestoneCompletionInfo.completethat indicates theIMilestoneassociated with theMilestoneCompletionInfohas been actually completed instead of having a projected completion time (see below). - CHANGE
MilestoneCompletionInfo.completionTimehas been renamed toMilestoneCompletionInfo.projectedCompletionTime. This is a saved data breaking change and aFormerlySerializedAsattribute is added to theMilestoneCompletionInfo.projectedCompletionTime. SeeUPGRADENOTES.mdfor details. - CHANGE
IEventSettings.CanCompleteMilestone(string);has been changed toIEventSettings.CanCompleteMilestone(IMilestone);. SeeUPGRADENOTES.mdfor details. - CHANGE
IEventSettings.SetMilestoneCompletionTime(string, long);has been changed toIEventSettings.SetMilestoneCompletionTime(IMilestone, long);. SeeUPGRADENOTES.mdfor details.
Generator
- CHANGE
IGeneratorStatesnow implementsIInjectablethat allows them to be injected from theIContainer. See theGeneratorEntityinidlekit-implementationto see how it is utilized. - FEATURE Introduced specific
IGeneratorStateinterfaces so the existingIGeneratorStateinterfaces can be injected:IAutoCollectState,IProduceState,IWaitToBuyState, andIWaitToCollectState.
- CHANGE
GeneratorStateTypeenum has been changed to a static class that contains constantstringsas state types, seeUPGRADENOTES.mdfor more details. The affectedIGeneratorStateandIGeneratorEntityinterfaces have been updated. - CHANGE In order to support the
ICollectorEntityfeature, the following interfaces have changed: IGeneratorBalanceDatanow extendsIBaseCollectorBalanceDataand has some of its fields moved into itIGeneratorDatanow extendsIBaseCollectorDataand has some of its fields moved into itIGeneratorEntitynow extendsIBaseCollectorEntityand has some of its fields and methods moved into itIGeneratorEntityDatanow extendsIBaseCollectorEntityDataand has some of its fields moved into itIGeneratorEntitySavedDatanow extendsIBaseCollectorEntitySavedDataand has some of its fields and methods moved into it- CHANGE
IGeneratorEntity.Collect(long count=1)now returnsboolinstead ofvoidto indicate whether or not the collection was successful
Standard Content
- FEATURE Added a
IStandardContent.collectorEntitiesandIStandardContentData.collectorEntityIdsto support the addition ofCollectorEntity
Listener Priority
- FEATURE Abstracted the class
ListenerPrioritywith constant int valuesprioritiesfromIActionServiceto also provide listener priority toITimerListenerin addition toIAction.- The constant priorities included are:
LOWEST,LOW,MEDIUM,HIGH, andHIGHEST.
- The constant priorities included are:
Timed Reward
- FEATURE Added
float ITimedReward.progress {get;}that shows a 0 to 1 progression whether theITimedRewardcan be claimed or not.
Timer Service
- FEATURE Added the ability to specify the order
ITimerListenersare evaluated inITimerService. AllITimerListenernow can optionally provide theint priorityin itsITimerSubscription. The higher theprioritythe earlier theITimerListenerwould get evaluated.
idlekit-implementation
Action
- REMOVE
CompleteMilestoneStateActionhas been deprecated, seeUPGRADENOTES.mdfor details. - CHANGE
SetProjectedMilestoneCompletionStateActionhas been renamed toSetMilestoneCompletionInfoStateAction, seeUPGRADENOTES.mdfor details. - FEATURE A
ClearContentActionhas been added. This signifies the point at which the currently loadedIContententity is unloaded when restarting the app or switching content. - CHANGE The
ClearContentStateActionhas been renamedClearContentIdStateActionto more specifically express the behavior of the action. SeeUPGRADENOTES.mdfor details.
Collector Entity
- FEATURE Added a new
CollectorEntitywhich extendsBaseCollectorEntity. Similarly toGeneratorEntity, the following classes have also been added: CollectorBalanceDataCollectorDataCollectorEntityDataCollectorEntitySavedData
Economy Service
- CHANGE
EconomyService.GetPayout(IBaseCollectorEntity baseCollectorEntity)has been deprecated, useBaseCollectorEntity.GetPayout()instead. - CHANGE
EconomyService.GetPayout(IBaseCollectorEntity baseCollectorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)has been deprecated, useBaseCollectorEntity.GetPayout(bool applyModifiers, IModifier[] excludedModifiers = null)instead. - CHANGE
EconomyService.GetDuration(IBaseCollectorEntity baseCollectorEntity)has been deprecated, useBaseCollectorEntity.GetDuration()instead. - CHANGE
EconomyService.GetDuration(IBaseCollectorEntity baseCollectorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)has been deprecated, useBaseCollectorEntity.GetDuration(bool applyModifiers, IModifier[] excludedModifiers = null)instead.
Event Content
- FEATURE Added a
string[] collectorEntityIdsproperty to support the addition ofCollectorEntity - CHANGE Due to the removal of
IEventContentSavedData, theEventContentimplementation now determines theIEventContent.GetCurrentMilestone()dynamically based on theIMilestone.canClaimstatus of all the loadedIMilestones.- This eliminates the potential risk that the removed
IEventContentSaveData.milestoneIndexbe out of sync with the completion status of theIMilestones(it may point to aIMilestonethat is completed if the they are tracked separately). - Use
IMilestone.isActiveon theIEventContent.GetCurrentMilestone()to see if the currentIMilestoneis active or not.
- This eliminates the potential risk that the removed
Event Settings
- CHANGE
IEventSettingsSavedData.SetMilestoneCompletionTime(string, long, bool)has been updated to only update theMilestoneCompletionInfofor theIMilestonewhenMilestoneCompletionInfo.completeisfalse.
Generator
- CHANGE The existing
AutoCollectState,ProduceState,WaitToBuyState, andWaitToCollectStatehave been retrofitted to work with the new interface and the container. - CHANGE Due to the change of
GeneratorStateTypeenum to a static class, affected functions that originally use the enum are now using the type of theIGeneratorStateobject instead. - CHANGE The
IGeneratorStatesare now injected in theGeneratorEntityimplementation. - CHANGE
AutotCollectState.minimumUpdateInterval { set; }has been moved toTestAutoCollectStatein idlekit-tools the{ get; }functionality is retained. - CHANGE In order to support the
CollectorEntityfeature, the following classes have changed: GeneratorBalanceDatanow extendsBaseCollectorBalanceDataand has some of its fields moved into itGeneratorDatanow extendsBaseCollectorDataand has some of its fields moved into itGeneratorEntitynow extendsBaseCollectorEntityand has some of its fields and methods moved into itGeneratorEntityDatanow extendsBaseCollectorEntityDataand has some of its fields moved into itGeneratorEntitySavedDatanow extendsBaseCollectorEntitySavedDataand has some of its fields and methods moved into it- CHANGE
CollectorEntity.Collect(long count=1)now returnsboolinstead ofvoidto indicate whether or not the collection was successful - CHANGE Removed the
GeneratorAction. The Actions that previously extendedGeneratorActionhave not been removed. - CHANGE
GeneratorBalanceDatawill now log an error ifbaseGeneratorUnitCostis equal to 0. - CHANGE
GeneratorEntitySavedData.Buy()no longer increments the generator unit by 1. The functionality has been moved into theBuyGeneratorStateActioninstead.
Listener Priority
- CHANGE
EventServicenow subscribes toITimerServicewith priority ofLOWEST. - CHANGE
TimedBoostnow subscribes toITimerServicewith priority ofLOW. - CHANGE
SerializationServicenow subscribes toITimerServicewith priority ofLOWEST.
Modifier Formula
- FEATURE Added
CollectorPayoutModifierFormulato support Modifiers forCollectorEntity - FEATURE Added
CollectorSpeedModifierFormulato support Modifiers forCollectorEntity
Standard Content
- FEATURE Added a
StandardContent.collectorEntitiesandStandardContentData.collectorEntityIdsto support the addition ofCollectorEntity
Startup
- CHANGE
Startup.ResetGamewill no longer reset the content Id stored within theIUserSavedData. The effect of this is that when restarting the app viaResetGame, it will boot back into theIContentthe player had loaded previously. This mirrors the behavior of quitting/restarting the app. SeeUPGRADENOTES.mdfor details.
Upgradeable Currency
- BUGFIX Fixed an issue where
upgradeLevelwasn't reset when resettingUpgradeableCurrencySavedData.
idlekit-tools
AssemblyUtil
- CHANGE
AssemblyUtilnow filters out all system / Unity assemblies and returns IdleKit or custom types.
Data Asset Importer
- FEATURE Importing a single data sheet now updates the entities database if it can be found in the output folder.
Class Generation Tool
- CHANGE The generation of extended
IEventContentandIGeneratorEntityclasses has been disabled.
Guid Reference
- CHANGE The Guid Ref helper now supports display of nested assets that share a single path.
UI
- BUGFIX Fix an issue that the
MilestonePanelscroll kept getting reset when there is an UI update in the game such as when an ICurrency is collected.
idlekit-examples
Reward Generator Entity
- CHANGE Updated the
RewardGeneratorEntityandRewardGeneratorEntityDatato support the addition ofBaseCollectorEntity.
Boost
- CHANGE Updated the
Boostexample to show how Additive and Multiplicative modifiers can be applied forIGeneratorspeed, payout and unit cost.
idlekit-showcase
- N/A
Version 1.2.0, 2020-07-02
idlekit-logging
- N/A
idlekit-ioc
- N/A
idlekit-framework
Activatable
- FEATURE Added
IActivatableandIActivatableData, which are entities that can be activated, deactivated and reset, such asITrackorIGoal.
Event Settings
- FEATURE Added
IEventSettings.timeRemainingto get the time remaining of an event in milliseconds. - FEATURE Added
IEventSettings.SetEventEndTime(long timestamp)to set the end time (and duration effectively) of an event. - CHANGE
IEventSettingsData.eventDurationhas been deprecated. See UPGRADENOTES.md for details. - FEATURE Added
IEventSettingsSavedData.SetEventEndTime(long timestamp)to set theIEventSettingsSavedData.timeCompletedTimestamp. - CHANGE
IEventSettingsSavedData.EndEvent(long eventEndTimestamp)has been deprecated. UseIEventSettingsSavedData.EndEvent()instead.
Goal
- CHANGE
IGoalnow extendsIActivatableandIGoalDataextendsIActivatableData
Milestone
- CHANGE
IMilestonenow extendsIActivatableandIMilestoneDataextendsIActivatableData
Projection Service
- FEATURE Added
IProjectionService.RefreshPayoutProjections()to re-calculate the currentIPayoutProjections.
Random Service
- FEATURE Added
IRandomServicethat handles all random number generation. - CHANGE
IRandomWeightedExtensions.GetRandomWeightedElement()has been deprecated. Please useIRandomService.GetRandomWeightedElementinstead.
Standard Content
- FEATURE Added the
IStandardContentFeaturesinterface component which extracts the trade, timedboost, and timertrunk logic from theIStandardContent.
Timed Activatable
- FEATURE Introduced interfaces for the Timed Activatable:
ITimedActivatable,ITimedActivatableData,ITimedActivatableDataAssetandITimedActivatableSavedData. A Timed Activatable contains anIActivatableand provides timer functionality to activate and deactivate this activatable. - FEATURE Introduced interfaces for the Timed Track:
ITimedTrack,ITimedTrackData,ITimedTrackSavedData.
Track
- FEATURE Introduced interfaces for the Track Entity:
ITrack,ITrackData,ITrackSavedData,ITrackDataAssetIGoalTrack,IGoalTrackDataIMilestoneTrack,IMilestoneTrackData,IMilestoneTrackSavedData
- FEATURE Added
ITrackServicethat handles loading ofITracks andTimedTracks.
idlekit-implementation
Action
- FEATURE Added the
ResetEntitySavedDataStateActionto reset anIEntity's saved data. - FEATURE Added the
TrackCompletedActionas part of the Track feature. - FEATURE Added the
TimedEntityCompletedActionas part of the TimedEntity feature. - FEATURE Added the following state actions as part of the Track feature:
ClaimTrackGoalStateAction,ClaimMilestoneTrackRewardsStateAction,CompleteMilestoneTrackStateAction,CompleteTrackMilestoneStateAction - FEATURE Added the following state actions for activating and deactivating certain Activatables:
ToggleTimedEntityStateAction,ToggleMilestoneStateAction,ToggleTrackStateAction - CHANGE
StaticDataAddedActionandStaticDataRemovedActionnow store a dictionary of types and data Ids instead of an array of data, so listeners can iterate through the types instead of type checking each individual data. - CHANGE
EventStartedStateActionandEventEndedStateActionnow extendEventStateAction. - CHANGE
eventContentIdanduniqueEventContentIdhas been removed fromEventStartedStateActionandEventEndedStateAction. This can be taken fromeventSettings.eventSettingsDatainstead. - FEATURE
SetEventDurationStateActionhas been added to change an event's duration. - CHANGE All calls using
System.Randomin reward related actions have been replaced to calls to theRandomService. - CHANGE
NewStageStateActionno longer sets available currencies for the new stage. This functionality has been moved toContent.SetAvailableCurrencies(), which dispatchesSetAvailableCurrenciesStateAction. - FEATURE
SetAvailableCurrenciesStateActionhas been added to set a list of currencies' available status.
Currency
- FEATURE
CurrencyServicenow supports loading and unloading of Global currencies and Content specific currencies. Currency entities are also loaded by the service whenICurrencyDataare loaded. - CHANGE
CurrencyServicenow subscribes toStaticDataAddedActionandStaticDataRemovedActioninstead ofContentDataAddedActionandContentDataRemovedAction. This ensures that global currencies are not unloaded when switching content.
Economy Service
- CHANGE Add a
doubleoverflow check forIEconomyService.GetIncrementGeneratorUnitCost(int, IGeneratorEntity, bool, IModifier[])in case the generator unit cost becomes too large and returns infinity.
Event Settings
- FEATURE Added
EventSettings.timeRemainingto get the time remaining of an event in milliseconds. - FEATURE Added
EventSettings.SetEventDuration(long eventDuration)to set the duration of an event. - CHANGE
EventSettingsData.eventDurationhas been deprecated. See UPGRADENOTES.md for details. - FEATURE Added
EventSettingsSavedData.eventDurationandEventSettingsSavedData.SetEventDuration(long eventDuration)to save the duration of an event.
Content
- FEATURE
BeginStage()now callsSetAvailableCurrencies()to make all currencies inStageData.availableCurrencyIdsof the current and previous stages toavailable.
Goal
- FEATURE Added
IActivatableinterface memberactivatableDataandisActiveflag to abstractGoalclass - CHANGE
GoalSavedData.canClaimnow checks iftargetProgressionhas been set so that un-activated goals cannot be claimed - CHANGE
Goal.Deactivate()no longer resets the saved data of aIGoal, the state of theIGoalwill be preserved. See UPGRADENOTES.md for more details. - FEATURE
Goal.Reset()has been added. This method will deactivate aIGoaland reset it's saved data. - FEATURE
ResetGoalStateActionhas been added to ensure that manipulation of saved data occurs within aIStateAction. - CHANGE Goals now resolve entities on
Activate()instead of onInitialize()to support global loading of Goals.
Loading
- REMOVE Removed
ContentDataAddedActionandContentDataRemovedActionfromClearContentDataLoadPhaseandLoadContentDataLoadPhaserespectively. Services now listen toStaticDataAddedActionandStaticDataRemovedActioninstead.
Milestone
- FEATURE Added
IActivatableinterface memberactivatableDatatoMilestoneclass - FEATURE Added
isActiveflag toMilestoneandMilestoneSavedData - FEATURE Added
Resetmethod toIMilestonein order to denote resetting (wipe saved data). - FEATURE
ModifierServicenow supports loading and unloading of Global modifier formulas and Content specific modifier formulas. Modifier formula entities are also loaded by the service whenIModifierFormulaDataare loaded. - CHANGE
ModifierServicenow subscribes toStaticDataAddedActionandStaticDataRemovedActioninstead ofContentDataAddedActionandContentDataRemovedAction. This ensures that global modifier formulas are not unloaded when switching content.
PlotPoint Runtime
- CHANGE If
Pause()is invoke on thePlotPointControllerin the middle of playing a plotpoint, it would finish playing the current plotpoint and then pause.
Projection Service
- FEATURE Added
ProjectionService.RefreshPayoutProjections()to re-calculate the currentIPayoutProjections.
Random Service
- FEATURE Added
RandomServicethat handles all random number generation. The functionality can be overriden to generate these values from the backend. - CHANGE All calls using
System.Randomin entities, services, and actions have been replaced to calls to theRandomService.
Reward
- FEATURE
RewardServicenow supports loading and unloading of Global rewards and Content specific rewards. Reward entities are also loaded by the service whenIRewardDataare loaded. - CHANGE
RewardServicenow subscribes toStaticDataAddedActionandStaticDataRemovedActioninstead ofContentDataAddedActionandContentDataRemovedAction. This ensures that global rewards are not unloaded when switching content. - FEATURE
CurrencyReward,BaseRandomCurrencyRewardnow supports reward values (almost) up tomax.double, seeRandomServiceforRandom.NextDouble()limitations. - CHANGE All calls using
System.Randomhave been replaced to calls to theRandomService.
Standard Content
- CHANGE Duplicate functionality of trade, timerTrunk, and timedBoost has been abstracted into the
StandardContentFeaturescomponent inside theStandardContent, andStandardEventContent.
Timed Activatable
- FEATURE Introduced Timed Activatable related classes that inherit from the new
ITimedActivatableinterfaces. - FEATURE Introduced the abstract
TimedTrackentity, which is aTimedEntitywith anITrackas its activatable, as well as concreteTimedGoalTrackandTimedMilestoneTrackentities.
Timer Service
- CHANGE
ITimerListener.UpdateProgression(1f)is called by theTimerServicebeforeITimerListener.OnTimerEnded(long)in theITimerListenerevaluation logic. All implementations ofITimerListenerwill receiveUpdateProgression(1f)beforeOnTimerEnded(long)is called. - CHANGE Non-looping
ITimerListenersare automatically unsubscribed by theITimerServicebeforeITimerListener.OnTimerEnded(long)is called.ITimerListenerno longer needs to unsubscribe itself from theITimerServiceonOnTimerEnded(long).
Track
- FEATURE Introduced Track Entity related classes that inherit from the new ITrack interfaces.
- FEATURE Added new Track Entity Types:
- Track: Provides base functionality for all concrete Track implementations
- Goal Track: A Track that contains only
IGoals, the track progresses when the activeGoalis claimed. - Passive Goal Track: A Track that contains only
IGoals, the track progresses when the activeGoalcan be claimed. - MilestoneTrack: A Track that contains only
IMilestones
Trade
- CHANGE All calls using
System.Randomhave been replaced to calls to theRandomService.
idlekit-tools
Data Asset Importer
- FEATURE Added functionality to import Track and Timed Entity data.
Debug Tools
- BUGFIX Fixed clicking
Ascendin the debug ascend tool inev-FB_contentwould hang the game.
Events
- CHANGE
CanvasEventViewandCanvasReturnToMainContentViewhas been updated to support the newIEventSettings.SetEventDuration()functionality.
Goal
- FEATURE Added
CanvasGoalView.SetActiveGoalViewto change the progress bar fill color of active / inactive goals - FEATURE Goal UI now shows the current progression and target progression of each Goal.
Guid Reference
- CHANGE
GuidReferencedropdowns in all the Unity Inspector views have been updated to show theIStaticData.idinstead of the filename of theIGuidReferenceableAsset.
Timed Entity
- FEATURE Added TimedEntityPanel which contains the Track panels.
Track
- FEATURE Added GoalTrackPanel and MilestoneTrackPanel for the track feature.
- FEATURE Added track data field in
SimpleEntitiesDatabasefor the track feature - FEATURE Added
CanvasGoalTrackPanelandCanvasMilestoneTrackPanelto display a Goal Track or Milestone Track
UI
- FEATURE Information on whether the user has seen an
EventEndpopup is being reset inIStartup.ResetGame(bool).
idlekit-examples
Synchronous Loading
- FEATURE The Synchronous Loading example has been repurposed into a First Scene tutorial. See the tutorials section http://docs.idlekit.io for more information.
Track
- FEATURE Added a Track example which shows how the Timed Entity and Tracks could be used.
idlekit-showcase
Events
- CHANGE Showcase Event UI has been updated to support the new
IEventSettings.SetEventDuration()functionality.
Version 1.1.1, 2020-06-01
idlekit-logging
- N/A
idlekit-ioc
- N/A
idlekit-framework
- N/A
idlekit-implementation
- N/A
idlekit-tools
Unit Tests
- Small fixes to unit tests to resolve issues in Unity 2019
idlekit-examples
- N/A
idlekit-showcase
Balance Data
- CHANGE Data changes to resolve a bug where
TimedBoosts were not being applied in maingameContent. See DATACHANGELOG.md for details.
Version 1.1.0, 2020-05-25
idlekit-logging
Test Logger
- CHANGE
TestLogger.LogErrornow callsDebug.LogErrorto break the execution of tests in Unity unlessignoreFailingMessagesis set to true. This is to ensure error logs are properly tested in unit tests.
idlekit-ioc
- N/A
idlekit-framework
Action
- FEATURE Added the ability to specify the priority the listeners(subscribers) get called, in the
IActionService.Subscribe<T>(Action<T> listener, object instance, int priority)method. The listener with the higher priority will get called first when anIActionis dispatched. - CHANGE The delegate type
ActionHandler<T>has been removed, use C#'sAction<T>instead. All functions that requireActionHandler<T>have been updated to useAction<T>. Since the signatures ofActionHandler<T>andAction<T>are the same, no client code change is required. - CHANGE
IAction.dispatchAshas been renamed toIAction.typesToDispatchAsfor consistency and to fix a class generation tool issue.
Container
- FEATURE Added
UnbindIKInstallerto theIIKMonoInstallerto cleanup theIIKInstallercomponent in theIIKMonoInstaller. - FEATURE Added
IActionResolverwhich is anITypedResolversimilar toIEntityResolverto limit the access to provide resolution ofIActions.
Currency
- FEATURE Added
void Cleanup()toCurrencyAmountstruct for cleanup purpose.
Data Loader
- FEATURE Added
void ClearData(IStaticData)andvoid ClearData(IStaticData[])for unloadingIStaticDatafrom theIContainer. All implementations ofIDataLoaderServicehave been updated. - CHANGE
void LoadData(IStaticData,bool)andvoid LoadData(IStaticData[], bool)have been changed tovoid LoadData(IStaticData)andvoid LoadData(IStaticData[]). See UPGRADENOTES.md for details.
Event Settings
- REMOVE Removed
IEventSettings.CompleteMilestoneas this functionality should be performed via aCompleteMilestoneStateAction. - FEATURE Added convenience method
MilestoneCompletionInfo GetMilestoneCompletionInfo(string)toIEventSettings.
Generator
- CHANGE
void Collect(int)has been changed tovoid Collect(long)to support a larger number of collections.
Loading
- FEATURE Added new
IAdvanceStageLoadPhaseILoadPhasethat is responsible for moving the player to the next availableIStage. It can also be used to loadStagespecific assets. - FEATURE Added new
IClearContentDataLoadPhaseILoadPhasethat is responsible for clearing allIStaticDataassociated with anIContent. - FEATURE Added new
IClearGlobalDataLoadPhaseILoadPhasethat is responsible for clearing all globalIStaticData. - FEATURE Added new
IClearContentIdLoadPhaseILoadPhasethat is responsible for clearing theIUserSavedData.contentInstanceId. - FEATURE Added new
ISetContentIdLoadPhaseILoadPhasethat is responsible for determining and setting up theIUserSavedData.contentInstanceIdthat the game is going to load.
Projection Service
- FEATURE Added
IProjectionServiceandIProjectionCalculatorto get projections ofCurrencyAmountearned over a period of time or completion timestamp to reached a certainCurrencyAmountwithout player input. - FEATURE Added
IPayoutProjectionmodel class that represents theICurrencygeneration rate of the game before an expiration timestamp. This is useful to calculate currency earnings before anITimedBoostexpires.
Serializer
- FEATURE Added
void DeleteAll()to theISerializerto delete allISavedDataat runtime. All implementations ofISerializerhave been updated.
Startup
- FEATURE Added
void ResetGame(bool)feature to allow in app reset. - CHANGE
void StartGame(IContext)has been changed tovoid StartGame(). All implementations ofIStartuphave been updated. - FEATURE If the player was going to start the game in an expired/complete
EventContent, the game would now start the player in theMainGame.
Timer Listener
- CHANGE
void OnTimerEnd(int count)has been changed tovoid OnTimerEnd(long count)to support a larger number of collections. See UPGRADENOTES.md for details.
idlekit-implementation
Action
- CHANGE Performed a cleanup pass on all
IActionandIStateActionto prevent memory leak using the following guidelines:- All injected protected variables should be set to null on
void ResetEvent() - All cached properties should be
Clear()and set to null onvoid Cleanup()
- All injected protected variables should be set to null on
- REMOVE
StaticDataAddedActionandStaticDataRemovedActionhave had thebool contentSpecific { get; set; }flag removed. See UPGRADENOTES.md for details. - CHANGE
IAction.dispatchAshas been renamed toIAction.typesToDispatchAsfor consistency and to fix a class generation tool issue, which impacts all actions and state actions. - FEATURE Added
SetProjectedMilestoneCompletionStateActionwhich should be dispatched when settingIMilestoneprojected completion timestamps inIEventSettingsSavedData. - CHANGE The
CompleteMilestoneStateActionnow validates that theIMilestonecan be completed prior to changing saved data. - CHANGE Passing a null instance to
ActionService.Unsubscribenow generates a warning. See UPGRADENOTES.md for details.
Activity Tracking
- REMOVE
Milestoneprojection logic has been moved toEventService. SeeMilestone Projectionsection below for details.
Data Loader
- CHANGE
DataLoaderServiceno longer automatically unloadIStaticDataonClearContentStateActionandvoid Cleanup(). They are now unloaded inIClearGlobalDataLoadPhaseandIClearContentDataLoadPhase. - FEATURE Added
ContentDataAddedActionandContentDataRemovedActionwhich are being listend to byCurrencyService,ModifierService, andRewardServiceto loadICurrencies,IModifierFormulas, andIRewards. The services no longer listen toSetContentStateActionandClearContentStateAction.
Economy Service
- CHANGE EconomyService.GetDuration now logs an error instead of a warning when generator duration is too high or too low.
Entity
- CHANGE Perform a cleanup pass on all
IEntityto prevent memory leak using the following guidelines:- All injected protected variables should be null and loaded
IEntityshould be unloaded onvoid Cleanup() - All cached collections should be
Clear()and set to null onvoid Cleanup()
- All injected protected variables should be null and loaded
Event Settings
- REMOVE Removed
EventSettings.CompleteMilestoneas this functionality should be performed via aCompleteMilestoneStateAction. - CHANGE
EventSettings.SetMilestoneCompletionTimenow broadcasts aSetProjectedMilestoneCompletionStateActionrather than directly manipulating saved data. - CHANGE
EventSettingsSavedData.CompleteMilestonewill now log an error if an invalidmilestoneIdis passed.
Generator
- FEATURE Added
long minimumUpdateInterval { get; set; }toAutoCollectStateso the user can set the minimum collection interval for testing instead of using a constant 500 milliseconds.
Milestone Projection
- CHANGE
Milestoneprojection logic has been moved fromActivityTrackingServiceintoEventServiceutilizing the newProjectServiceto calculate the completion time of theMilestoneswithout any player input.
Plot Point
- CHANGE
PlotPointServicenow implementsBindingServiceso it can bind and unbindPlotPointrelated entities with their base types.
SerializationService
- FEATURE Added
void ResetUser()to facilitate in app reset.
Service
- CHANGE Performed a cleanup pass on all
IServiceto prevent memory leak using the following guidelines:- All injected protected variables should be null and loaded
IEntityshould be unloaded onvoid Cleanup() - All cached collections should be
Clear()and/or set to null onvoid Cleanup()
- All injected protected variables should be null and loaded
Timer
- BUGFIX Fixed a bug where recursively calling
TimerService.EvaluateListenerwould throw an index or null exception if thelistenersinTimerServicehave been modified.
idlekit-tools
Action
- CHANGE An issue with the class generation tool extending actions and state actions has been fixed by renaming
IAction.dispatchAstoIAction.typesToDispatchAsfor consistency
Data Asset Importer
- FEATURE Added an input folder and
Generate Pathsoption, which matches each data asset with its corresponding csv files.- This functionality only supports the default IdleKit csv naming format, e.g. !!!AscensionReward!!!.
- To change the csv file name recognition, please change
SimpleDataAssetImporterEditorWindow.GetFormattedTypeName()
Plot Point
- BUGFIX Solved a bug that the ascension completion plotpoint would not be played if an event ends while during the ascension gameplay.
UI
- CHANGE Perform a cleanup pass on all UI code to prevent memory leak using the following guidelines:
- All injected protected variables should be null and loaded
IEntityshould be unloaded on its cleanup method. - All cached collections should be
Clear()and set to null on its cleanup method.
- All injected protected variables should be null and loaded
- FEATURE Added
CanvasDebugResetGameTooland the UI reset game debug tool, which has the option to reset all theISavedData.
idlekit-examples
- CHANGE Updated
SynchronousLoadingexample to overrideSwitchStage()now the base method uses async loadphases.
idlekit-showcase
- N/A
Version 1.0.1, 2020-04-20
idlekit-logging
- N/A
idlekit-ioc
- N/A
idlekit-framework
- N/A
idlekit-implementation
Activity Tracking Service
- CHANGE Changed the interval at which
IMilestoneprojection logic runs to once every 15 seconds.
Economy
- BUGFIX Removed
Economy.MIN_GENERATOR_DURATION,Economy.GetDuration()will useGeneratorBalanceData.MIN_DURATIONinstead. - BUGFIX
Economy.GetDuration()will returnlong.MaxValueif generator duration is too large.
Event Content
- BUGFIX
CleanupActiveMilestone()is now called when the Event ends to prevent further invalid progress.
Generator
- BUGFIX
AutoCollecState.collectDuration()now properly returns a collect duration which is the closest multiple ofIGeneratorEntity.duration. - BUGFIX
CollectFromGeneratorPlayerEvent.Apply()now accounts for collections that aren't at current timestamp. This resolves a bug where resuming back into the app would not result in the correct production start timestamp for Generators that collected while offline.
PlotPoint
- BUGFIX Fixed an issue where the PlotPointController sequenceQueue was not properly cleared on Cleanup().
idlekit-tools
Class Generation Tool
- BUGFIX Resolved an issue where it was possible to extend test Entities in the
Tools.Editor.Testsnamespace. - BUGFIX Resolved a number of issues in the
EntityBuilderandServiceBuilderwhere incorrect base interfaces were being calculated.
idlekit-examples
- N/A
idlekit-showcase
- N/A
Version 1.0.0, 2020-03-10
idlekit-logging
- FEATURE This repo has been added to contain any functionality related to
IdleKitLog,IPriorityLoggerand it's implementations. This repo has no dependencies and is used by all other idlekit repos.
idlekit-ioc
- FEATURE This repo has been added to contain any functionality related to dependency container (
IContainerand it's implementations). This repo depends onidlekit-loggingand is used by all other idlekit repos.
idlekit-framework
Action Service
- CHANGE
IEventServicehas been renamed toIActionService. - CHANGE
IActionService.Subscribe<T>(ActionHandler<T> listener, object instance)no longer has anulldefault value forinstance. - CHANGE Added
IActionService.Subscribe<T>(ActionHandler<T> listener)to allow implementations to subscribe globally. - FEATURE Added
IActionService.Dispatch<T>(object instance = null)to allow dispatchingIActionwithout theIActionobject. This should not be used withIActions that need to have their parameters initialized. Calls toIActionService.Dispatch<T>(T actionTrigger, object instance =null)that do not need theIActionto be initialized are now using this new method.
Boost
- FEATURE Introduced interfaces for the Timed Boost Entity;
ITimedBoost,ITimedBoostData,ITimedBoostSavedData,ITimedBoostDataAsset.
Character
- REMOVE Removed
ICharacter,ICharacterData,ICharacterSavedDataandICharacterDataAsset. This functionality will return in the form of a more generic association data in the future. Please refer to theUPGRADENOTES.mdfor more details.
Content
- FEATURE
IShowcaseContenthas been moved to framework and renamedIStandardContent. - FEATURE
IShowcaseEventContenthas been moved to framework and renamedIStandardEventContent - CHANGE
IStandardContent.missingResourcesExchangeRateMultiplierhas been split intosoftCurrencyMissingResourcesMultiplierandupgradeableCurrencyMissingResourcesMultiplier - CHANGE
IStandardContentData.missingResourcesExchangeRateMultiplierIdhas been split intosoftCurrencyMissingResourcesMultiplierIdandupgradeableCurrencyMissingResourcesMultiplierId
Continuous Integration
- FEATURE Added a continuous integration script under
Builder/Jenkinsfilethat serves as an example on how to setup a Jenkins Multi-branch Pipeline with IdleKit.
Currency
- CHANGE A
setAvailablebool has been added toCurrencyAmountto signal that theCurrency.availableflag should be set when theCurrencyAmountis processed.
Currency Service
- REMOVE Removed
ICurrencyService.ValidateAddCurrencyAmount(string id, double amount)andICurrencyService.ValidateRemoveCurrencyAmount(string id, double amount). Refer to theUPGRADENOTES.mdfor more details. - FEATURE Utility methods
ICurrencyService.RemoveCurrencyAmount(CurrencyAmount amount),ICurrencyService.AddCurrencyAmount(CurrencyAmount amount)andICurrencyService.SetCurrencyAmount(CurrencyAmount amount)have been added.
Dependency Container
- FEATURE Introduced IdleKit's own dependency solution that allows the user to bind a type, instance, or method to different types of dependency with an optional Id and various scopes. When the dependency is required, an instance of the dependency will be provided by the container and it's dependencies will be injected if it implements the
IInjectable. - FEATURE All the dependency container code is located in a separate repository at
git@github.com/Idlekit/idlekit-ioc.gitin its own name spaceIdleKit.IoC. - CHANGE The entire IdleKit codebase - the
IEntity,IAction,IService, and UI code have been refactored to work with the container. - CHANGE Please refer to the documentation
http://docs.idlekit.iofor the various components of the dependency container and the details of the integration. - REMOVE The previous
IDependencyContainerclass has been deprecated.
Entity
- FEATURE
IEntityinitialization flow has been refactored. Please refer to theUPGRADENOTES.mdfor more details. - FEATURE Introduce
void Initialize()to the lifecycle of allIEntityto perform any setup logic including the subscription toIActions. - CHANGE
IEntity.Cleanup(IEntity)method on allIEntityis now responsible for cleaning up all its childIEntitiesand other object references it may receive during its lifetime (i.e:IServices,IEntityData...etc). - CHANGE Changed all
IEntityDataAssetinterfaces to pass through a generic Type that must implementIStaticData. This allows Data Assets to be much more specific about the data they contain while also allowing them to extend other Data Assets. This also means extended Data Assets are forced to pass data that has also extended a base which means things are more consistent.
Event
- FEATURE Introduced
string uniqueContentId { get; }forIEventSettingsDataso differentIEventSettingscan have an unique id for theIEventContentthat is associated with theIEventSettings. Consequently, eachIEventSettingsis now working withIEventContent.instanceIdso itsIStaticDatacan be reused for another event (IEventSettings). - FEATURE Introduced
void CompleteEvent()forIEventSettingsandIEventSettingsSavedData, which marks the event (IEventSettings) as completed. - CHANGE Renamed
OfflineProgressActiontoOfflineProgressStartActionto mark the beginning of the Offline Activity Tracker process. - FEATURE Introduced
OfflineProgressEndActionto mark that the Offline Activity Tracker catch-up process is complete.
Event Content
- BUGFIX The next
Milestoneis no longer initialized with the previousMilestone's progress if they are not tracking the samecurrencyId.
Event Content Service
- CHANGE
IEventContentServicehas been renamed toIEventService. The previousIEventServicehas been renamed toIActionService.
Event Service
- CHANGE
IEventServicehas been renamed toIActionService. - REMOVE
bool CanClaimRewards(string)andvoid ClaimRewards(string)have been removed from theIEventContentService. Refer to theUPGRADENOTES.mdfor more details.
Generator
- CHANGE Removed references to
ICharacterandICharacterDatainIGeneratorEntityandIGeneratorData.
Goal
- FEATURE
IGoalSavedDatanow stores whether it has been claimed or not. - CHANGE
GoalDataSequenceis no longer astruct. It is aclassnow because it contains mutable property instring[] goalIds { get; }. - CHANGE
IGoal.normalizedProgressandIGoalSavedData.normalizedProgressnow return a double instead of a float
Offline Activity Tracker
- FEATURE Once the offline catch-up process is complete, an
OfflineProgressEndActionwill be broadcast.
Loading
- FEATURE Added
IAsyncLoadableandIAsyncLoaderinterfaces. These will help consolidate loading operations into more manageable processes with more feedback.
Logging
- CHANGE All Logging related code has been moved into a new repository at
git@github.com/Idlekit/idlekit-logging.git. Refer to theUPGRADENOTES.mdfor more details.
Milestone
- REMOVE
IMilestoneData.rewardIdhas been removed as it served no purpose. SeeUPGRADENOTES.mdfor details. - FEATURE Added
double currentProgress { get; }andbool canClaim { get; }toIMilestone, anddouble progression { get; }andvoid SetProgressiong(double)toIMilestoneSavedDataso they function more similarly toIGoalandIGoalSavedData. - CHANGE
IMilestone.normalizedProgressnow returns a double instead of a float
Modifier
- REMOVE
IModifierno longer implementsIEntity. - CHANGE
IModifierDatais no longerIComparable. - REMOVE
IModifierData.Initialize(IModifierCategoryData modifierCategoryData)has been removed. - REMOVE
IModifierDatano longer keeps a reference to aModifierCategoryData. - REMOVE
IModifierData.priorityhas been removed. The newIModifierFormulahandles priority implicitly. - CHANGE
IModifierCategoryDataandIModifierCategoryDataAssethave been renamed toIModifierGroupDataandIModifierGroupDataAsset. - FEATURE Added
IModifierFormula,IModifierFormulaDataandIModifierFormulaDataAsset. - FEATURE Added
IModifierFormulaParser. - CHANGE Methods in
IModifierCachethat used to useIModifierCategoryDatatypes now useIModifierFormulatypes. - REMOVE
IModifierCacheno longer holds a list of all registeredIModifiersandIModifiables - REMOVE
IEnumerable<ModifierSearchResult> SearchModifiersAffectingModifiable<TModifierCategoryData>(string modifiableId, bool checkCanBeApplied = true),IModifierCache.GetModifier(string modifierId)andIModifierCache.GetModifiable(string modifiableId)have been removed - CHANGE Added
IEnumerable<IModifiable> IModifierCache.GetModifiablesAffectedByModifier(Type modifierFormulaType, string modifierId)andIEnumerable<IModifierGroupData> IModifierCache.GetModifierGroupDatasByModifierFormula(Type modifierFormulaType). - CHANGE Methods in
IModifierServicethat used to useIModifierCategoryDatatypes now useIModifierFormulatypes. - CHANGE Added
IModifier[] IModifierService.GetModifiersAffectingModifiable(Type modifierFormulaType, string modifiableId)andIModifiable[] IModifierService.GetModifiablesAffectedByModifier(Type modifierFormulaType, string modifierId). - REMOVE Deleted
ModifierSearchResult. This functionality is now handled byIModifierGroupDataandIModifierFormula.
Namespaces
- CHANGE The following namespaces have been renamed as follows:
IdleKittoIdleKit.FrameworkIdleKit.PlotPointtoIdleKit.Framework
PlotPoint
Data
- FEATURE Introduce generic typed version of
IPlotPointDataAssetthat allows implementations to have a strongly typedatavariable. - REMOVE
IPlotPointSequenceCollectionData.StartActivatorsandIPlotPointSequenceCollectionData.Cleanuphave been removed as it is now a pure data class. The functionality is moved intoIPlotPointService.
Activation
- CHANGE
IPlotPointActivationConditionhas been incorporated into theIContainerand becameIInjectabletherefore the previousIPlotPointActivationCondition.Startmethod has been eliminated. - FEATURE Added
SubscribeandUnsubscribetoIPlotPointActivationConditionto deal with subscribing and un-subscribing to theIActionService. - REMOVE
IPlotPointActivatorData.StartandIPlotPointActivatorData.Cleanuphave been removed as theIPlotPointServiceis now in charge of creating and injecting theIPlotPointActivationCondition. - CHANGE All the implementing classes have been updated accordingly with the above changes.
Runtime
- CHANGE
IPlotPointServiceinterface has been refactored. It is now in charge of managing all plot point related features during runtime and cleanup of the activatedIPlotPointSequenceCollectionDatafor the currentIStage. - CHANGE
IPlotPointDataProvider.Clearhas been renamed toIPlotPointDataProvider.Cleanup. - REMOVE
IPlotPointDataProvider.SendDataAddedActionhas been removed.LoadPlotPointsDataLoadPhaseinidlekit-toolsis now in charged of firing the actionPlotPointsLoadedAction. - CHANGE All the implementing classes have been updated accordingly with the above changes.
- CHANGE
IPlotPointControllerinterface has been refactored to remove unnecessary functionality and added more C# event callbacks. Visit theUPGRADENOTES.mdfor details.
Reward
- FEATURE Added new
IRewardtypes:ICurrencyUnlockRewardIRandomUnobtainedCurrencyReward
- FEATURE Added new
IRewardDatatypes:ICurrencyUnlockRewardDataIRandomUnobtainedCurrencyRewardDataIFallbackRewardDataITagRewardData
- CHANGE Changed the name of
IRandomTagsCurrencyRewardtoIRandomObtainedCurrencyRewardand removed allallowUnobtainedreferences from it.IRandomTagsCurrencyRewardDatawas changed toIRandomObtainedCurrencyRewardData. - CHANGE Moved
AscensionRewardGroupfromidlekit-implementationtoidlekit-frameworksince an interface references it. - CHANGE
ITimedRewardSavedDataand related classes have been converted due to the replacement oflong timeStarted {get; }, andbool neverClaimed { get; }withlong timeComplete { get; }andbool hasStarted { get; }. It is done so the class can be more consistent with the other timer related classes. - CHANGE
IGachaReward.GetValidItemsnow takes an optionalignoreFallbackflag. - CHANGE
IReward.CanClaimnow takes an optionalignoreFallbackflag. - FEATURE
IShowcaseTimerTrunkhas been moved toidlekit-frameworkand renamedITimerTrunk.
Serializer
- FEATURE Added
bool hasDirtyData { get; }so it can be more efficient in determining if on-disc serialization needs to take place.
Services
- CHANGE Renamed the following Service interfaces to better fit naming conventions.
ICurrencyManagerwas renamed toICurrencyServiceIEconomywas renamed toIEconomyServiceIEntityLoaderwas renamed toIEntityLoaderServiceIEventManagerwas renamed toIActionServiceIEventContentManagerwas renamed toIEventServiceIModifierManagerwas renamed toIModifierServiceIPlotpointManagerwas renamed toIPlotpointServiceIRewardManagerwas renamed toIRewardServiceIStaticDataLoaderwas renamed toIDataLoaderService
Stage
- REMOVE Removed
IStageData.startCurrencyIdandIStageData.startCurrencyAmount. - CHANGE Added
IStageData.startingCurrencyAmounts.
Startup
- FEATURE Added
IStartupinterface to help manage the game boot flow. - FEATURE Added
IPhaseLoaderinterface. This can be implemented to help manage the game boot flow. - FEATURE Added
ILoadPhaseinterface. This interface will allow you to split game initialization into multiple load phases. - FEATURE Added the following
ILoadPhaseextensions that define typical game boot and content switch sequences:IInitializeUserLoadPhaseILoadGlobalDataLoadPhaseIProcessEventsSavedDataLoadPhaseILoadContentDataLoadPhaseILoadContentLoadPhaseIClearContentLoadPhase
Static Data
- CHANGE
IDataLoaderServiceis now able to load global data that do not get cleared betweenIContentusingIDataLoaderService.LoadData(IStaticData, bool).
Time Service
- FEATURE Add
DateTime systemTime { get; }, andlong systemTimestamp { get; }to allow setting of the current UTC time used in non-game specific functionality such as calculating the time the user is offline. - CHANGE The previous timestamp related functionality has been renamed to
DateTime gameTime { get; },long gameTimestamp { get; }andvoid SetGameTimestamp(long). Please theUPGRADENOTES.mdfor more details.
Trade
- CHANGE
GetRandomValidTradehas now been added to theITradeServiceto get a valid trade from a random pool ofITrades. - CHANGE
ITrade.MakeTrade()now returns a boolean value depending on whether or not the trade was successfully made. - CHANGE
ITradenow dispatchesTradeAcceptedActions andTradeDeclinedActions based on player actions.
Trade Service
- FEATURE Added a
GetRandomValidTradeFromPoolmethod toITradeServiceto get a validITradefrom a given pool ofITrades.
Unity
- CHANGE Upgraded Unity support to 2018.4.18f1.
Unlockable
- CHANGE
IUnlockablenow requiresSetAvailabilityandSetObtainedmethods to be implemented, seeUPGRADENOTES.mdfor details. - CHANGE
IUnlockableSavedDatanow requires aSetObtainedmethod to be implemented. - REMOVE
IUnlockableDatahas been removed. SeeUPGRADENOTES.mdfor details.
User
- FEATURE
long GetLastActivityTimeis added to theIUserSavedDatato get the timestamp of the last user activity in the currentIContent - FEATURE
void SetLastActivityTime(long)is added to theIUserSavedDatato set the timestamp of the last user activity in the currentIContent
idlekit-implementation
Action
- CHANGE
IEventand related classes have now been renamed toIAction. - CHANGE
IPlayerEventand related classes have now been renamed toIStateAction. - CHANGE
NewContentStateActionnow sets theContentSavedData.currentStageId. - CHANGE
LogLastActiveTimeStateActionno longer requires the currentIContent. Instead, it requires aIUserSavedDatato store the user's last active time. - CHANGE Added
ModifierChangedActionwhich denotes whenever aIModifierstate has changed (activation, index change, etc). - CHANGE Added
ModifierToggledActionwhich indicates when aIModifierhas been activated/deactivated. - CHANGE
ToggleTimedBoostStateActionandToggleBoostStateActionnow inherit directly fromModifierToggledAction. - CHANGE
CurrencyObtainedActionnow stores a flag denotes whether theobtainedflag was set to true or false. - CHANGE Added
CurrencyAvailableActionto denote when theavailableflag on anICurrencyhas been set. - REMOVE
StageSelectedActionhas been removed. See theUPGRADENOTES.mdfor details. - BUGFIX The dispatch types of
ToggleTimedBoostStateActionhave had the incorrect type ofToggleBoostStateActionremoved. - REMOVE
OpenTimerTrunkStateActionhas been removed. Please see theUPGRADENOTE.mdfor details. - CHANGE Renamed
GeneratorUnitTargetHitActiontoGeneratorModifierIndexChangedAction. - CHANGE
IncrementGeneratorUnitStateActionno longer extendsGrantRewardStateAction. All reward logic is now handled inGeneratorUnitTargetHitStateAction. - FEATURE Added new
GeneratorUnitTargetHitStateActionwhich extendsGrantRewardStateAction. - CHANGE Moved all ascension related save data changes, aside from rewards, from
AscensionCompleteStateActiontoAdvanceStageStateAction. See theUPGRADENOTES.mdfor details. - CHANGE Added a
IContentfield toIdleKitInitializedAction. - CHANGE The
EventStartedActionandEventEndedActionhave are nowIStateActions and have been renamedEventStartedStateActionandEventEndedStateAction. - CHANGE The
GrantRewardStateAction.Applymethod will now set the availability of a currency as specified via aIReward.CalculateRewardsmethod. - CHANGE Rewards that have been claimed by the
GrantRewardStateActionwill now be output to the Unity log. - CHANGE The protected
GrantRewardStateAction.CalculateRewardandAscensionCompleteStateAction.CalculateRewardmethods have been removed. - CHANGE
TimerTrunkUnlockedPlayerActionhas been moved fromidlekit-showcaseintoidlekit-implementation. - FEATURE Added the following new
TradeActions:TradeActivatedActionis broadcast when anITradeis successfully activatedTradeDeactivatedActionis not currently broadcast but can be sent if anITradeshould be automatically deactivatedTradeAcceptedActionis broadcast when a player has successfully completed the activeITradeTradeDeclinedActionis broadcast when a player declines the activeITradeToggleActiveTradeStateActionis broadcast when anITradeis activated or deactivated in anIStandardContent.
- CHANGE
AdvanceStageStateActionnow checks thatContent.nextStageIdis not null or empty before settingContentSavedData.currentStageId. See UPGRADENOTES for more information on this.
Action Service
- CHANGE The
EventServicehas been renamed toActionService. - CHANGE
ActionService.Subscribe<T>(ActionHandler<T> listener, object instance)will log an error ifinstanceis null. Previously it would add a global subscription in this case. - CHANGE
ActionService.Subscribe<T>(ActionHandler<T> listener)has been added to subscribe globally to actions.
Activity Tacking Service
- CHANGE Due to the refactor of the
IEntityinitialization flow, the service now sets the timestamp of theITimerServiceonSetContentPlayerActioninstead of theContentInitializedAction. - CHANGE Due to the refactor of the
IEntityinitialization flow, the service now evaluates the expiredTimerSubscriptionsof theITimerServiceonContentInitializedActioninstead of theStageInitializedAction.
Boost
- CHANGE Various fields in
BoostandTimedBooststatic data have been updated as a result of the addition of asset creators for Boosts and TimedBoosts. See UPGRADENOTES.md for more details. - CHANGE Timed Boost Entity related classes now inherit from the new interfaces in idlekit-framework (
ITimedBoost,ITimedBoostData,ITimedBoostSavedDataITimedBoostDataAsset). - CHANGE
TimedBoost.isActiveno longer overridesBoost.isActivefor consistency. TheisActiveflag is set via theToggleTimedBoostPlayerActionin the same way as in theToogleBoostPlayerAction. - BUGFIX
TimedBoostSavedDatanow correctly inherits fromBoostSavedData.
Currency Service
- FEATURE Utility methods
CurrencyService.RemoveCurrencyAmount(CurrencyAmount amount),CurrencyService.AddCurrencyAmount(CurrencyAmount amount)andCurrencyService.SetCurrencyAmount(CurrencyAmount amount)have been added.
Character
- REMOVED
Character,CharacterData,CharacterSavedDataandCharacterDataAsset. This functionality will return in the form of a more generic association data in the future.
Core
- FEATURE Added an extension method in
CoreExtensionsto get all interfaces and base classes that a class implements and extends. - FEATURE Added an extension method in
CoreExtensionsto help recursively inject dependencies into a rootGameObject.
Content
- FEATURE
ShowcaseContenthas been moved to implementation and renamedStandardContent - REMOVED IdleKit no longer uses
IContentSavedData.timeModifiedto store user's last activity time as it is done now inIUserSavedData.SetLastActivityTime(long). - CHANGE
ShowcaseContentand all its related classes have been renamed toStandardContentand moved intoidlekit-implementation. - CHANGE
StandardContentandStandardContentDatanow requirevideoAdBoostIdproperties. - CHANGE
StandardContentandStandardContentDatanow hold and load a reference of anBoost. - FEATURE
StandardContentandStandardEventContentnow subscribe to allTradeActions to track the status of a player's activeTrade. - FEATURE Added
IStandardContentSavedDataandIStandardEventContentSavedDatawhich track the status of a player's activeTradein a givenStandardContent. - CHANGE
StandardContent.missingResourcesExchangeRateMultiplierhas been split intosoftCurrencyMissingResourcesMultiplierandupgradeableCurrencyMissingResourcesMultiplier - CHANGE
StandardContentData.missingResourcesExchangeRateMultiplierIdhas been split intosoftCurrencyMissingResourcesMultiplierIdandupgradeableCurrencyMissingResourcesMultiplierId - CHANGE
StandardEventContent.missingResourcesExchangeRateMultiplierhas been split intosoftCurrencyMissingResourcesMultiplierandupgradeableCurrencyMissingResourcesMultiplier - CHANGE
StandardEventContentData.missingResourcesExchangeRateMultiplierIdhas been split intosoftCurrencyMissingResourcesMultiplierIdandupgradeableCurrencyMissingResourcesMultiplierId
Continuous Integration
- FEATURE Added a continuous integration script under
Builder/Jenkinsfilethat serves as an example on how to setup a Jenkins Multi-branch Pipeline with IdleKit.
Dependency Container
- FEATURE Introduced
IKMonoInstallerandIKInstallerto handle the registration and de-registration of all the dependency specific to IdleKit.
Entities Database
- CHANGE
EntitiesDatabasehas been renamed toSimpleEntitiesDatabase. See UPGRADENOTES.md for details.
Entity
- CHANGE
IEntity.Initialize()is now implicitly called when theIEntityis created in theIEntityLoaderright afterIEntity.Inject(IResolver)is performed to ensure the dependency is available. - CHANGE All
EntityDataAssets have been changed to work with the interface changes outlined above inidlekit-framework. - CHANGE Missing interfaces have been added to keep the extended Entities consistent and extensible.
IStandardEventContentIStandardEventContentDataIStandardEventContentDataAssetIStandardContentDataAssetIStandardUpgradeableCurrencyDataIStandardUpgradeableCurrencyDataAssetIStandardEventSettingsDataAssetITimerTrunkITimerTrunkDataITimerTrunkSavedData
Entity Loader
- CHANGE In
UnbindDerivedthe call toIEntity.Cleanupis moved to after theEntityRemoveActionis dispatched to stay consistent with theEntityAddedAction. So the listener ofEntityRemovedActioncan perform the logic before the entity gets cleaned up. - CHANGE
EntityLoadernow tracks theIEntityit has loaded or unloaded. It will add or remove it to theIContaineraccordingly when theIEntityis first referenced or have its last reference removed. - CHANGE
EntityAddedActionis now only called when the first reference to theIEntityis created. - CHANGE
EntityRemovedActionis now only called when the last reference to theIEntityis removed.
Event
- CHANGE
IEventand related classes have now been renamed toIAction. See theActionsection above for related changes. - CHANGE
IPlayerEventand related classes have now been renamed toIStateAction.
Event Service
- CHANGE The
EventServicehas been renamed toActionService.
Event Settings
- CHANGE The
EventStartedStateActionis now broadcast after subscription to the TimerService. - CHANGE The
EventStartedStateAction,EventEndedStateActionandClaimEventRewardsStateActionare now broadcast with theEventSettingsobject as their associated instance.
Event Content
- BUGFIX The next
Milestoneis no longer initialized with the previousMilestone's progress if they are not tracking the samecurrencyId. - CHANGE
ShowcaseEventContentand related classes have been moved toidlekit-implementationand renamedStandardEventContent.
Generator
- CHANGE The
GeneratorEntity.OnModifierIndexChangedmethod has been renamed toOnModifierActionand is now called whenever anyModifiertype action is broadcast. - CHANGE Removed references to
CharacterandCharacterDatafromGeneratorEntityandGeneratorData. - CHANGE When a unit target is reached
GeneratorEntitywill now dispatch both aGeneratorModifierIndexChangedActionand aGeneratorUnitTargetHitStateAction. - CHANGE
BuyGeneratorStateActionnow makes theICurrenciesspecified in theGeneratorData.associatedUpgradeableCurrencyIdsavailableandobtained. - CHANGE
IGeneratorEntity.modifierDataIndexhas been set fromgeneratorUnitTargetHit - 1togeneratorUnitTargetHit. Hence, index 0 of themodifierData.amountswould be used when the user has achieved 0generatorUnitTarget.
Goal
- FEATURE Introduced a common base class (
GeneratorGoal) for allIGeneratorEntityrelated goals. The following goals have been refactored to work with the base class.AutomateGeneratorsGoalBuyGeneratorTypeGoalCollectFromGeneratorTypeGoalGetGeneratorUnitsForAllGeneratorsGoalGetGeneratorUnitsForGeneratorTypeGoalGetGeneratorUnitsForGeneratorsGoalGetTotalGeneratorUnitsGoalHitGeneratorUnitTargetsGoal
- FEATURE Introduce a common base class (
UpgradeGoal) for all goals that deal withIUpgradeable. The following goals have been refactored to work with the base class.GetUpgradesForCurrencyTypeGoalUpgradeAnyCurrencyGoal
- FEATURE Added new action
GoalActivatedActionthat gets send when anIGoalis newly activated in theIStage. - CHANGE
HitGeneratorUnitTargetsGoalnow listens toGeneratorUnitTargetHitStateActioninstead ofGeneratorUnitTargetHitAction. - BUGFIX
GetGeneratorUnitsForGeneratorTypeGoalno longer incorrectly caches the firstGeneratorin the stage, as it may be of the wrong type. - CHANGE The following goals now subscribe to
TradeActivatedActioninstead ofMakeExchangeAction:MakeAnyTradeGoalMakeTradeTypeGoal
- CHANGE
Goal.normalizedProgressandGoalSavedData.normalizedProgressnow return a double instead of a float
JsonSerializer
- CHANGE
JsonSerializerhas been renamed toSimpleJsonSerializer.
Loading
- FEATURE Added
AsyncContextto allow the application initialization process to take place over multiple frames. - FEATURE Added
AsyncLoaderutility that can load a group ofIAsyncLoadables over multiple frames.
Main
- CHANGE Refactored completely to use the new
IStartupandILoadPhasesystem. - REMOVE
IStageis now being loaded inContentit has been removed fromMain.cs. - CHANGE Moved
Maintoidlekit-tools.
Milestone
- REMOVE
MilestoneData.rewardIdhas been removed as it served no purpose. SeeUPGRADENOTES.mdfor details. - REMOVE
MilestoneProgressActionhas been removed due to the introduction ofProgressMilestoneStateActionandSetMilestoneProgressStateAction. - FEATURE Added
ProgressMilestoneStateActionandSetMilestoneProgressStateActionas previously theIMilestoneSavedDatais altered in theIMilestonewhich is against the IdleKit convention. - CHANGE
MilestoneCompletedStateActionhas been renamedCompleteMilestoneStateActionfor clarity. - CHANGE
normalizedProgressnow returns a double instead of a float
Modifier Cache
- CHANGE
IModifiers,IModifiables, andIModifierFormulaare now stored in hash sets. - CHANGE
_specificModifierLookup,_globalModifierLookup,_specificModifiableLookup, and_globalModifiableLookuphave been consolidated into_modifierLookupand_modifiableLookup. - CHANGE Methods have been updated to use the new lookup structure.
- REMOVE
GetModifier(string modifierId)andGetModifiable(string modifiableId)have been removed.
Modifier Service
- CHANGE This Service now listens to
EntityRemovedActionto unregisterIModifiersandIModifiables. - REMOVE The
ModifierServiceno longer loads allIBoostEntities in the Entities Database when theContentis loaded, see UPGRADENOTES.md for more details. - REMOVE Removed all implementations of
IModifierCategoryData:AscensionPowerModifierCategoryDataGeneratorPayoutModifierCategoryDataGeneratorSpeedModifierCategoryDataGeneratorUnitCostModifierCategoryDataModifierCategoryDataAsset
- CHANGE
ModifierData.modifierCategoryIdwas renamed toModifierData.modifierGroupId. - REMOVE
ModifierData.modifierCategoryData,ModifierData.Initialize()andModifierData.CompareTo()have been removed. - FEATURE Added
IModifierFormulaandIModifierFormulaDataimplementations to replace the oldModifierCategoryDataimplementations:AscensionPowerModifierFormulaAscensionPowerModifierFormulaDataAscensionPowerModifierFormulaDataAssetGeneratorPayoutModifierFormulaGeneratorPayoutModifierFormulaDataGeneratorPayoutModifierFormulaDataAssetGeneratorSpeedModifierFormulaGeneratorSpeedModifierFormulaDataGeneratorSpeedModifierFormulaDataAssetGeneratorUnitCostModifierFormulaGeneratorUnitCostModifierFormulaDataGeneratorUnitCostModifierFormulaDataAssetModifierFormulaModifierFormulaDataModifierFormulaDataAsset
- FEATURE Added
ModifierFormulaParserto parse human readable formulas that now drive theModifiersystem. - CHANGE Renamed
ModifierCategoryDataandModifierCategoryDataAssettoModifierGroupDataandModifierGroupDataAsset. - CHANGE All methods in
EconomyService,ModifierServiceandModifierCachethat usedModifierCategoryDatatypes to filter results now useModifierFormulatypes instead. - CHANGE Implemented additional
IModifierServiceandIModifierCachemethods. - CHANGE
ModifierServicenow pipes all modifier logic throughModifierFormulaobjects instead of handling the logic internally.
Namespaces
- CHANGE The following namespaces have been changed:
IdleKittoIdleKit.ImplementationIdleKit.PlotPointtoIdleKit.Implementation
Offline Activity Tracker
- FEATURE Once the offline catch-up process is complete, an
OfflineProgressEndActionwill be broadcast.
PlotPoint
- FEATURE Added a number of new
ActivationConditions:CurrencyObtained,CurrencyAvailable,NumTradesMade, PlotPointSequenceEnded`. - CHANGE Renamed
AscensionActivationConditiontoAscensionCompleteActivationCondition. - CHANGE Improved logic for deciding whether a
PlotPointImageActorcan be reused or not. - CHANGE The runtime implementation of the
PlotPointDataProviderhas been updated to utilize theIContainer. - REMOVE Removed the concept of state machine from the
PlotPointControlleras it was not a proper state machine - CHANGE PlotPoint related
IAction, andIService
Reward
- CHANGE
TimerTrunkand its related classes have been renamed to use the new suffixTimedReward. - CHANGE Due to the refactor to
ITimedRewardSavedData, the implementations of theTimedReward,ClaimTimedRewardStateAction, andTimedRewardInitializationActionhave been altered to support the changes. - FEATURE Added new
CurrencyUnlockRewardthat sets the rewardedCurrencysICurrencySavedData.availableto true. - CHANGE Changed the name of
RandomTagsCurrencyRewardtoBaseRandomCurrencyRewardand removed allallowUnobtainedlogic from it. - FEATURE Added new
RandomObtainedCurrencyRewardextendingBaseRandomCurrencyRewardthat pulls a reward fromICurrencys that match theITagConsumerDataand are obtained. If it is unable to reward a currency it will fall back to a different reward if set. - FEATURE Added new
RandomUnobtainedCurrencyRewardextendingBaseRandomCurrencyRewardthat pulls a reward fromICurrencys that match theITagConsumerDataand are not yet obtained. If it is unable to reward a currency it will fall back to a different reward if set. - CHANGE The
CurrencyRewardDataconstructor will now throw an exception if invalid min/max values are passed. - CHANGE Moved
AscensionRewardGrouptoidlekit-frameworksince an interface there references it. - CHANGE The
CanClaimmethods of the following reward types have been updated to include an optionalignoreFallbackflag:AscensionRewardCurrencyRewardCurrencyUnlockRewardGachaRewardTimedReward
- CHANGE The
ICurrencyused byCurrencyRewardis now assigned on initialization and cached. - CHANGE
TimerTrunk.CanClaimnow implements an optionalignoreFallbackflag. - CHANGE
ShowcaseTimerTrunkhas been moved toidlekit-implementationand renamedTimerTrunk.
Saved Data
- FEATURE Introduced
SerializedDataCacheto keep track of all the content specificISavedDatabased on theIContent.instanceIdthey are associated with. This object is serialized by the default IdleKit implementation. - BUGFIX Fixed the bug where content specific
ICurrencyis being saved as a globalICurrency, which means the progress is not specific to theIContent(event).
Serialization Service
- CHANGE Due to the refactor to store the last activity time using
IUserSavedData.SetLastActivityTime(long), theSerializationServicedoes not need to subscribe toContentInitializedActionandClearContentStateAction. - CHANGE
SerializationServiceis now responsible for maintaining theSerializedDataCache. This enables the tracking and deleting of content specificISavedDataof a differentIContent. - CHANGE Introduced
SerializationService.GenerateContentSpecificSavedId(string savedId), which consolidates all content specificsavedIdgeneration logic.
Services
- CHANGE All
IServicesno longer contain cached lookups. They have been converted to retrieve theIEntityusing theIResolverorIEntityResolver. - CHANGE Renamed the following Services to better fit naming conventions.
CurrencyManagerwas renamed toCurrencyServiceEconomywas renamed toEconomyServiceEntityLoaderwas renamed toEntityLoaderServiceEventManagerwas renamed toActionServiceEventContentManagerwas renamed toEventServiceModifierManagerwas renamed toModifierServicePlotpointManagerwas renamed toPlotpointServiceRewardManagerwas renamed toRewardServiceStaticDataLoaderwas renamed toDataLoaderService
Startup
- FEATURE Added abstract
Startupclass that handles typical IdleKit load and content/stage switching load sequences. - FEATURE Added abstract
PhaseLoaderclass that manages loading sequences ofILoadPhaseobjects.Startupcurrently extends this class. - FEATURE Added implementations for all specific
ILoadPhaseinterfaces defined inidlekit-framework:InjectDependenciesLoadPhaseInitializeUserLoadPhaseLoadGlobalDataLoadPhaseProcessEventsSavedDataLoadPhaseLoadContentDataLoadPhaseLoadContentLoadPhaseClearContentLoadPhase
Static Data
- CHANGE
DataLoaderServiceis now able to load global data that do not get cleared betweenIContent. - CHANGE A
StaticDataRemovedActionis now sent when data is removed from theDataLoaderService.
Trade
- CHANGE
MakeTrade()now returns abooldepending on whether or not the Trade was successful. - FEATURE The input and output currency amounts for an
ITradecan now be set viaSetInputCurrencyAmount(CurrencyAmount currencyAmount)andSetOutputCurrencyAmount(CurrencyAmount currencyAmount).
Timer Subscription
- CHANGE* The overloaded constructor for
TimerSubscriptionno longer accepts aDateTimeendTime without an initial timestamp.
Timer Trunk
- CHANGE The
TimerTrunkimplementation has been renamed toTimedReward. RelatedIActions andIStateActions have been renamed accordingly. SeeUPGRADENOTES.mdfor more information. - CHANGE Subscription to the
TimerServiceis now made before, rather than after, theTimedRewardStartActionis sent.
Unity
- CHANGE Upgraded Unity support to 2018.4.18f1.
idlekit-tools
Asset Importer
- CHANGE
ShowcaseDataAssetImporterhas been moved intoidlekit-toolsand merged withBaseDataAssetImporter. - CHANGE
BaseDataAssetImporterhas been renamedSimpleDataAssetImporter. Related classes such asBaseDataAssetImporterEditorWindowandDataAssetImporterLoggerhave also been prefixed withSimple. - CHANGE
BaseEntitiesDatabaseHelperhas been renamedSimpleEntitiesDatabaseHelper - CHANGE The following
DataAssetHeadersandDataAssetCreatorshave been moved fromidlekit-showcaseintoidlekit-toolsand renamed:ShowcaseContentDataAssetHeadertoStandardContentDataAssetHeaderShowcaseEventContentDataAssetHeadertoStandardEventContentDataAssetHeaderShowcaseTimerTrunkDataAssetHeadertoTimerTrunkDataAssetHeaderShowcaseContentDataAssetCreatortoStandardContentDataAssetCreatorShowcaseEventContentDataAssetCreatortoStandardEventContentDataAssetCreatorShowcaseTimerTrunkDataAssetCreatortoTimerTrunkDataAssetCreator
- CHANGE The Data Asset Creators for
StandardEventContentandStandardContenthave been updated to import thevideoAdBoostIdfield. - FEATURE Added
TimedBoostDataAssetCreatorandBoostDataAssetCreatorto allow for importing of Boosts and TimedBoosts
Continuous Integration
- FEATURE Added a continuous integration script under
Builder/Jenkinsfilethat serves as an example on how to setup a Jenkins Multi-branch Pipeline with IdleKit.
Debug Tools
- CHANGE All debug tools that were initalized on
ContentInitializedActionnow listen toIdleKitInitializedActioninstead. - CHANGE
DebugCurrencyToolUI is able to take in negative number now, which is helpful for completing negative-income goals likeSpendCurrencyGoal. - CHANGE The
DebugAscendStageToolandDebugRewardToolnow both use the newly implementedDebugGrantRewardStateActionin order to grant rewards.
Dependency Container
- FEATURE Added
SimpleInstallerto handlePlotPointrelatedIActionsandIServicesdependency registrations.
Entity Loader
- CHANGE Added unit test to test the
IEntityreference tracking ability introduced toEntityLoader.
Namespaces
- CHANGE The following namespaces have changed:
IdleKit.Tools.Editor.GuidReferencetoIdleKit.Tools.EditorIdleKit.Tools.Editor.PlotPointtoIdleKit.Tools.EditorIdleKit.Tools.Editor.DataAssetImportertoIdleKit.Tools.EditorIdleKit.Tools.CommontoIdleKit.ToolsIdleKit.Tools.TesttoIdleKit.Tools.Tests
Number Formatter
- CHANGE
FormatDoublewill now also round values of less than 1000 as specified via theroundDownargument. See UPGRADENOTES.md for details.
Plot Points
- BUGFIX The inspector updating of
GameObjectdata forPlotPointActortypes that was previously directly invoked fromPlotPointBaseActor.OnValidateis now called inLateUpdateto resolve Unity warnings. - CHANGE Updated all prefabs to nested prefabs after migration to 2018 LTS.
- FEATURE Added
MilestoneCompletedActivationCondition.
Prefabs
- CHANGE Added Prefab Unity scene that is now used by nested prefabs.
- CHANGE Updated all UI prefabs to nested prefabs after migration to 2018 LTS.
Static Data
- FEATURE Added unit test for
IStaticDataLoaderdue to the addition of globalIStaticDataloading.
Startup
- CHANGE Moved
Mainfromidlekit-implementation. Main now extendsStartup. - CHANGE Adjusted
CanvasMainto work with startup flow changes. The static links to PlotPoint specific components have been moved intoSimpleStartup. - REMOVE Removed
PlotPointMainand moved it's functionality intoSimpleInstaller,SimpleStartup, andLoadPlotPointsDataLoadPhase. - FEATURE Added UI specific load phases:
CanvasInitializeLoadingViewLoadPhaseCanvasInitializeUILoadPhaseCanvasCleanupUILoadPhaseCanvasToggleDebugUILoadPhase
- FEATURE Added PlotPoint specific load phases:
LoadPlotPointsDataLoadPhase
UI
- FEATURE Introduced
CanvasEntityView<TEntity>that serves as the base class and handle the dependency for allCanvasViewthat showcases a singleIEntity. - CHANGE Moved all UI specific code out of
Contextand intoCanvasContext. - CHANGE All
CanvasVieware now being properly injected on creation or own startup. - CHANGE
CanvasUInow displays aCanvasGenericDialogwhen aTimerTrunkis claimed. - CHANGE All
IActionrelated code has been moved intoCanvasUIfromShowcaseCanvasUI. - CHANGE Consolidated all the
CanvasEntityViewcreation, initialization and cleanup code intoCreateEntityViewsandCleanupEntityViewsmethods onCanvasEntityPanel. All the codes related to populating and cleaning up owningCanvasEntityViewhave been refactored to use this method. (e.g:CanvasStageViewnow callsCanvasGeneratorPanel.CreateEntityViewsto populate the generator views.) - CHANGE
CanvasContentViewis now responsible for populatingCanvasStageView,CanvasEventView,CanvasMilestoneView,CanvasReturnToMainContentView,CanvasTradeViews, andCanvasTimedRewardViews. It is the point of entry for recursively creating all theCanvasEntityViewsin the UI. The following classes have been changed due to the implementation:CanvasMainCanvasUICanvasContentViewCanvasStageView
- CHANGE Introduced
CanvasModifierEntityViewsoCanvasBoostViewandCanvasUpgradeableCurrencyViewcan share code that displays theModifierDatainformation in a popupCanvasDialog. - CHANGE
CanvasTimedBoostViewhas been implemented, extracting theTimedBoostspecific functionality fromCanvasBoostView. - CHANGE
CanvasBoostViewno longer listens forToggleBoostStateActionto activate itself. Instead the view is always active so that Boosts which are not currently active are still displayed, and can be activated by, the UI. - REMOVE
CanvasModifierDataViewand its UI prefab have been removed as the information is now shown in aCanvasDialogpopup. - CHANGE
CanvasUInow listens toGeneratorUnitTargetHitStateActioninstead ofIncrementGeneratorUnitStateActionto show Generator unit target rewards. - CHANGE Added
CanvasContentView canvasContentView { get; }toCanvasUI. This is used by the newCanvasInitializeUILoadPhase. - FEATURE Added
CanvasLoadingViewthat tracks load progress that is dispatched fromIStartup. - CHANGE Moved
CanvasDebugTogglefromidlekit-showcaseto here. - CHANGE Refactored
CanvasMainto work with the newIStartupload flow. - CHANGE Any display of double values are now rounded consistently. All payouts and amounts the player has are now floor, targets and costs are ceiling.
- CHANGE
CanvasMilestoneViewnow displays rewardId based on data in theIEventSettings. - BUGFIX Fix a bug where
CanvasTradeViewsare not being cleared up betweenIContentsoTradesin a differentIContentare causing null references. - BUGFIX Fix a bug where
CanvasUpgradeableCurrencyViewsdisplay the wrong background colours when theIUpgradeableCurrenciesare made available onIStagestart. - CHANGE A number of
CanvasViewclasses have moved fromidlekit-showcaseintoidlekit-tools:CanvasAscensionGameplayCanvasMissingResourcesDialogCanvasTimerTrunkView
- CHANGE
PlotPointUIhas been renamedStandardUI. SeeUPGRADENOTESfor more. - FEATURE Added a
CanvasModifiableEntityViewwhich is the equivalent of theCanvasModifierEntityViewbut displays information about allIModifiersthat affect theIModifiable.
Unity
- CHANGE Upgraded Unity support to 2018.4.18f1.
- CHANGE All the IdleKit UI has been retrofitted to work with Unity's nested prefabs system. The prefabs components that built up all the nested prefabs are located in
idlekit-tools/Common/Prefabs.
Test
- FEATURE Due to the introduction of
IEntity.Initialize()and the changes made toIEntity.Cleanup(IEntityLoader)allIEntityunit tests also now testInitialize()andCleanup(IEntityLoader)methods for allIEntity.
Welcome Back Dialog
- BUGFIX Now only unsubscribes from
CollectFromGeneratorStateActionwhen theOfflineProgressEndActionis recieved. This resolves an issue where currency earned via collections afterTimedBoostexpiry were not being displayed correctly.
idlekit-examples
Continuous Integration
- FEATURE Added a continuous integration script under
Builder/Jenkinsfilethat serves as an example on how to setup a Jenkins Multi-branch Pipeline with IdleKit.
Examples
- CHANGE The Boost Example now shows how both
IBoostandITimedBoostEntities function. - CHANGE The
LoopingContentSavedDataimplementation no longer overridescurrentStageIdas it is required by theLoadPlotPointDataLoadPhase. - REMOVE Removed the
ContentSwitchexample as it wasn't demonstrating useful functionality.
Loading
- FEATURE* Added new "AsyncLoading" and "SynchronousLoading" examples to demonstrate the two approaches to loading.
PlotPoint
- CHANGE The previous
PlotPointtutorial example has been moved into(REPO)/Runtime/Tutorials/PlotPoint - FEATURE Add a new
PlotPointexample that has built in plotpoints for all theIPlotPointActivationConditionoffered in IdleKit.
Prefabs
- CHANGE Updated all UI prefabs to nested prefabs after migration to 2018 LTS.
- CHANGE All prefabs previously in
idlekit-showcasehave been moved intoidlekit-tools.
UI
- CHANGE Due to the update to
CanvasContentView, the following classes have been modified or removed (replaced with their parent classes in Unity):BoostMain- modifiedBoostUI- removedContentSwitchUI- removedCurrencyUI- removedGachaUI- removedSynchronousLoadingContext- removedTimedRewardMain- modifiedTimedRewardUI- removedTradeMain- removedTradeUI- removed
Unity
- CHANGE Upgraded Unity support to 2018.4.18f1.
- CHANGE The examples scenes are now composed of nested prefabs (with variants) built from the prefab components located in
idlekit-tools.
idlekit-showcase
General
- CHANGE All
idlekit-showcaseclasses have been moved intoidlekit-framework,idlekit-implementation, andidlekit-tools.
Asset Importer
- CHANGE All asset importers and headers in
idlekit-showcasehave been moved intoidlekit-tools.
CanvasView
- CHANGE The following
CanvasViewshave been moved toidlekit-tools:CanvasAscensionGameplayCanvasMissingResourcesDialogCanvasTimerTrunkView
- REMOVE
CanvasShowcaseUpgradeableCurrencyViewhas been merged withCanvasUpgradeableCurrencyViewand it's cs file removed.
Content
- CHANGE The previous
idlekit-showcasecontent entities have been renamed and moved intoidlekit-implementation.IShowcaseContent,ShowcaseContentand related classes toIStandardContentandStandardContentIShowcaseEventContent,ShowcaseEventContentand related classes toIStandardEventContentandStandardEventContent
Continuous Integration
- FEATURE Added continuous integration scripts under
Builder/folder that serve as examples on how to setup a Jenkins Multi-branch Pipelines with IdleKit.
Services
- CHANGE
ShowcaseUpgradeableCurrencyManagerwas renamedStandardCurrencyServiceand move intoidlekit-implementation.
Settings
- CHANGE Added the editor settings file to Showcase project as it contains nested prefab editing environment settings.
- CHANGE Added the project version file to the Showcase project as it contains Unity version information.
- CHANGE Added the Unity manifest file to the Showcase project as it contains dependency information.
UI
- CHANGE Due to the update to
CanvasContentView, the following classes have been modified or removed:ShowcaseUI- removed, replaced the usage with its baseStandardUIandCanvasUI.ShowcaseContentView- modified, moved intoidlekit-toolsand renamed toStandardCanvasContentView
- CHANGE Moved
CanvasDebugToggletoidlekit-tools. - CHANGE Any display of double values are now rounded consistently. All payouts and amounts the player has are now floor, targets and costs are ceiling.
Unity
- CHANGE Upgraded Unity support to 2018.4.18f1.
- CHANGE The
Showcasescene is now composed of nested prefabs (with variants) built from the prefab components located inidlekit-tools.
UpgradeableCurrency
- REMOVE
ShowcaseUpgradeableCurrencyhas been removed. SeeUPGRADENOTESfor detail. - REMOVE
ShowcaseUpgradeableCurrencyManagerhas been removed. SeeUPGRADENOTESfor detail.
TimerTrunk
- CHANGE The
IShowcaseTimerTrunkinterface andShowcaseTimerTrunkimplementation has been moved toidlekit-framework`idlekit-implementationand renamedITimerTrunkandTimerTrunk`.
Version 0.20.7, 2020-01-28
idlekit-framework
- N/A
idlekit-examples
- N/A
idlekit-implementation
- BUGFIX
Stage.Cleanup()now correctly callsCleanup()on each active goal rather thanDeactivate(), which would previously cause the goal progress to reset on content switch. - BUGFIX The
Milestonetracking code inOfflineActivityTrackernow fails gracefully when completion times overflow.
idlekit-showcase
- N/A
idlekit-tools
Plot Points
- FEATURE Added
MilestoneCompletedActivationCondition.
Version 0.20.6, 2019-12-11
idlekit-framework
- N/A
idlekit-examples
- N/A
idlekit-implementation
Event Settings
- BUGFIX
EventSettingsSavedDatanow correctly serializes the nextIMilestonecompletion time. - BUGFIX
EventSettingsnow subscribes to theITimerServiceafter aContentInitializedEventis triggered. This prevents theITimerServicefrom evaluating anyIEventSettingsthat are subscribed to it before the initialization phase has completed. It was previously possible for anEventEndedEventto be triggered before all theIEntitieswere loaded.
idlekit-showcase
- N/A
idlekit-tools
- N/A
Version 0.20.5, 2019-11-20
idlekit-framework
Economy
- CHANGE Added optional
IModifier[]exclusion list parameter to several methods inIEconomy. GetPayout(IGeneratorEntity generatorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)GetDuration(IGeneratorEntity generatorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)GetAffordableUnitsToNextTarget(IGeneratorEntity generatorEntity, bool applyModifiers, IModifier[] excludedModifiers = null);GetMaxAffordableUnits(IGeneratorEntity generatorEntity, bool applyModifiers, int maxCap = -1, IModifier[] excludedModifiers = null)GetIncrementGeneratorUnitCost(int unitsToIncrease, IGeneratorEntity generatorEntity, bool applyModifiers, IModifier[] excludedModifiers = null)GetAscensionPower(IStage stage, bool applyModifiers = true, double ascensionPower = 1d, IModifier[] excludedModifiers = null)
Event Settings
- CHANGE Moved time related functionality from
idlekit-showcase. Doing this allows for the prediction of milestone completion times for use when events are finished while players are offline. - Added
IEventSettings.isActive - Added
IEventSettings.SetMilestoneCompletionTime(string milestoneId, long timestampInMilliseconds) - Added
IEventSettings.StartEvent(long timestampInMilliseconds) - Added
IEventSettings.EndEvent(long timestampInMilliseconds) - Added
IEventSettingsData.eventDurationInMilliseconds { get; } - Deprecated
IEventSettingsSavedData.completedMilestoneIds { get; }. SeeUPGRADENOTESfor details. - Added
IEventSettingsSavedData.milestoneCompletionInfo { get; } - Added
IEventSettingsSavedData.timeStartedInMilliseconds { get; } - Added
IEventSettingsSavedData.timeCompletedInMilliseconds { get; } - Added
IEventSettingsSavedData.isComplete { get; } - Deprecated
IEventSettingsSavedData.CompleteMilestone(string milestoneId). SeeUPGRADENOTESfor details. - Added
IEventSettingsSavedData.CompleteMilestone(string milestoneId, long timestampInMilliseconds) - Added
IEventSettingsSavedData.StartEvent(long eventStartTimeInMilliseconds) - Added
IEventSettingsSavedData.EndEvent(long eventEndTimeInMilliseconds)
Modifier Cache
- CHANGE Added optional
IModifier[]exclusion list parameter toIModifierCache.SearchModifiersAffectingModifiable<TModifierCategoryData>(string modifiableId, bool checkCanBeApplied = true, IModifier[] excludedModifiers = null).
Modifier Manager
- CHANGE Changed
IModifierManagerandIModifierCachemethod signatures that involve applying modifiers to take an optional list ofIModifierobjects to exclude from calculations. IModifierManager.ApplyModifiers<TModifierCategoryData>(IModifiable modifiable, ref double modifiedValue, IModifier[] excludedModifiers = null)IModifierManager.ApplyModifiers<TModifierCategoryData>(IModifiable modifiable, ref double modifiedValue, int additionalLevels, IModifier[] excludedModifiers = null)
Timer Service
- CHANGE Added
ITimerService.timestampInMilliseconds.
idlekit-implementation
Economy
- CHANGE
Economyimplemented all changes made inIEconomy.
Event Settings
- CHANGE
EventSettingsimplemented all added interface properties and methods inIEventSettings. - CHANGE
EventSettingsimplementedITimerListenerand based on the Event duration will automatically end the event after the duration has passed. - FEATURE Added
EventStartedEventandEventEndedEventevents that are dispatched byEventSettingswhen an event starts or ends. - CHANGE
EventSettings.CanClaimRewards(string contentId)now also checks that the Event is complete. - CHANGE
EventSettings.GetRewardIds()now checks milestone completion times before adding rewards to the list. - CHANGE Added serialized date
EventSettingsData._eventDurationInSecondswhich is converted to milliseconds at runtime and accessible viaEventSettingsData.eventDurationInMilliseconds. - CHANGE
EventSettingsSavedDataimplemented all changes made inIEventSettingsSavedData. - FEATURE Added
IdleKitInitializedevent to signify when all IdleKit Entities have been initialized.
Main
- CHANGE Now broadcasts the
IdleKitInitializedat the end ofMain.StartGame.
Modifier Cache
- CHANGE Updated
IModifierCacheto optionally allow a list ofIModifierobjects to exclude whenApplyModifiers()is called.
Modifier Manager
- CHANGE Updated
ModifierManagerto optionally allow a list ofIModifierobjects to exclude whenApplyModifiers()is called.
Offline Activity Tracker
- FEATURE Added logic that will calculate future
Milestonecompletion times periodically, moves between content and when a player backgrounds the app. These times are then used when calculating which milestones were completed after an event has been finished and rewards are being claimed. This will allow a user to leave an event content and not return to it while the event is active, yet still claim all of the milestones they completed while being away from the app. - CHANGE Now listens to
IdleKitInitializedevent rather thanStageInitializedEventto perform catch-up logic. This ensures that all Entities have been initialized prior to the catch-up.
Timer Service
- CHANGE Added
TimerService.timestampInMilliseconds.
idlekit-tools
UI
- REMOVE Moved all event related UI code from
idlekit-showcaseand deleted original class. ShowcaseCanvasEventView.cstoCanvasEventViewShowcaseCanvasReturnToMainContentView.cstoCanvasReturnToMainContentViewShowcaseCanvasStageView.cstoCanvasStageView
idlekit-examples
- N/A
idlekit-showcase
Events
- REMOVE Removed
ShowcaseEventStartedEventandShowcaseEventEndedEvent.
Event Settings
- REMOVE Removed all classes that extended
EventSettingsand related classes. IShowcaseEventSettings.csIShowcaseEventSettingsData.csIShowcaseEventSettingsSavedData.csIShowcaseEventSettingsDataAsset.csShowcaseEventSettings.csShowcaseEventSettingsData.csShowcaseEventSettingsSavedData.csShowcaseEventSettingsDataAsset.csShowcaseEventSettingsDataAssetHeader.csShowcaseEventSettingsDataAssetCreator.cs
UI
- REMOVE Removed Event related canvas extensions.
ShowcaseCanvasEventView.csShowcaseCanvasReturnToMainContentView.csShowcaseCanvasStageView.cs- CHANGE Updated
ShowcaseUIto work without the removed classes.
Version 0.20.4, 2019-11-04
idlekit-framework
- N/A
idlekit-implementation
Content
- BUGFIX Fix a bug that
IContentSavedData.currentStageIdis not being serialized until the first ascension.
Event Content
- BUGFIX The next
Milestoneis no longer initialized with the previousMilestone's progress if they are not tracking the samecurrencyId.
Events
- FEATURE Introduce
OfflineProgressEndEventto mark that the Offline Activity Tracker catch-up process is complete.
Goal
- BUGFIX
GetGeneratorUnitsForGeneratorTypeGoalno longer incorrectly caches the firstGeneratorin the stage, as it may be of the wrong type. - BUGFIX
GoalData.isContentSpecificis now set to true by default. See UPGRADENOTES.md for more detail.
Offline Activity Tracker
- FEATURE Once the offline catch-up process is complete, an
OfflineProgressEndEventwill be broadcast.
idlekit-tools
Welcome Back Dialog
- BUGFIX Now only unsubscribes from
CollectFromGeneratorPlayerEventwhen theOfflineProgressEndEventis recieved. This resolves an issue where currency earned via collections afterTimedBoostexpiry were not being displayed correctly.
idlekit-examples
- N/A
idlekit-showcase
- N/A
Version 0.20.3, 2019-09-16
idlekit-framework
Milestones
- BUGFIX The
GuidReferenceableattribute used withMilestoneRewardPair._milestoneIdandMilestoneRewardPair._rewardIdhave been changed toGuidReference.
idlekit-implementation
Logger
- BUGFIX The
DebugLoggernow correctly copes with formatting of filepaths that are outside of the Unity project.
Upgradeable Currency
- BUGFIX When a
UpgradeableCurrencyis obtained, aModifierIndexChangedEventwill now be fired to denote that the modifier is active and will effect any relatedIModifiable.
idlekit-tools
- N/A
idlekit-examples
- N/A
idlekit-showcase
- N/A
Version 0.20.2, 2019-09-03
idlekit-framework
Generator
- BUGFIX Introduced
GeneratorEntity.payoutCurrencyPerMilliSecondas a replacement forpayoutCurrencyPerSecond. See UPGRADENOTES.md for more details.
idlekit-implementation
Debug Logger
- BUGFIX Removed an erroneous using statement which could result in compile errors.
Generator
- BUGFIX Introduced
GeneratorEntity.payoutCurrencyPerMilliSecondas a replacement forpayoutCurrencyPerSecondwhich was actually returning values in milliseconds. See UPGRADENOTES.md for more details.
ToggleTimedBoostPlayerEvent
- BUGFIX Resolved an issue where the
ToggleTimedBoostPlayerEventwould cache the firstTimedBoostit was passed, see UPGRADENOTES.md for more details.
idlekit-tools
Asset Importer
- BUGFIX Fixed a number of issues to allow the MakeAnyTradeGoal and MakeTradeTypeGoal assets to be correctly generated and included in the Entities Database.
Canvas View
- CHANGE The
CanvasBoostViewhas been updated to account for changes to theToggleTimedBoostPlayerEvent.
Debug Tools
- CHANGE The
CanvasDebugTimeSkipToolhas been updated to work withGenerator.payoutCurrencyPerMilliSecond.
idlekit-examples
- N/A
idlekit-showcase
- N/A
Version 0.20.1, 2019-07-18
idlekit-framework
- N/A
idlekit-implementation
Saved Data
- BUGFIX Fixed the bug where content specific
ICurrencyis being saved as a globalICurrency, which means the progress is not specific to theIContent(event).
idlekit-tools
- N/A
idlekit-examples
- N/A
idlekit-showcase
- N/A
Version 0.20.0, 2019-07-08
idlekit-framework
Content
- CHANGE The ascension flow has been revamped to enable an optional gameplay segment during the ascension. See the
UPGRADENOTES.mdordocs.idlekit.iofor more details.
Currency
- REMOVE
ICurrency.ContainsTag(string)andICurrency.ContainsTagIn(string[])have been moved to the newly createdITagService. SeeUPGRADENOTES.mdfor details. - CHANGE
ICurrencyandICurrencyDatanow implementITaggedEntityandITaggedEntityData.
Currency Management
- REMOVE
GetAllCurrenciesOfTagOrRarityhas deprecated. SeeUPGRADENOTES.mdfor details.
Gacha
- CHANGE Introduced
IGachaSlotandIGachaIteminterfaces to replace the previousGachaSlotandGachaItemstruct. To keep concrete implementation inidlekit-implementation.
Event Content
- FEATURE Introduced Event Contents with Milestone progress support to IdleKit. This will allow for alternate Content that tracks player progress via Milestones with rewards. See UPGRADENOTES.md for details.
Modifiers
- CHANGE Refactored the
ModifierCacheto work more like theIEntityCache. Now anIModifierCacheexists and is integrated into the dependency binding system. This allows for much more extensibility and the implementation of customIModifierCacheobjects. - CHANGE Added
IModifierCategoryData.targetModifiableTypesto allowIModifierCacheto organize and returnIModifiableobjects and provide verification that givenIModifierCategoryDatafilters onlyIModifiableobjects that can actually be affected by thatIModifierCategoryData. - CHANGE Added
IModifier.modifierIdto provide a single identifier to use when retrievingIModifierobjects. - CHANGE Added
checkCanBeAppliedparameter toIModifierCache.SearchModifiersAffectingModifiable<TModifierCategoryData>(string modifiableId, bool checkCanBeApplied = true)that defaults totrue. This will maintain previous behaviour, but allow searches forIModifierobjects that can't be applied yet. - CHANGE Added
IModifierManager.GetModifiable(),IModifierManager.GetAllModifiablesOfType<T>(),IModifierManager.GetModifiablesAffectedByModifier(string modifierId)andIModifierManager.GetModifiablesAffectedByModifier<TModifierCategoryData>(string modifierId)to makeIModifierManagerprovide more data access. - CHANGE Moved
ModifierSearchResultfromidlekit-implementationto it's own class file inidlekit-framework
Plot Points
- FEATURE Added
IPlotpointController.canPlay { get; }. This can be used to help manage PlotPoint playback.
Saved Data
- FEATURE Added
long timeCreatedandlong timeModifiedto allISavedDataand its override. We are now able to track the time theISavedDatawas created and last modified. All classes that implementISavedDatahave had their constructor changed. SeeUPGRADENOTES.mdfor details.
Static Data
- CHANGE Due to the
ISavedDatarefactor all classes that implementISavedDataProviderhave had their signatures changed. SeeUPGRADENOTES.mdfor details.
Tag
Tagged
- FEATURE Introduced
ITaggedEntity, andITaggedEntityDatafor the Entity classes that containITagData[].ITagConsumerDatahas also been added as a utility interface for Entities that target multipleITaggedEntity.
Tag Consumer Data
- FEATURE
ITagConsumerDatawhich contains an array oftargetTagIdsand atargetAllflag to represent whether the Entity targeting these tags requires all or any of them to be present on the targetITaggedEntity.
Tag Service
- FEATURE Introduced
ITagServiceand its implementationTagServicethat deal with allITagDatarelated logic between theITaggedEntityandITagConsumerData.
Trade
- FEATURE
ITradeinterface has been added to allow for Trade to become a full Entity with a Controller class. - FEATURE
ITradeServiceinterface has been added to allow for creation of a Trade Service to manageITradeEntities. - CHANGE
ITradeDatanow inherits fromIEntityData. SeeUPGRADENOTES.mdfor more details. - CHANGE
ICurrencyManager.GetAllCurrenciesOfTagOrRarityhas been deprecated. SeeUPGRADENOTES.mdfor more details.
idlekit-implementation
Currency Manager
- CHANGE The arguments for the
CurrencyManagerconstructor now requireITagService.
Event Content
- FEATURE Added implementations for all aspects of the new Event Content feature.
Events
- FEATURE Added
AscensionStartEventthat signals the start of the ascension gameplay has been triggered by the player. - FEATURE Added
long timeOffline { get; set;}toOfflineProgressEventto keep track of the time that the user is offline for. - CHANGE
AscendPlayerEventhas been renamed toAscensionCompletePlayerEvent. SeeUPGRADENOTES.mdfor details. - CHANGE
AscensionCompleteEventhas been renamed toAdvanceStageEvent. SeeUPGRADENOTES.mdfor details.
Generators
- CHANGE Internal logic uses milliseconds. Data imports seconds and converts to milliseconds when read.
- CHANGE
GeneratorSavedEntityDatahas gone through massive change due to theISavedDatarefactor and code cleanup. SeeUPGRADENOTES.mdfor details.
Goals
- Feature The following new Goals have been added for use with
ITradeentities: MakeAnyTradeGoal- satisfied when a certain number of Trades have been made by the player (not specific to the Trade Id).MakeTradeTypeGoal- satisfied when a certain number of the specified Trades have been made.- CHANGE Internal logic for dynamic goals uses milliseconds. Data imports seconds and converts to milliseconds when read.
- CHANGE Due to the introduction of
ITagConsumerEntityandITagConsumerEntityDatathe followingIGoalandIGoalDatahave been refactored to implement the new interfaces:CollectCurrenciesWithTagsGoalDynamicCollectCurrenciesWithTagsGoalSpendCurrenciesWithTagsGoalUpgradeCurrenciesWithTagsGoal.
Modifiers
- CHANGE Refactored
ModifierManagerso it is no longer a partial class. It now behaves like the otherIServiceobjects and can be extended in the same manner. - FEATURE Moved
ModifierCacheout ofModifierManagerand into it's own class that implementsIModifierCache. This allows it to be full extensible since it is now included in the dependency system. - BUGFIX Fixed issue where
ModifierCache.GetModifiersAffectingModifiablemethods would not return anyIModifierobjects that affected theIModifiableviaIModifierData.affectAll. - CHANGE Added
checkCanBeAppliedparameter toModifierCache.SearchModifiersAffectingModifiable<TModifierCategoryData>(string modifiableId, bool checkCanBeApplied = true)to allow for optionally gettingIModifierobjects that cannot currently apply their modification. Previous behaviour remains unchanged. - FEATURE Added additional methods to
ModifierManagerandModifierCacheto allow for the retrieval ofIModifiableobjects affected by specificIModifierobjects.Modifiermanager.GetModifiable<T>(string id)Modifiermanager.GetAllModifiablesOfType<T>()Modifiermanager.GetModifiablesAffectedByModifier(string modifierId)Modifiermanager.GetModifiablesAffectedByModifier<TModifierCategoryData>(string modifierId)ModifierCache.modifiablesModifierCache.GetModifiable(string modifiableId)ModifierCache.RegisterModifiable(IModifiable modifiable)ModifierCache.UnregisterModifiable(IModifiable modifiable)ModifierCache.GetModifiablesAffectedByModifier(string modifierId)ModifierCache.GetModifiablesAffectedByModifier<TModifierCategoryData>(string modifierId)
Random Reward
- CHANGE
RandomTagCurrencyRewardand the corresponding file has been renamed toRandomTagsCurrencyRewardas it supports multipletagsId. - CHANGE
RandomTagsCurrencyRewardandRandomTagsCurrencyRewardDatanow implementITagConsumerEntityandITagConsumerEntityData.
Plot Points
- CHANGE All types of ActivationConditionData and ActionData now have public constructors.
- FEATURE Added the ability to disable and enable PlotPoint playback. This will be useful when working with UI and PlotPoint flow. This is done via the these new PlotPoint Events:
PlotPointSetPlaybackAvailabilityEventallows PlotPoint playback to be enabled or disabled by setting thePlotPointSetPlaybackAvailabilityEvent.canPlayproperty.PlotPointPlaybackAvailabilityChangedEventis dispatched by thePlotpointControllerwhen playback is enabled or disabled.PlotPointPlaybackAvailabilityChangedEvent.canPlaywill reflect the current status.
Saved Data
- FEATURE Added
BaseSavedDatathat most classes that implementISavedDataextend to deal with the newISavedData.timeCreatedandISavedData.timeModifiedfunctionality.
Tag
- FEATURE All implementation of
ITagConsumerDatahave the fieldbool targetAlladded so if we can specify we want to matchalloranyin the targetITaggedEntity(e.g:ICurrency). The following Entities are effected: CollectCurrenciesWithTagsGoalDataDynamicCollectCurrenciesWithTagsGoalDataSpendCurrenciesWithTagsGoalDataUpgradeCurrenciesWithTagsGoalDataRandomTagsCurrencyReward- FEATURE
TagExceptionandTagNotFoundExceptionhave been added.
Trade
- FEATURE
TradeEntity controller has been added, implementingITradeand containing all encapsulated logic required by a trade. - FEATURE
TradeExceptionandTradeNotFoundExceptionhave been added. - CHANGE
TradeDataholds arrays for input and output Tag Ids. Seeupgradenotes.mdfor more detail.
Plot Points
- BUGFIX Fixed an issue where the
AutomationAvailableActivationConditionandGeneratorAvailableActivationConditionwould not fire if their conditions were achieved duringStageinitialization.
Time Management
- BUGFIX Fixed an issue where subscriptions to the
TimerServicemade prior to the initial Unity update would receive an invalid timestamp. - CHANGE All time related logic is now done with milliseconds.
- CHANGE All
TimerSubscriptionconstructors that took time in seconds have been deprecated: TimerSubscription(float durationSeconds, bool loop = false)TimerSubscription(float durationSeconds, long initialTimestamp, bool loop = false)
Timed Rewards
- CHANGE Internal logic uses milliseconds. Data imports seconds and converts to milliseconds when read.
Timer Service
- BUGFIX Zero duration looping subscriptions no longer result in divide by zero exceptions in
TimerService.EvaluateListeners. - CHANGE
TimerSubscription.durationwill now throw an exception if set to less than zero.
Saved Data
- FEATURE Added
BaseSavedDatathat most classes that implementISavedDataextend to deal with the newISavedData.timeCreatedandISavedData.timeModifiedfunctionality.
Upgradeable Currency
- CHANGE
bool UpgradeableCurrency.canBeApplied { get; }no longer considers the availability of theUpgradeableCurrency.
Upgradeable Currency Manager
- CHANGE The arguments for the
UpgradeableCurrencyManagerconstructor now requireITagService.
idlekit-tools
Asset Importer
- CHANGE
TradeDataAssetCreatornow imports and fills out arrays for input and output currency tag Ids. - CHANGE Due to the addition of
ITagConsumerData, Asset Creators for the following Static Data have been updated: CollectCurrenciesWithTagsGoalDataDynamicCollectCurrenciesWithTagsGoalDataSpendCurrenciesWithTagsGoalDataUpgradeCurrenciesWithTagsGoalDataRandomTagsCurrencyReward
Goals
- CHANGE Due to the refactoring of all
ITagConsumerEntityIGoalss, the corresponding unit tests have been updated.
Modifier
- CHANGE
IModifierrelated tests have been moved intoGeneratorTest,TimedBoostTest, andUpgradeableCurrencyTest. - REMOVE
ModifierTesthas been removed.
Plot Points
- FEATURE The Plot Point Editor will now automatically updated the associated
PlotPointDatabasescriptable object when aPlotPointSequenceis created, modified or deleted. - REMOVE
PlotPointDatabaseEditorhas been deprecated. It is no longer required due to Plot Point Editor changes.
Rewards
- FEATURE Added new individual unit test for each rewards testing specific functions:
AscensionRewardTest,CurrencyRewardTest,GachaRewardTest, andRandomTagsCurrencyRewardTest
- REMOVE The
RewardTestwas removed due to the addition of individual tests above.
TradeSet
- REMOVE Due to the refactor of trades,
TradeSethas been removed. SeeUPGRADENOTES.mdfor more details.
Welcome Back
- FEATURE Added the time the user is away for in the welcome back message.
idlekit-examples
Examples
- CHANGE The
examples_trade_tradedataasset now includes atagConsumerDatafield. - CHANGE The Trade example UI prefab now holds a
cooldownDurationto denote the time between each trade being offered. - CHANGE
TradeUIhas been updated to account for changes toCanvasTradeView.
idlekit-showcase
Ascension
- FEATURE Added an ascension battle after the user click the
Ascendbutton. That will serve as an example on how to handle the ascension transition.
Asset Importer
- CHANGE
ShowcaseContentDataAssetCreatornow imports thetradeCooldownDurationfield.
Content
- FEATURE Added a new field to
ShowcaseContentDatathat allows the user to set the base ascension power of thatIContent. - FEATURE
ShowcaseContentDataandShowcaseContentnow have atradeCooldownDurationproperty. - CHANGE
ShocaseContentproperties have been made virtual for extensibility. - CHANGE
ShowcaseContentParametersnow takes aTradearray rather than the deprecatedTradeSet.
Event Content
- FEATURE Added extended classes to showcase the new Event Content system as well as one potential way to extend the implementation to add a limited time to Event Content.
- FEATURE Extended EventContent (ShowcaseEventContent) to add Event functionality to the showcase project. See UPGRADENOTES.md for more details.
- FEATURE Extended EventSettings (ShowcaseEventSettings) to showcase one potential way to implement limited time functionality in Events.
- FEATURE Added a global EntitiesDatabase to show how to manage and access data across multiple Contents.
Events
- FEATURE Added ShowcaseEventEndedEvent and ShowcaseEventStartedEvent to provide support for limited time Events in the showcase project.
Plot Points
- CHANGE Added
PlotPointUIcomponent to manage the UI / PlotPoint flow. Now dialogs must be closed before PlotPoint playback will happen.
Showcase Upgradeable Currency Manager
- CHANGE The arguments for the
ShowcaseUpgradeableCurrencyManagerconstructor now requireITagService.
UI
- CHANGE
CanvasTradeView.Initializenow takes an array of Trade Entities and a trade cooldown value along with aIDependencyContainer. - CHANGE
CanvasTradeView.OnCurrencyChangednow only sets the_acceptButton.interactablefield rather than re-generating the amounts within the trade. - CHANGE
CanvasTradeView.SelectTradehas been renamed toRefreshTrade. - CHANGE
CanvasTradeView.RefreshTradeis now nly called inCanvasTradeView.OnTimerEnded(whenever the trade timer ends). - CHANGE
MakeExchangePlayerEventis now sent viaTrade.MakeTraderather than from UI code inCanvasTradeView.HandleAcceptButtonClick.
Version 0.19.1, 2019-05-30
idlekit-framework
- N/A
idlekit-implementation
Rewards
- BUGFIX Fixed an issue with the
AscensionRewardwhere only one reward would ever be granted.
idlekit-tools
- N/A
idlekit-examples
- N/A
idlekit-showcase
- N/A
Version 0.19.0, 2019-05-27
idlekit-framework
Goals
- FEATURE Introduced
IDynamicGoalDataforIEntityDatathat are associated with aIDynamicGoal. - CHANGE
IDynamicGoalnow requires anIDynamicGoalDatain the interface.
Events
- REMOVE Removed deprecated
IActionManagerclass. - REMOVE Removed deprecated
IEventInvokerclass.
idlekit-implementation
Currency
- REMOVE Removed
CurrencyData.isActiveas it was not used.
Generator
- BUGFIX The bug that any action which would cause a
ModifierIndexChangedEventwould not immediate affect theGeneratoruntil the next time the Generator's payout is recalculated has been fixed.
Events
- REMOVE Removed deprecated
EventInvokerclass. - REMOVE Removed deprecated
LoadContentPlayerEvent. - REMOVE Removed deprecated
LoadStagePlayerEvent. - REMOVE
AscendPlayerEvent.GetRewardIdshas been deprecated. Equivalent functionality now exists in the newAscensionRewardEntity controller. - CHANGE
GrantRewardPlayerEventconstructor now requires aIEventManagerto be passed as an argument. This also effects the following derived classes: ClaimGoalPlayerEventCheckGeneratorUnitTargetHitClaimTimedRewardPlayerEventOpenTimerTrunkPlayerEvent- REMOVE
GrantRewardPlayerEvent.CalculateRewardshas been deprecated. Currency amounts for individual rewards are now calculated viaGrantRewardPlayerEvent.CalculateReward. - CHANGE
CheckGeneratorUnitTargetHit.CheckGeneratorUnitTargetHitwill now only callCheckGeneratorUnitTargetHit.GrantRewardsif there is least oneIRewardto be granted. - CHANGE
GrantRewardPlayerEventnow emits aRewardGrantedEventwhenever aIRewardis granted to the player. - FEATURE
RewardGrantedEventhas been added to signal when aIRewardhas been received by the player.
Goals
- FEATURE Added new
CollectRewardTypeGoalcompletes when the player is granted one or more specifiedIRewards, such as aGachaReward. EquivalentDataandDataAssetclasses have also been added. - FEATURE Added new
DynamicCollectCurrenciesWithTagsGoalprogresses or completes when the player collects from automatedIGeneratorsthat are producingICurrenciesthat are associated with certainITagDatas. - FEATURE Added new
SpendCurrenciesWithTagsGoalprogresses or completes when the player spendICurrenciesthat are associated with certainITagDatas. - FEATURE Added new
UpgradeCurrenciesWithTagsGoalprogresses or completes when the player upgradeIUpgradeableCurrenciesthat are associated with certainITagDatas. - CHANGE All
DynamicGoalnow have the fallback logic that if no automatedIGeneratorproducing the requiredICurrencyis found, it will calculate the dynamicIGoal.targetProgressionbased on the average purchasedIGenerators.payoutCurrencyPerSecondthat are producing the correctICurrency. - CHANGE Introduce base abstract implementation for different
IGoalarchetypes:CollectGoal,DynamicCollectGoal,SpendGoal, andUpgradeGoal. ExistingIGoalshave been retrofitted to implement the abstract classes if applicable. - CHANGE All
Goals no longer have theSerializabletag.
Rewards
- FEATURE
AscensionRewardhas been implemented to make it into a full Entity, inheriting fromIReward. Some functionality from AscendPlayerEvent now lives within theAscensionRewardcontroller. - CHANGE
AscensionRewardDatanow inherits fromIRewardDataand has the requisiteCreatemethod implemented.
idlekit-tools
CanvasView
- BUGFIX Fixed issue in
CanvasGeneratorViewwhere the buy max units button would attempt to purchase an invalid number of units after the final Unit Target had been reached. - BUGFIX Having any
CanvasBoostViewobjects inCanvasContentViewshould be optional.
Data Importer
- FEATURE A new
CollectRewardTypeGoalDataAssetCreatorhas been added to generate theCollectRewardTypeGoalDataAsset. - FEATURE A new
CollectRewardTypeGoalDataAssetHeaderhas been added.
Debug Tools
- BUGFIX The debug ascend tool now purchases all Generators within a
Stageto allow for their related Upgradeable Currencies to be granted via gacha rewards. - FEATURE The debug ascend tool now grants rewards based on Unit Targets as well as the previously supported Goal rewards.
- CHANGE The debug reward tool now uses the
IRewardManagerto get rewards instead of directly creating them. - CHANGE The debug reward tool now emits a
RewardGrantedEventto emulate the behavior of theGrantRewardPlayerEvent.
Main
- CHANGE
OnAscensionCompletenow callsLoadStageinstead of duplicating its functionality.
Plot Points
- BUGFIX
PlotPointBaseActor.OnValidatewill now only update Actor Static Data when not dealing with a prefab. - CHANGE Speech Bubble Actor font, color, style and alignment can now be set via the Plot Point editor tool.
- CHANGE Text Actor text color can now be set via the Plot Point editor tool.
- CHANGE
PlotPointSpeechBubbleActorDatanow supports fields for text font, color, style and alignment. - CHANGE
PlotPointTextActorDatanow supports a field for text color. - FEATURE Added "Delete" menu to the "Sequence" top dropdown. This will give you a dropdown to a chosen Sequence to delete, which includes deleting all of its Frames and removing its id from the
SequenceCollection.activatorsthat it was originally added to.
idlekit-examples
Examples
- FEATURE A PlotPoint Example has been added that is designed to be used in conjunction with a tutorial in the documentation.
- CHANGE The
GrantRewardFromRewardGeneratorPlayerEventhas been updated to account for changes toGrantRewardPlayerEvent.
idlekit-showcase
- N/A
Version 0.18.1, 2019-04-18
idlekit-framework
- N/A
idlekit-implementation
- N/A
idlekit-tools
Plot Points
- BUGFIX Fixed a compile error when building PlotPoint code in device builds.
- BUGFIX Fixed an issue where PlotPoint scenery wouldn't be reactivated correctly.
idlekit-examples
- N/A
idlekit-showcase
- N/A
Version 0.18.0, 2019-04-15
idlekit-framework
Content
- FEATURE Added
long lastActiveTimestamp { get; set; }toIContentSavedDatathat tracks the last time the player interacted with the app.
Dependency Container
- CHANGE Added
void UnBind<T>()toIDependencyContainerto make it more comprehensive and prepare the class further for the 1.0 IoC container update.
Events & Actions
- REMOVE All
IActionshave had nonISavedDataaltering logic removed. Those logic has been moved to the callers and other listening classes, please refer to the changes to theIActionsin theidlekit-implementationsection of theCHANGELOG.md. - CHANGE
IActionhas been renamed toIPlayerStateEvent. All occurrences ofIActionhave been modified to work with the new name. - CHANGE
IAction.Dohas been renamed toIPlayerStateEvent.Apply. All occurrences ofIAction.Dohave been modified to work with the new name.
Event Management
- REMOVE
IActionManagerhas been deprecated after the merge. - REMOVE
IEventInvokerhas been deprecated because allIEventsare dispatched immediately. - CHANGE
IActionManagerhas been merged intoIEventManagerand the APIs have been simplified. All occurrences ofIActionManagerhave been changed to useIEventManager.
Generator
- REMOVE
void RefreshCache()removed fromIGeneratorEntityfrom the interface but not in the implementation, please refer to theUPGRADENOTES.mdfor details.
Services
- REMOVE
IEntityregister and de-registering methods have been removed fromICurrencyManager,IModifierManager, andIRewardManager, please refer to theUPGRADENOTES.mdfor details.
Time Management
- FEATURE Added
ITimerSubscriptionclass that contains all the information in interchangeable time formats to be used with theITimerService. This class is contained in anITimerListener. - CHANGE
ITimerServiceinterface has been changed significantly to work exclusively withITimerListenerfor clarity. The(ref int id)parameter has been removed in all occurrences.
Timed Reward
- CHANGE Renamed
void Begin()tovoid Initialize()to stay consistent with the naming scheme in IdleKit.
Unity Event
- REMOVE Remove
IServicefromIUnityEventListeneras it is usually meant to be used with or as aMonoBehaviourclass and it is not doing anything inIService.LoadandIService.Cleanup.
User Data
- CHANGE
IUserSavedDatais no longer contained by theISavedDataManagerit is a stand alone object that can be injected with theIEntityCache.
Naming
- CHANGE Cleanup all timestamp related name to just use
timestamporTimestampas the name implies that it is in milliseconds.
idlekit-implementation
Events & Actions
- All
Actionhave been renamed toPlayerEvent. The former name would be displayed in brackets: - AscendPlayerEvent (AscendAction)
- CHANGE
IStageending logic in the class has been moved toContentafter the call to dispatch theAscendAction. - CHANGE
IGeneratorunregistering fromIModifierManagerlogic is moved to theModifierManagerthat listens to theEntityRemovedEvent.
- CHANGE
- AutomateGeneratorPlayerEvent (AutomateGeneratorAction)
- CHANGE
IGeneratorprocessing logic in the class has been moved toGeneratorEntityafter the call to dispatch the events.
- CHANGE
- BuyGeneratorPlayerEvent (BuyGeneratorAction)
- CHANGE
IGeneratorprocessing logic in the class has been moved toGeneratorEntityafter the call to dispatch the events.
- CHANGE
- CollectFromGeneratorPlayerEvent (CollectFromGeneratorAction)
- CHANGE
IGeneratorprocessing logic in the class has been moved toGeneratorEntityafter the call to dispatch the events.
- CHANGE
- IncrementGeneratorUnitPlayerEvent (IncrementGeneratorUnitAction)
- CHANGE
IGeneratorprocessing logic in the class has been moved toGeneratorEntityafter the call to dispatch the events.
- CHANGE
- ClaimTimedRewardPlayerEvent
- FEATURE This event has been added to retain the previous behavior of
OpenTimerTrunkPlayerEvent.
- FEATURE This event has been added to retain the previous behavior of
- ClaimGoalPlayerEvent (ClaimGoalAction)
- CHANGE
StageSavedData.ClaimGoal(int)call that deals with goal track has been moved fromStagetoClaimGoalActionbecause it altersISavedData
- CHANGE
- ClearContenPlayerEvent (ClearContentAction)
- REMOVE Removed the
void Initialize(IUserSavedData)from the class as it is injected in the constructor. - CHANGE
IContentclean up logic in the class has been moved to theMainclass after the call to dispatch theClearContentAction.
- REMOVE Removed the
- LoadContentAction
- REMOVE The class has been deprecated and remove because it doesn't handle any
ISaveDataalterations. - REMOVE
ICurrencyloading logic has been moved to theCurrencyManagerlistening to theSetContentAction. - REMOVE
IRewardloading logic has been moved to theRewardManagerlistening to theSetContentAction. - REMOVE
IBoostloading logic has been moved to theModifierManagerlistening to theSetContentAction. - REMOVE
IContentloading logic has been moved toMainafter theIContentis set.
- REMOVE The class has been deprecated and remove because it doesn't handle any
- LoadStageAction
- REMOVE The class has been deprecated and removed because it doesn't handle any
ISaveDataalterations. - REMOVE
IStageloading logic has been moved toMainafter theIContentis loaded.
- REMOVE The class has been deprecated and removed because it doesn't handle any
- LogLastActiveTimePlayerEvent
- FEATURE Added
LogLastActiveTimePlayerEventto log the last active time of the player when the user save or pause the app.
- FEATURE Added
- NewUserPlayerEvent (NewUserAction)
- REMOVE Removed the
void Initialize(IUserSavedData)from the class as it is injected in the constructor.
- REMOVE Removed the
- OpenTimerTrunkPlayerEvent (OpenTimerTrunkPlayerAction)
- CHANGE
ITimedRewardre-initialization logic has been moved toTimerTrunkInitializePlayerEvent.
- CHANGE
- SerializationEvent
- FEATURE Added
PreSerializationEventandPostSerializationEventwhich contains theISavedDatathat will be or were serialized.
- FEATURE Added
- SetContentPlayerEvent (SetContentPlayerAction)
- REMOVE Removed the
void Initialize(IUserSavedData)from the class as it is injected in the constructor.
- REMOVE Removed the
- TimerTrunkInitializePlayerEvent
- FEATURE Added to handle the re-initialization of the
ITimedReward.
- FEATURE Added to handle the re-initialization of the
- TimerTrunkStartEvent
- FEATURE An event that denotes that the
ITimedRewardhas begun.
- FEATURE An event that denotes that the
Event Manager
- REMOVE The event/action queue has been removed from
ActionManager, please refer to theUPGRADENOTES.mdfor details. - REMOVE
onActionQueueEmptyhas been deprecated due to the removal of the action queue. AllIEventcall is now dispatched instantly. - CHANGE
ActionManagerhas been renamed toEventManager.
Content
- FEATURE Added
AscensionCompleteEventthat gets dispatched when the ascension sequence has been completed. - FEATURE Added
ContentInitializedEventthat gets dispatched when theContent.Initialize()call has ended.
Context
- CHANGE
Context.cshas been refactored to separate the creation ofIServicesfrom the binding ofIServicesto allow for easier method overriding in its derived classes.
Entity Event
- FEATURE Added
EntityAddedEventandEntityRemovedEventevents which are triggered when theIEntityControlleris added to or removed from theIEntityCache.
Goals
- CHANGE
GoalSavedData.normaizedProgresswill now return 1 rather than 0 whentargetProgressis 0. - CHANGE
CollectCurrencyGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toCollectCurrencyTypeGoalseeUPGRADENOTES.mdfor details. - CHANGE
CollectUpgradeableCurrencyGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toCollectUpgradeableCurrencyTypeGoalseeUPGRADENOTES.mdfor details. - CHANGE
DynamicCollectCurrencyGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toDynamicCollectCurrencyTypeGoalseeUPGRADENOTES.mdfor details. - CHANGE
SpendCurrencyGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toSpendCurrencyTypeGoalseeUPGRADENOTES.mdfor details.
Modifier Management
- CHANGE
ModifierManagernow loads all theIBoostonSetContentEvent.
Offline Activity
- FEATURE Added
OfflineActivityTrackerto handle the logic of keep track of all the time related activities that should occured while the app is in the background or terminated. - FEATURE Added
OfflineProgressEventthat gets dispatched if any time related activity occurred while the app is in the background.
Time Management
- CHANGE
TimerServicehas gone through major rework to work with the new interface format. - CHANGE
TimerService.nowno longer always returnDateTime.UtcNow, the current time is now being tracked and updated using theOfflineActivityTrackerandIUnityEventHandler.Update. - CHANGE All time stamp related variables have had their names changed to
timestampin milliseconds format for consistency. - FEATURE Introduced
TimerUtilto centralize all conversion between different time format.
Services
- CHANGE The
IServices,CurrencyManager,UpgradeableCurrencyManager,ModifierManager,RewardManager,SavedDataManager,StaticDataManagerhave their caches converted from lazy-initialization to initialization onvoid Load()and termination onCleanup().
Saved Data Serialization
- CHANGE Timer based serialization has been moved from the
JSONSerializerto theSavedDataManager. - FEATURE Added
PreSerializationEventandPostSerializationEventthat get dispatched before and afterISavedDatahave been serialized.
Timer Trunk
- CHANGE The
TimerTrunkimplementation has been refactored to better support resuming the game and switching content without forcing the trunk to restart, see UPGRADENOTES for more details. - CHANGE The unlock functionality of the
TimerTrunkimplementation has been moved to the newShowcaseTimerTrunkclass, see UPGRADENOTES for more details. - CHANGE An
initialDurationfield now allows for the initial subscription duration to vary from subsequent subscription durations. - CHANGE As the duration of the trunk can now change, a new
targetDurationproperty has been added. ThetimeRemainingfield is now calculated from this property. - CHANGE The Static and Saved data field types are now
TimerTrunkDataandTimerTrunkSavedDatarespectively, rather than the base interface types. The types of the accessor fields are unchanged.
idlekit-tools
CanvasViews
- FEATURE
CanvasContentViewhas been added to contain UI elements for entities that are non-stage specific. This allows these elements to be initialized seperately from the stage specific elements. All non-stage specific elements have been moved fromCanvasStageViewtoCanvasContentView. - CHANGE
ReorderUpgradeableCurrenciesis now only subscribed to the event manager at the point that the content has been initialized to prevent content re-initialization forcing a re-ordering of the upgradeable currency UI elements. - BUGFIX
CanvasTradeViewnow activates trades only once theStageInitializedEventhas been received. - BUGFIX
CanvasTradeViewnow re-initializes trade list if a currency changes while the timer subscription is complete. - CHANGE All
CanvasViewand its derivatives have had theirInitialize(...)methods changed into eitherInitialize(IDependencyContainer)andInitialize(IEntity, IDependencyContainer)to reduce the dependency and pave way for the IoC Container.
Debug UI Tools
- CHANGE
CanvasDebugContentToolno longer callsCleanupUI(). The UI is now cleaned up frommain.cson the start of a stage so this is not required.
Dummy Unity Event
- FEATURE Added
DummyUnityEventListenerin theDummyContextso all unit tests can listen toIUnityEventListenerevent.
Offline Activity
- FEATURE Added
OfflineActivityTrackerTestto test the newly implementedOfflineActivityTracker.
Plot Points
- CHANGE
SaveSequenceDialognow only allows pre-definedPlotPointDatabasesandSequenceCollections. Please use theCreate->IdleKit->Plot Pointsmenu to create and setup the required assets. - CHANGE Saving a sequence no longer clobbers an entire folder it thinks the frames are on, it will now only find the old frames and remove them before saving new ones.
- CHANGE The Plot Point Editor now saves Frame objects in the same directory as the Sequence objects.
- CHANGE If the id of a plot point already exists in the file system, you will only be able to save to that file.
Welcome Back
- CHANGED
CanvasWelcomeBackDialoghas been moved fromidlekit-showcaseintoidlekit-toolsas it is also used by other examples. It has also been modified to work with the newOfflineActivityTracker.
idlekit-examples
Boost Example
- CHANGE The Boost example now uses the standard
Contextrather thanExampleContextso that boost data persists between sessions.
Instance Example
- CHANGE The
InstanceContextnow recreates services that depend on theLoaderServiceto ensure that theInstanceLoaderServiceimplementation is injected correctly.
Prefabs
- CHANGE All example UI prefabs and scenes have been updated to take account of the addition of the
CanvasContentView.
idlekit-showcase
Timer Trunk
- FEATURE The
ShowcaseTimerTrunkhas been added to contain logic specific to the showcase game, including the ability for the trunk to be unlocked at a specific stage.
UI
- CHANGE The
ShowcaseUIhas been rationalized to follow the method naming convension of other UI elements.
Version 0.17.0, 2019-03-15
idlekit-framework
Difficulty
- REMOVE
IDifficultyManagerhas been removed from the project, seeUPGRADENOTES.mdfor details..
Entity
- CHANGE Added
IEntityCacheto handle the caching, lookup, and removal of all theIEntityControllercreated in the project. - CHANGE
void Cleanup(ILoaderService loaderService);inIEntityControllerhas been changed tovoid Cleanup(IEntityCache entityCache);, seeUPGRADENOTES.mdfor details.
Generator
- REMOVE
GeneratorRequirementIncrementData requirementIncrements { get; }inIGeneratorDatahas been removed, seeUPGRADENOTES.mdfor details.
Goal
- REMOVE
ICurrencyGoalhas been deprecated in the project, seeUPGRADENOTES.mdfor details. - REMOVE
IGeneratorGoalhas been deprecated in the project, seeUPGRADENOTES.mdfor details. - REMOVE
float[] difficultyIncrement { get; }inIGoalDatahas been removed from the project, seeUPGRADENOTES.mdfor details. - FEATURE Added
bool canClaim{get;}andfloat normalizedProgress {get;}toIGoalSavedData.
Loader
- CHANGE Added override version of
TReturn LoadEntity<TReturn, TData>(string dataId)that allows the user to not specify any instance id and creating a global unique instance per static data. - REMOVE
IEntityControllercaching has been moved to the newly createdIEventCacheclass, seeUPGRADENOTES.mdfor details.
Logging
- FEATURE The
IPriorityLoggerhas been added as an interface to allow logging out of information, warnings, errors and exceptions. TheIPriorityLoggershould be invoked via theIdleKitLogwhich now exists, along with various logger implementations, in in idlekit-implementation. - REMOVE
IExceptionEventhas been deprecated, useIdleKitLoginstead to log exceptions.
idlekit-implementation
Entity
- CHANGE All
EntityController'svoid Cleanup();method have been updated to reflect the interface change.
Event
- REMOVE
ErrorEventandExceptionEventhave been removed. Code that used these previously has been switched over to using theIdleKitLog. - REMOVE
GoalEventhas been replaced withProgressGoalActionandSetGoalProgressAction. SeeUPGRADENOTES.mdfor details. - CHANGE Introduced
EntityEventto reduce redundancy in all theIEventimplementations. This can be used to make commonIEntityControllerrelatedIEventin the future.
Goals
- CHANGE All
Goalsnow take anIEventCachein the constructor. This eliminates the need to injectIEntityControllervia the interfaceICurrencyGoalandIGeneratorGoal. - CHANGE Introduced base implementations of
IGoalandIGoalData-GoalandGoalDatato abstract the common functionality in allIGoal. - CHANGE
AutomateSpecificGeneratorGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toAutomateGeneratorTypeGoalseeUPGRADENOTES.mdfor details. - CHANGE
BuySpecificGeneratorGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toBuyGeneratorTypeGoalseeUPGRADENOTES.mdfor details. - CHANGE
CollectCurrenciesOfRarityGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toCollectCurrenciesWithTagsGoalseeUPGRADENOTES.mdfor details. - CHANGE
CollectFromSpecificGeneratorGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toCollectFromGeneratorTypeGoalseeUPGRADENOTES.mdfor details. - CHANGE
GetGeneratorUnitsForSpecificGeneratorGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toGetGeneratorUnitsForGeneratorTypeGoalseeUPGRADENOTES.mdfor details. - CHANGE
GetUpgradesForSpecificCurrencyGoaland its correspondingIGoalDataandIGoalDataAssethave been renamed toGetUpgradesForCurrencyTypeGoalseeUPGRADENOTES.mdfor details. - FEATURE Created
ProgressGoalActionand moved allIGoal's savedData alterations into theIAction. - FEATURE Created
SetGoalProgressActionand moved allIGoal's savedData alterations into theIAction
Logging
- FEATURE The
IdleKitLoghas been added to allow for the logging of information from within IdleKit.IdleKitLogis a static class accessible globally within the framework. It wraps aIPriorityLoggerimplementation which can be changed viaIdleKitLog.RegisterLogger(). Functionality is provided for logging information, warnings, errors and exceptions to the Unity console/log via the defaultIPriorityLoggerimplementations;DebugLogger,DevelopmentLogger,ExceptionLoggerandNullLogger. - CHANGE The
LoaderService.LoadEntitywill now log an exception when theStaticDataManagerreturns null rather than causing aNullReferenceException.
Plot Points
- BUGFIX Fixed an issue where the
PlotpointSequences wouldn't clean up data betweenClearContentActions
Static Data
- CHANGE The
StaticDataManagerwill now output a log message rather than hard failing if a requested Entity or type does not exist in the Entities Database. See UPGRADENOTES.md for more details. - CHANGE The
StaticDataManagerwill now return empty arrays rather than null/defaults from methods that get collections of Entities when the requested Entity types do not exist. See UPGRADENOTES.md for more details. - CHANGE
StaticDataManager.GetDataForIdsno longer returns an empty array whenever any of the requested Entity Ids are invalid. See UPGRADENOTES.md for more details. - CHANGE
GetData<T>(Predicate<T>)an array rather than aIEnumerable. See UPGRADENOTES.md for more details.
idlekit-tools
Context
- CHANGE Split out service loading calls in
Contextinto a newLoadServices()method and updatedPlotPointContextto implement this. - CHANGE Introduced
ExampleContextwhich overridesSavedDataManagerfor Example scenes. - BUGFIX Example scenes now use
ExampleContextto avoid loading incorrect Saved Data when switching between scenes.
UI
- BUGFIX
CanvasUpgradeableCurrencyViewnow correctly unsets currency related data onClear(). - BUGFIX
CanvasStageViewnow only subscribes toHandleCurrencyChangedEventafter initializing Currency views. - REMOVE Removed
CanvasHeaderView.csas it is no longer required in Showcase or Examples. - CHANGE Renamed the
CanvasDebugGachaTooltoCanvasDebugRewardTooland modified it to allow the granting of allIRewardrewards not justIGachaRewardrewards.
idlekit-example
Context
- CHANGE
RewardGeneratorContexthas been renamedRewardGeneratorExampleContextand now inherits fromExampleContext. - CHANGE Introduced
PlotPointExampleContextwhich inherits fromPlotPointContextand overridesSavedDataManagerin the same way asExampleContext. - CHANGE Updated all Example scenes to use example specific contexts rather than
Context.
Example
- FEATURE Added a new instance example utilizing the instancing of
IEntityControllerthat allows the usage of multipleIEntityControllerswith the sameIEntityData.id
UI
- CHANGE Updated
GachaUIto inherit fromCanvasDebugRewardToolrather thanCanvasDebugGachaTool.
idlekit-showcase
Plot Points
- CHANGE Sample Plot Point assets using Trailer Park Boys assets have been replaced with new Idle Kit assets.
- CHANGE The example_ascension_available Plot Point has been added. This is intended to act as a sample for how Plot Points are authored.
UI
- BUGFIX Removed Back button from Showcase UI as it is no longer used.
Misc
- BUGFIX
ShowcaseContentDataAssetnow correctly referencesITradeDatarather thanTradeDataas aGuidReferencetag.
Version 0.16.0, 2019-02-19
idlekit-framework
GeneratorStageData
- REMOVE No longer required as the
IStagenow just takes an array ofIGeneratorEntityDatas.
IBoost
- CHANGE Moved
IBoostSavedData.isActivetoIBoost.isActive, since not allIBoostSavedDatawould store its activation status.
IContext
- FEATURE Moved over to the framework instead of the implementation layer. Defines a class that provides an
IDependencyContainerand can both bind and release dependencies from it.
ICurrency
- FEATURE
ICurrency,ICurrencyData, andICurrencySavedDatanow extend theIUnlockable,IUnlockableData, andIUnlockableSavedDatainterfaces.
ICurrencyManager
- FEATURE Introduced
T[] GetAllCurrencies<T>(Predicate<T> predicate)that allows querying ofICurrencywith customized predicate. - FEATURE Added
ICurrency[] GetAllCurrenciesWithAvailability(bool availability)to getICurrencywithavailability.
IEntityController
- FEATURE Defines an object that is a controller in the MVC pattern, see UpgradeNotes for more details on converting your objects to use this interface.
IEntityData
- FEATURE Defines an object that is the model to the IEntityController. This object will create its controller through the required methods. Extends and functions like a IStaticData otherwise.
IGenerator
- CHANGE Added
MeetsAutomationCostfor checking whether or not the user has reached the currency cost required forCanAutomate. Does not check upgrade requirements likeCanAutomate. - CHANGE Added
MeetsBuyCostfor checking whether or not the user has reached the currency cost required forCanBuy. Does not check upgrade requirements likeCanBuy. - REMOVE No longer uses the DateTime struct. Only requires the
timestampMs. - CHANGE Added
IsBoughtto the generator. - CHANGE Now holds a
IGeneratorEntityDataas theIEntityData. Still holds aIGeneratorDataas it's "defining" data.
IGeneratorBalanceData
- CHANGE This
IStaticDatais now wrapped by theIGeneratorEntityData.
IGeneratorData
- CHANGE No longer requires
isContentSpecific. This data is now wrapped by the actualIEntityDatacalledIGeneratorEntityData.
IGeneratorEntityData
- CHANGE The
IEntityDatato theIGeneratorcontroller. Handles all the necessary required functions, but holds no raw data and instead wraps theIStaticDatas:IGeneratorData,IGeneratorUnitTargetSequenceData, andIGeneratorBalanceData.
IGeneratorUnitTarget
- REMOVE Controller was removed as it did nothing but hold data. This
IStaticDatais now wrapped by theIGeneratorEntityData.
IGeneratorSavedData
- REMOVE
_startProductionTotalMsis removed asIGeneratorSavedDataimplementsITimedSavedData.
IGoal
- CHANGE Added
Ascend()andReset()calls for handling their own logic instead of theIStage.
IGoalSavedData (IGoalSequenceSavedData)
- FEATURE This saved data is now owned by the
IGoalinstead of theIStage.
ILoaderService
- CHANGE All specific load methods have been removed from ILoaderService and the derived
LoaderService. Loading is now performed by a generic loading methods using theIEntityController's static data'sIEntityData.Createmethod. SeeILoaderServicefor new interface functions andLoaderServicein idlekit-implementation for examples.
IStage
- FEATURE Now supports both
GetGoal(string id)andGetActiveGoal(int index), whereGetGoalallows the fetching of completed or inactive goals. - CHANGE Due to the above feature,
GetGoalwill now return the goal regardless of activity or completely.
IStageData
- CHANGE No longer requires
GeneratorStageDatas as they are not encompassed by a single static dataIGeneratorEntityData. A list of guid strings is used instead.
IStageSavedData
- CHANGE No longer handles goal saved data.
- CHANGE Now handles
goalIndexandslotIndexdirectly.
IStaticData
- INFO While the idea that static data is serialized data has not changed, the addition of
IEntityDatameans that static data can now be used as data 'chunks' that don't necessarily create anIEntityController, but are loaded to feed information to a system or loaded as a wrapper to a particular piece of anIEntityData's model.
ITimedRewardSavedData
- REMOVE
startTimestampMsis removed asITimedRewardSaveddataimplementsITimedSavedData.
ITimedSavedData
- CHANGE Add
ITimedSavedDatainterface forISavedDatathat is going to be store a timestamp in milliseconds.
IUnlockable
- FEATURE Introduced
IUnlockablewhich marks an IEntity asavailableandobtainedto allow it to be enabled or disabled during certain in-game functions such asRandomTagCurrencyReward. - FEATURE Introduced
IUnlockableDataandIUnlockableSavedDatato accompany the addition ofIUnlockable.
IUpgradeableCurrency
- FEATURE
IUpgradeableCurrency,IUpgradeableCurrencyData, andIUpgradeableCurrencySavedDatanow extend theIUnlockable,IUnlockableData, andIUnlockableSavedDatainterfaces. - CHANGE Removed
isOwnedandisUnlockedas they are now covered by theIUnlockableinterface.
IUpgradeLevelData
- CHANGE
IUpgradeLevelDataandIUpgradeRequirementhave been added to the interfaces.
Miscellaneous
- All instances of
Load,Begin, andEndthat existed in Entities or Actions have been converted toInitializeandCleanupcalls. This is only a naming consistency refactor. All uses of the previous naming should be clearly marked in your compiler errors viaSystem.Obsolete. - The GuidReferenceable tag on all DataAssets now correctly references derived rather than interface types.
idlekit-implementation
ActionManager
- BUGFIX Fixed an issue with
DispatchEventImmediate()where an exception event would not be fired if a non-IAction was passed as an argument.
BoostData
- CHANGE Now implements a
IniitalizeModifierDatamethod which initializes any modifier data on a boost.
CollectFromGeneratorAction
CHANGE The constructor now only requires ICurrencyManager and ITimerService to be passed as dependencies.
Content
- CHANGE On
CleanuptheContentwill now end the current stage, deregistering it from theLoaderServicebefore then deregistering itself. - CHANGE
rarity(previouslyrarityData) is now optionally null.
GachaReward
- CHANGE
allowAsRandomRewardis removed and moved toRandomTagCurrencyReward.allowUnobtained. Their respectiveIStaticDataandISavedDatahave also been changed to reflect this move. - CHANGE
CanClaimnow returns false if any of itsGachaSlots returns false forHasClaimableItem.
GachaSlot
- FEATURE Added
HasClaimableItemwhich returns whether or not it has at least oneGachaItemwithin it thatCanClaim.
Generator
- CHANGE The controller class has been renamed to
GeneratorEntity, see UPGRADENOTES.md for more details. - CHANGE Now caches values retrieved by the
DifficultyManager. - CHANGE Implements
IsBought.
Goal
- CHANGE
GoalSequenceSavedDatahas been replaced byGoalSavedData. EachGoalnow has it's ownGoalSavedData. Member variables related to slots and goal indicies have been removed. See UPGRADENOTES.md for more details. - CHANGE
GoalSavedDatanow implementsLoad,Save,DeleteandResetmethods. TheResetmethod is now called from theClaimandAscendmethods. - CHANGE All
Goalimplementations now implementAscendandResetmethods which call the equivalent methods on theirGoalSavedData.
GuidReferenceHelper
- CHANGE Added a sanity check to prevent empty and null ids from getting into the cache.
LoadContentAction
- CHANGE The LoadContentAction now contains specific methods for loading of
IRewards,IBoostsandICurrencieswhich are invoked prior to loading theIContent.
LoaderService
- CHANGE The constructor now requires that only the
IDependencyContaineris passed as a dependency.
RandomTagCurrencyReward
- BUGFIX Fixed issue where
CanClaimthrew an exception if it was ever false - CHANGE Now holds a list variable instead of creating a new one each
RefreshValidCurrenciescall. Will still clear and repopulate the reference List each validation step.
StaticDataManager
- CHANGE Remove the usage of
System.LinqinStaticDataManager.
TimedBoost
- CHANGE Add property duration to
TimedBoostto have it calculated dynamically.
TimedBoostSavedData
- CHANGE No longer extends
BoostSavedDataand now extendsITimedSavedData.
ToggleAvailableAction
- FEATURE Added
ToggleAvailableActionto toggleIUnlockable.available.
ToggleBoostAction & ToggleTimedBoostAction
- CHANGE
ToggleTimedBoostActionis no longer called in place of aToggleBoostAction. It is now a stand alone extension ofToggleBoostActionthat needs to be fired explicitly. It remains polymorphic, so global listeners toToggleBoostActioncontinue to receive events fromToggleTimedBoostActiondispatches.
UpgradeableCurrency
- CHANGE The
UpgradeableCurrencyDatanow contains aInitializeModifierDatamethod which will initialize the modifier data that it owns. - CHANGE Due to the addition of
IUnlockable,IUnlockableData, andIUnlockableSavedDatainterfaces, some functionality of this class has changed. Code that previousily utilizedUpgradeableCurrency.isOwnedandUpgradeableCurrency.isUnlockedhave been updated.
UpgradeLevelData
- CHANGE
UpgradeLevelDataandUpgradeRequirementnow inherit fromIUpgradeLevelDataandIUpgradeRequirementrespectively. See UPGRADENOTES.md for more detail.
Miscellaneous
- CHANGE All Entitiy
DataAssetshave had theirGuideReferenceabletags updated to register with their concrete rather than interface types. - CHANGE Many getter methods have been replaced with expression bodied members.
idlekit-tools
AssetImporter
- CHANGE
DataAssetImporterhas been split out into framework vs showcase specific implementations. See UPGRADENOTES.md for more details. - CHANGE
TagDataAssetCreatorandRarityDataAssetCreatorno longer share a base class. - CHANGE
BaseAssetCreator,CurrencyAssetCreatorandUpgradeableCurrencyAssetCreatornow supports importing ofTagdata. - CHANGE Improved feedback in Data Asset Importer Window when CSV path is invalid.
- CHANGE
BaseDataAssetCreatornow implements the path to which constant data headers are output instead ofBaseDataAssetImporter. This allows for each implementation ofIDataAssetCreatorto override this path if required. - CHANGE
GeneratorEntityDataAssetCreatorandGeneratorEntityDataAssetHeaderhave been added to support changes toGeneratordata structures. See UPGRADENOTES.md for more details. - CHANGE The
isContentSpecificflag has been removed fromGeneratorDataAssetHeader. - CHANGE Sparse arrays are no longer allowed in data structures. See UPGRADENOTES.md for more details.
idlekit-example
LoopingContent
- CHANGE As they are no longer required due to Framework changes,
LoopingContextandLoopingContentLoaderServicehave been removed.
TimerTrunk
- CHANGE Removed unrequired
Enable()andDisable()methods fromCanvasTimerTrunkView.
idlekit-showcase
AssetImporter
- CHANGE
DataAssetImporterhas been split out into framework vs showcase specific implementations. See UPGRADENOTES.md for more details. - CHANGE
ExampleContenthas been renamedShowcaseContent. See UPGRADENOTES.md for more details. - CHANGE The showcase asset importer now outputs showcase specific constant data headers into a folder within the showcase project rather than tools.
ExchangeRates
- CHANGE
mg01_missingresources_exchangerate_ExchangeRateDataAssetasset has been renamed tomg01_exchangerate_missingresources_ExchangeRateDataAsset. - CHANGE Exchange rates for rare and common trades have been added.
ShowcaseContentLoaderService
- CHANGE As this class is no longer required due to Framework changes, it has been removed.
ShowcaseContext
- CHANGE No longer overrides
_loaderService.
Trades
- CHANGE The default Trade example has been replaced with three seperate trades which allow for trading of common character and generator cards along with rare character cards for soft currency.
Miscellaneous
- CHANGE A number of UI elements now take
IDependencyContaineras an argument rather thanDependencyContainer. - CHANGE A number of getter methods have been replaced with expression bodied members.
Version 0.15.0, 2019-01-07
PlotPointManager
- BUGFIX PlotPoint Sequence Collections are now correctly cleaned up when a stage ends to prevent caching of invalid data.
AscendAction
- BUGFIX When granting a RandomRarityCurrencyReward the AscendAction now correctly sets whether the reward can be granted when locked based on the AscensionRewardData's allowAsRewardWhenUnowned flag.
GrantRewardAction
- CHANGE Now has a specific exception thrown when no valid reward can be found: InvalidRewardClaimException.
ICurrency
- CHANGE ICurrency now requires that a ContainsTagOrRarity() method is implemented. See UPGRADENOTES.md for more details.
ICurrencyManager
- CHANGE ICurrencyManager now requires that a GetAllCurrenciesOfTagOrRarity() method is implemented. See UPGRADENOTES.md for more details.
IGlobalUpdateManager -> IUnityEventListener
- CHANGE IGlobalUpdateManager has been replaced with IUnityEventListener which uses C# events instead of holding on to IList of interface delegates (i.e: IUpdateable). Please see UPGRADENOTES.MD for more details.
ITimedRewards
- CHANGE Added these entity interfaces to dictate the implementation of a reward that is dependent on a timer
ITimerService
- CHANGE The specific implementation of the TimerSubscription has been moved to another file TimerSubscription.cs
- CHANGE TimerService now uses a Dictionary for ITimerListener subscriber lookup for better performance
Example Project
- FEATURE Trade functionality has been implemented in the Example Project via the TradeSet, Trade and TradeData classes. See CanvasTradeView.cs for an example.
- FEATURE Extended the Content (ExampleContent) to provide more "game like" elements to the example without dirtying up the core IdleKit code. See UPGRADENOTES.md for details.
- FEATURE Extended the Context to support Example specific extensions of services.
- FEATURE ITimedReward is used for a simple implementation of the TimerTrunk concept is now in the example main game. It is works like a Reward Id that is retrieved through a button, of which is disabled until a certain TimerService listener reaches the end of its timer. Extends ITimedReward.
- CHANGE Improved error handling in Main.cs to output a stack trace of ExceptionEvents where available.
- CHANGE A BaseContentDataAssetCreator has been implemented in the importer. See UPGRADENOTES.md for more detail.
Version 0.14.1, 2018-11-26
IModifierManager
- CHANGE The specific implementation of the ModifierCache has been moved into another file.
- CHANGE ModifierCache.SearchModifierAffectingId
now returns an IEnumerable instead of a SortedSet. - BUGFIX Fix a bug where multiple IModifiers with the same modifiableId and same ModifierCategoryData.priority would only count once in Modifier related calculations.
Version 0.14.0, 2018-11-23
IContent
- CHANGE Content now uses a simple sequential Stage list in ContentData to determine the Stage transition. See UPGRADENOTES.md for more details.
- CHANGE IContext and Dependency Container have been moved from the idlekit-example into idlekit.
- CHANGE Extracted the looping and index based stage transition logic from Content and created the LoopingContent subclass in the example project.
ICurrency
- FEATURE Rarity and Tag functionality has been implemented via IRarityData and ITagData. RarityData is now an extended ITagData See UPGRADENOTES.md for more details.
ICurrencyManager
- CHANGE Add unit test coverage for all public methods of ICurrencyManager and IUpgradeableCurrencyManager.
- CHANGE Deprecated Currency.Get, see UPGRADENOTES.md for details.
- CHANGE ICurrencyManager no longer loads ICurrency, instead ICurrency is loaded and registered with the ICurrencyManager in LoadContentAction
IEconomy
- CHANGE Economy methods related to generator units have been refactored. See UPGRADENOTES.md for more details.
IExchangeRate & IExchangeables
- FEATURE IExchangeRate now allows for a rate to be calculated when trading IExchangeables, such as Currency. See UPGRADENOTES.md and Content.cs for more details.
IEvent
- CHANGE Added ExchangeEvent and TradeMissingResourcesAction to support missing resources exchange rate functionality.
IGenerator
- CHANGE Added ExceptionEvent to the IGenerator in case functions are called to the IGenerator while the GeneratorState is null
- CHANGE IGenerator no longer register and unregister itself with the IModifierManager
ILoaderService
- FEATURE Added the ability to load ICurrency, and IReward (by id, ids, and load all in IContent) to the ILoaderService
- CHANGE ILoaderServices has been updated to work with string ids instead of specific concrete class.
IModifierManager
- CHANGE IModifiers no longer register directly with the IModifierManager. They are being registered to IModifierManager in LoadContentAction and LoadStageAction
IReward
- CHANGE Removed RewardResult class as it is no longer useful
- CHANGE Removed ICurrencyAmount as it was boxing the struct concrete implementation
IRewardManager
- CHANGE IRewardManager no longer loads IReward, instead IRewardManager is loaded and registered with the IRewardManager in LoadContentAction
IUpgradeableCurrency
- CHANGE IUpgradeableCurrency no longer register and unregister itself with the IModifierManager
- CHANGE Now fires a new action, CurrencyUnlockedEvent whenever isUnlocked flips from false to true
Example Project
- FEATURE A "Welcome Back" dialog now spawns to inform the user of how much has been generated since the app's last pause/exist.
- BUGFIX Importer no longer crashes Unity on exceptions.
- FEATURE Added functionality to allow the player to exchange for missing resources when they do not have enough resources to upgrade an upgradeable currency.
Version 0.13.1, 2018-10-30
HOTFIX
- CHANGE EventInvoker is now a class instead of a struct to avoid boxing allocation.
- CHANGE Added unit test for the interface methods of IActionManager and IEventManager.
- CHANGE Added exception when passing an IAction into DispatchEventImmediate and updated the documentation for that method.
- BUGFIX Fixed ActionManager.cs DispatchEventImmediate not firing target specific event dispatch.
Version 0.13.0, 2018-10-26
- FEATURE Introduced TestDataBuilder
that can help with creating IStaticData quickly in unit tests. - FEATURE Added new error checking for more possible points of error when creating the IGoal and IGoalData.
- FEATURE Can now fire events from the ActionManager immediately, instead of adding them to the queue. This does not include actions.
- FEATURE Introduced IEventPools so that all IEvent and IAction are no longer being instantiated everytime they are dispatched. This requires any asynchronous listener to cache an event's members as they will be cleared once the event re-enters the pools.
- FEATURE To allow for more performant practices, event management now has instance specific subscription/dispatching. Each listener can listen to a single specific object's dispatching of that event. This does require the listener to have that object's reference.
- CHANGE DynamicCollectCurrencyGoal has been changed from using only the automated IGenerators' payoutPerSecond to using all the purchased IGenerators' payoutPerSecond when calculating its dynamic target.
- CHANGE Modified all existing unit tests to adopt to the TestDataBuilder pattern to get rid of long-winded test setup code.
- CHANGE Performed unit test passes on all the Goals to ensure coverage of all the newly added error-checkings and exceptions.
- CHANGE Changed JsonSerializer to not serializeDirty every LateUpdate but instead with an constant interval defined in the JsonSerializer class.
- CHANGE Removed unused technical requirements such as IStaticData.Create, IGuidReferenceableAsset.dataType, and IGuidReferenceableAsset.ResetId.
- CHANGE IGenerators in the AutoCollectState will batch collect calls within a time frame together if the speed of the IGenerator is too fast to prevent from rapid calling of CollectFromGeneratorAction.
- CHANGE Cleaned up the dependencies in all IGeneratorState and remove the Automate() method from IGeneratorState to have it done in AutomateGeneratorAction.
- CHANGE Removed id argument from IStaticDataManager.AddData and removed overloaded implementation to simplify API.
- CHANGE Altered the ActionManager to encompass any events into InvokerObjects. Internally, this allows the events to be queued while still being strongly typed, therefore removing a dynamic invokation. This was a very large performance improvement in stress tests.
- CHANGE Polymorphic dispatching is no longer enforced. Instead, each IEvent has a Type[] dispatchAs property that allows each class to inform the EventManager which type of listeners it wishes to invoke. View the code documentation for additional details.
- CHANGE IdleKit uses, internally, the instance specific dispatching and subscribing as described in the Features.
- CHANGE Generators now cache their payouts and speeds, re-caching whenever something could cause them to be altered. See ModifierIndexChangedEvent and IncrementGeneratorUnitAction.
- CHANGE Upgraded the targeted .NET framework version to 4.x
- BUGFIX Solved an issue where AutoCollectState, when entered from the WaitToCollectState, could collect based on the last time the ProductionState was entered. AutoCollectState has more strict checks on enter.
- BUGFIX GetGeneratorUnitsForAllGeneratorsGoal now keeps a list of IGenerators that have been reached to prevent double counting towards the goal progress.
Version 0.12.2, 2018-10-03
- BUGFIX Fix device build error by removing AssetDatabase.FindAssets in runtime PlotPointDataProvider.
- BUGFIX Fix starting with an automated IGenerator on a new playsession would not collect the currency gained since the previous playsession.
- BUGFIX Fix warnings that were previously suppressed by the UnityEditor by removing non-numeric characters in #pragma warning disable.
Version 0.12.1, 2018-10-01
- BUGFIX Fixed issue where AutoCollectState would automate all time between last start production and the time that it was entered. It no longer fires collection events on entry and will continue where other states, like the ProduceState, left off.
- CHANGE IGeneratorState now takes the previous IGeneratorState in the Enter method and the next IGeneratorState in the Exit method.
Version 0.12.0, 2018-09-28
- FEATURE Added Plot Points to IdleKit.
- FEATURE Introduced IEvent and the derived ContentEvent, CurrencyEvent, GeneratorEvent, GoalEvent, ModifierEvent, StageEvent that can be sent and listened to across different Entities, Services, and Actions.
- FEATURE Introduced IEventManager that allows the subscription, un-subscription, and dispatching of IEvents.
- FEATURE IdleKit now uses the Event system for communication instead of relying on directly referencing the object of interests.
- FEATURE Introduced an action queue system to be used inside the IActionManager for IAction management and dispatch. IActions triggered on the same frame will now be treated as a proper queue instead of a stack.
- FEATURE Introduced the ILoaderService to create and preload the Entity classes with the proper dependencies.
- FEATURE Introduced the IActionPrototypeFactory to register and clone all IActions to reduce the dependency and allow inheritance and overloading.
- FEATURE Introduced CollectUpgradeableCurrencyGoal with an "any" field to allow the goal to track any UpgradeableCurrency obtained.
- FEATURE Added a ToggleBoostEvent for turning IBoosts on or off.
- FEATURE Added ErrorEvent and ExceptionEvent which get sent instead of Exceptions being thrown that may soft-lock the game. We plan to do an error handling pass in the future sprint this is only a temporary solution.
- CHANGE IAction is now an IEvent. Upon completion of the IAction, the IAction event will be dispatched, which can be subscribed to any listener.
- CHANGE Modified the entity classes such as Content, Currency, Generator, Goal, and Stage classes to adapt to the new Event and Loader system.
- CHANGE Modified the service classes to adapt to the new Event system.
- CHANGE Changed the Generator unit cost's mathematical formula to reflect the Customer cost in TPB.
- CHANGE Moved the DataAssetImporter from IdleKit into Example #3.
- CHANGE Trimmed down IRewardManager to remove confusing Claim() methods.
- CHANGE Introduced IValidatableReward, an reward that requires validation before it can be granted. For example, the GrantGachaRewardAction can validate the IValidatableReward before adding it to the reward pool.
- CHANGE GrantCurrencyReward and GrantRandomRarityCurrencyReward actions now grant the IReward without checking the whether the user has unlocked the UpgradeableCurrency or not. The validity check has been moved to IValidatableReward.
- CHANGE Goals now support being reused within the same Stage asset.
- CHANGE Generators now fire GeneratorPayoutChangedEvents and GeneratorSpeedChanged events.
Version 0.11.0, 2018-08-17
- FEATURE Introduced IBoost that represents modifiers that should not be tied to other entities and instead have their own internal logic.
- FEATURE Introduced simple implementations of IGlobalUpdateManager and ITimerService into IdleKit.
- FEATURE Introduced ISavedData.Reset as a more optimal way to reset a saved data than previously Delete followed by a Load.
- CHANGE Refactored all Services/Managers to get rid of loading dependency chain on the start-up script.
- CHANGE Added ICurrency accessor to CollectCurrencyGoal.
- BUGFIX Fixed a bug where the DataImporter would not import item indexed more than 10 due to faulty regex.
Version 0.10.0, 2018-08-17
- FEATURE Introduced ISavedData interface for all EntitySavedData, which allows the user to implement their own saved data.
- FEATURE Introduced ISerializer and injected it in all EntitySavedData to handle Save, Load, and Delete operations.
- CHANGE Replaced IKeyValueSave with ISerializer so the users can specify their own way of serialization.
- CHANGE Split IUserData into IUserSavedData to store user data and ISavedDataManager to manage loading of ISavedData.
- CHANGE Renamed IDataManager to IStaticDataManager for clarification.
Version 0.9.1, 2018-08-14
- FEATURE Added onRewardGranted event to IRewardManager when a reward is granted.
- FEATURE Introduced ICurrencyReward for IRewards that grant ICurrency.
- FEATURE Introduced IRewardResult to pass the IReward granted information to the view.
- FEATURE Added onCurrencyRewardGranted event to be fired in the GrantRewardAction when ICurrencyReward is granted.
- BUGFIX Fixed a bug that GachaReward is granting the IReard even if AllowAsRandom is turned off.
- CHANGE Moved all IReward claiming logic into GrantRewardAction instead of it being in the IReward.
Version 0.9.0, 2018-08-02
- CHANGE Extracted Modifier related logic from IEconomy into IModifierManager.
- CHANGE Removed IEconomy dependency from IDataManager and IUserData.
- CHANGE Moved GeneratorUnitTarget related ModifierData into GeneratorBalanceData.
- CHANGE Introduced IModiferData interface and IModifierCategory entity to process ModifierLogic.
Version 0.8.0, 2018-07-25
- CHANGE Major refactor of the following names to make IdleKit more general:
- IBusiness -> IGenerator
- BusinessSaveData.progression -> GeneratorSaveData.generatorUnitTarget
- All usages of the words like progression or customer for describing an IBusiness have been changed.
- IBreakpoint -> IGeneratorUnitTarget
- IBreakpointSequence -> IGeneratorUnitTargetSequence
- ISeason -> IStage
- IGacha -> IGachaReward
- IModifierData -> IModifierDataCollection
- IContentData.PlaythroughDatas -> IContentData.StageSequenceDatas
- CHANGE DataAssetImporter contains hooks when the DataAssets are created now.
Version 0.7.15, 2018-07-16
- FEATURE DataAssetImporter that creates EntityDataAssets from CSVs.
- FEATURE OpenGachaAction implemented so GachaReward can be properly granted in the frontend.
- FEATURE Comments improved and updated throughout the entire codebase.
- BUGFIX Fix the issue that CurrencyReward only grants the minimum currency amount.
- BUGFIX Fix the issue that DynamicCollectCurrencyGoal includes Businesses that do not generate the target currencyId in the calculation of targetProgression. Also, add a unit test to test it.
Version 0.7.14, 2018-07-05
- BUGFIX Sets the target amount of HitBreakpointsGoal to be the remaining breakpoints in that season if there are less breakpoints remaining than the initial target amount.
Version 0.7.13, 2018-06-28
- BUGFIX Fixed SpendCurrencyGoal to check for a negative difference value.
Version 0.7.12, 2018-06-27
- CHANGE New AddData method in DataManager that allows passing explicit types as parameter in order to suppot IL2CPP.
Version 0.7.11, 2018-06-26
- CHANGE OnCurrencyChangedHandler now also has "double difference" as part of the handle.
- BUGFIX Above fixes issue where changing currency in an amount 15 digits lower than the current amount would not increment any goals.
Version 0.7.10, 2018-06-21
- BUGFIX Separated business state initialization and activation in order to activate goals after business state is initialized but before they get activated.
- BUGFIX Fixed all unit tests.
Version 0.7.9, 2018-06-20
- BUGFIX Create and activate goals before businesses so goals can track business collection.
Version 0.7.8, 2018-06-19
- BUGFIX Pass a count when firing business onCollect so the correct number of collects are tracked in goals.
Version 0.7.7, 2018-06-18
- CHANGE Refactor ITimerService and ServerTime offset.
Version 0.7.6, 2018-06-15
- CHANGE Removed isActive field from static data that won't use it.
Version 0.7.5, 2018-06-07
- CHANGE Added isActive field in static data.
Version 0.7.4, 2018-06-06
- CHANGE Synced IdleKit changes into Fenwick Repo which resolves some Core Dependencies to DateTimeExtensions and removes unused variables to remove warnings.
Version 0.7.3, 2018-06-06
- CHANGE Caching ModifierDatas array outside for loop to avoid constant calls in il2cpp.
Version 0.7.2, 2018-06-05
- CHANGE Added a cached dictionary of unique modifiers affecting a modifiable.
Version 0.7.1, 2018-06-04
- CHANGE [Refactor] SavedData objects now have the ability to choose game states (if any) that they will allow deletion of their local saved data.
- CHANGE CurrencyManager further virtualized.
- CHANGE SavedDatas further virtualized.
- CHANGE IBusiness now has "MeetsBuyUnlockRequirement" and "MeetsAutomationUnlockRequirements" to separate requirements from costs.
- BUGFIX Default values that were missing in Saved Datas have been added.
- BUGFIX All saved datas were not persisting, they will now unless they explicitly set to do so (as per the first CHANGE described).
- BUGFIX Season now checks for unlock state as it loads.
Version 0.7.0, 2018-06-01
- BUGFIX Fixed GetCustomersForAllBusinessesGoal and GetCustomersForBusinessGoal having incorrect targetProgressions.
Version 0.6.41, 2018-06-29
- BUGFIX Fixed a bug where IUpgradeableCurrencyData are not showing in GetUpgradesForSpecificCurrencyGoalDataAsset.
- CHANGE Added a parameterized constructor for CurrencyAmount, which is needed for the DataImporter .
Version 0.6.40, 2018-06-27
- BUGFIX Fix all of the Unit tests.
- CHANGE Add TODOs to classes that require revisit.
Version 0.6.39, 2018-06-01
- CHANGE Removed dependency to DateTimeExtensions from AutoCollectState and ProduceState.
- CHANGE Fixed compiler warnings in BuyBusinessAction, CollectFromBusinessAction and OpenGachaAction.
Version 0.6.38, 2018-05-29
- BUGFIX Second fix for GetUpgradeForSpecificCurrencyGoal to trigger goal completion when the goal is already met.
Version 0.6.37, 2018-05-24
- BUGFIX Fixed GetUpgradeForSpecificCurrencyGoal not setting current progression on activate.
Version 0.6.36, 2018-05-23
- BUGFIX Fixed issue where unrelated modifiers could be applied to the wrong modifiable.
- CHANGE ^RELATED: The logic for this fix is hacked into Economy.GetModifierDatasAffectingId(string modifiableId, string category). Modifiers will likely be refactored in the future and this issue should definitely be addressed.
Version 0.6.35, 2018-05-23
- BUGFIX Fixed getter that returned itself in GetCustomersForBusinessesGoalData.
Version 0.6.34, 2018-05-22
- BUGFIX Fixed issue Businesses would enter state prematurely and crash when Modifiers were queried.
Version 0.6.33, 2018-05-22
- BUGFIX Fixed issue where goals wouldn't fetch saved data when initialized.
- BUGFIX Fixed issue where modifiers could be applied regardless of modifierCategory.
Version 0.6.31, 2018-05-22
- BUGFIX Fixed issue where season modifier datas would be copied with null data and skip application to modifiables.
- CHANGE ^RELATED: SeasonData object not longer caches modifier datas from its business season datas. Not ideal and should be updated in the future, but was integral to the above bugfix.
- CHANGE GoalSequenceSavedData cannot go past its target progression.
Version 0.6.30, 2018-05-20
- CHANGE Made DifficultyManager increment Season starting currency.
Version 0.6.29, 2018-05-20
- BUGFIX Fixed DifficultyManager issue in UpdateGlobalModifier.
- BUGFIX Additives now cause business speed to go lower not higher.
- BUGFIX Fixed divide by 0 in multiplicative business speeds.
Version 0.6.28, 2018-05-18
- BUGFIX Fixed non virtual methods in Content.
Version 0.6.27, 2018-05-16
- BUGFIX Typo fixed missed in requirement naming.
Version 0.6.26, 2018-05-16
- BUGFIX Fixed the ordering of the Modifiers so that additive always comes first.
- BUGFIX Fixed issue where locked currencies could apply modifiers.
Version 0.6.25, 2018-05-16
- BUGFIX Fixed the normalizedProgression for AutomateSpecificBusinessGoal and BuySpecificBusinessGoal.
Version 0.6.24, 2018-05-16
- BUGFIX Rename business difficulty variables to match BE implementation.
Version 0.6.23, 2018-05-15
- BUGFIX Fixed a bad conditional in automation character requirements.
Version 0.6.22, 2018-05-14
- CHANGE Made ModifierDatas that affect Business speed apply their changes with division rather than multiplication if they are multiplicative.
Version 0.6.21, 2018-05-14
- BUGFIX Fixed issue where GuidReferenceHelper would infinitely refresh guids if they were imported on the same frame as a refresh. Fix was simply a removal of auto refreshing during new asset import .
Version 0.6.20, 2018-05-12
- CHANGE Made public methods in Content and RewardManager virtual.
Version 0.6.19, 2018-05-12
- CHANGE Removed all timer gacha references.
Version 0.6.18, 2018-05-12
- ADDED Introduce difficulty manager to handle playthroughs scaling difficulty.
- CHANGE Pre-Process business cost data before feeding it to the views.
Version 0.6.17, 2018-05-11
- BUGFIX Fixed CollectFromBusiness actions not logging correct time.
Version 0.6.16, 2018-05-10
- BUGFIX Fixed Ascension and looping episodes unit tests.
Version 0.6.15, 2018-05-09
- CHANGE Optional UpgradeableCurrencyRequirements for buying a business added to BusinessBalanceData.
Version 0.6.14, 2018-05-09
- CHANGE Business saved data now saves in Unix milliseconds, not 'ticks' which could vary between frontend/backend.
- ADDED "TimeUtils.unixZero".
Version 0.6.13, 2018-05-08
- FIX Resolved potential collision between GuidReferenceHelper and CoreGuidReferenceHelper due to outdated reflection.
- CHANGE Added GuidReferenceUtility support for GetName overload that only takes an Id with no Type.
Version 0.6.12, 2018-05-08
- CHANGE Added logic to check character requirements when automating a Business.
- CHANGE Created UpgradeableCurrencyRequirement to track Upgradeablecurrency level requirements.
Version 0.6.11, 2018-05-07
- CHANGE Added isUnlocked to UpgradeableCurrencySavedData which gets flagged upon the first time setting the saved data amount.
Version 0.6.10, 2018-05-04
- FIX Gacha save key content specific.
Version 0.6.9, 2018-05-04
- FIX Gacha save key spelled correctly.
Version 0.6.8, 2018-05-03
- FIX Fixed DynamicCollectCurrencyTests, which broke due to the GoalCreateAction never being called.
- FIX Fixed BusinessTests, which broke due to our DummyTimerService not having any functionality.
Version 0.6.7, 2018-05-03
- CHANGE Looping episodes.
Version 0.6.6, 2018-05-02
- FIX _timerGachaLastOpenedTime now has saved data.
- CHANGE All acitons now utilize milliseconds timestamp instead of seconds (previously had too little granularity for validation).
Version 0.6.5, 2018-05-01
- FIX _isContentSpecific was missing a [SerializeField] on GachaRewardData.cs.
- FIX Fixed all Currency unit tests, which also allowed the logic for Currencies being able to add/remove negative values.
Version 0.6.4, 2018-05-01
- CHANGE Added isUnlocked to BusinessSavedData and implemented it in BuyBusinessAction.
Version 0.6.3, 2018-05-01
- CHANGE Removed dependencies that were accidentally reintroduced.
Version 0.6.2, 2018-05-01
- CHANGE Updated tests to use new Contentdata constructor.
Version 0.6.1, 2018-05-01
- CHANGE Added hasStarted flag to ContentSavedData to help award starting currencies when a Content is started.
- CHANGE Added CurrencyAmount class to wrap simple currencyId / amount pairs.
- CHANGE Added startingCurrencyAmounts to ContentData.
- CHANGE Changed BeginContentAction to make use of the new startingCurrencyAmounts.
Version 0.6.0, 2018-04-23
- CHANGE Changed BusinessSavedData ascension behaviour to delete keys instead of resetting to default values.
- CHANGE Added next level GetPayout and GetSpeed functionality to Economy.
- CHANGE Added functionality to Business State classes to react to upgrading the business.
Version 0.5.6, 2018-04-11
- CHANGE Removed dependency to "EastSideGames.Core".
Version 0.5.5, 2018-04-11
- CHANGE Removed dependency to "EastSideGames.Services.Time".
- FIX Renamed incorrect Create Asset menu entry for CurrencyReward.
Version 0.5.4, 2018-04-10
- CHANGE Added GetModifiersAffectingModifiable and other getters to Economy.
Version 0.5.3, 2018-04-10
- CHANGE Updated all IKeyValueGameSave objects to include a GetIterator and GetSortedIterator for key/value save pairs.
Version 0.5.2, 2018-03-29
- CHANGE Removing actions/static data that require backend. Added Gacha.
Version 0.5.1, 2018-03-27
- CHANGE Removed dependency to "EastSideGames.Services.GameSave".
Version 0.5.0, 2018-03-23
- Initial version.