Skip to content

r6

Choose a tag to compare

@collinhover collinhover released this 10 Nov 15:00
· 63 commits to master since this release
General
  • Added lots more examples, warnings, and tips to docs.
  • More successful bug hunting!
  • UI now intercepts and blocks tap input (no more ui + abilities firing on same tap!)
  • Player control has undergone a significant change to decouple the player entity and input (see ig.PlayerManager)
  • Hellovetica pixel font replaced with modified Impact++ version called Helloplusplus (includes extra characters such as numbers)
CONFIG
  • added COLLISION.ALLOW_FIXED to allow control of fixed to fixed collisions
  • added CREATURE.MOVE_TO_PREY_SETTINGS
  • added CREATURE.MOVE_TO_PREDATOR_SETTINGS
  • added CREATURE.MOVE_TO_TETHER_SETTINGS
  • added CREATURE.MOVE_TO_WANDER_SETTINGS
  • deprecated STATIC and moved to a property of ig.EntityExtended.PERFORMANCE
  • deprecated MOVABLE and moved to a property of ig.EntityExtended.PERFORMANCE
  • deprecated DYNAMIC and moved to a property of ig.EntityExtended.PERFORMANCE
  • removed NEEDS_BOUNDS
  • Z_INDEX_OVERLAY renamed Z_INDEX_BELOW_ALL
  • added SCALE_MIN, SCALE_MAX to general, entity, ui, and font config
ig.GameExtended
  • core properties of the game (such as layers) are now guaranteed to be ready regardless of init order
  • shapesPasses is now a plain object that takes property:value pairs instead of an array
  • added playerManager and playerManagerClass properties (see ig.PlayerManager)
  • getPlayer will no longer search for player by class unless canSearchForPlayerByClass is enabled (defaults to true)
  • getPlayer will no longer search for player by type unless canSearchForPlayerByType is enabled (defaults to true)
  • changed all instances of respondInput to handleInput
  • methods that get entities now account for whether an entity is hidden
  • resize is now called after each level is built to account for config screen size changes
ig.CollisionMap
  • entities now each have their own collision map result property, collisionMapResult, to reduce garbage
  • collision map result's .collision.slope is now guaranteed to be a boolean, instead of changing between boolean and object
  • collision map result's .collision.slope object is now stored in the result's .slope property
  • major bug fixes for collision map checks
  • entities should no longer get stuck at corners of a slope and a flat tile
  • entities should no longer fall through one way tiles when coming down a slope
  • slope assistance velocity is now added to the entity's position instead of velocity
ig.Camera
  • added pause and unpause methods
  • fixed invalid positions when keeping camera in level
ig.TimerExtended
  • removed, timer pausing now handled by entity during pause method (override when you have your own timers to pause)
ig.EntityExtended
  • entities always update the current animation, even when off screen, so animation overrides always complete as expected
  • changed first parameter of animRelease to name to allow for releasing only when override matches name
  • shifted original first parameter of animRelease, silent, to second parameter
  • added frame and stop options to animOverride method
  • added collisionMapResult property to hold collision map collision results
  • removed needsBounds,bounds, getBounds, boundsDraw, and getBoundsDraw as they are ignored in all calculations and are causing confusion
  • distance methods now account for fixed entities
  • entities now set movingY correctly in top-down mode (thanks @Pattentrick for finding)
  • one way collision check now properly accounts for the velocity of both entities, instead of ignoring one way's velocity
  • added hidden property and hide / unhide methods
  • setting grounded is now handled differently internally for top down mode
  • last is now always contains last position instead of current
  • colliding with an entity that functions as a moving platform now works as expected in all cases
  • removed onPaused and onUnpaused signals for better stability (was causing issues with entities that persisted between levels)
  • removed updateCleanup method
  • removed checkStop method
  • intersectWith method now sets intersecting property, make sure to call parent when you override this method!
  • all properties modified by collision checks should now be reset via the cleanupCollision method (called automatically before new collisions)
  • added flipWith property to moveTo settings object, which controls whether following entity flips with the followed entity
  • In addition to per entity scaling, entities now have scaleMin and scaleMax properties to clamp scaling
  • Added scaleToSystemScale for entities that should scale themselves based on system scale on a ratio other than 1:1
ig.Character
  • fixed incorrect examples in docs
  • added clearPath method for better control of path clearing
  • fixed incorrect invulnerability modifying alpha when character has alpha other than 1
  • characters should climb properly again
ig.Player
  • collides defaults to lite instead of active
  • removed holdActivate input response from default input handling
  • ig.PlayerManager now handles basic input to action for the player character
  • player now only handles input to the basic interaction ability
ig.PlayerManager
  • new abstracted way to control characters, allowing you to easily swap the character the player controls with input!
  • playerManager's handleInput covers move, jump, and climb by default, and attempts to call the managed entity's handleInput method
  • added settings to disable default gesture input handling in case you need hold or swipe
ig.Creature
  • collides defaults to lite instead of passive
  • added detectHiddenPrey and detectHiddenPredator to control finding hidden entities
ig.Spawner
  • added unspawnSilently to allow unspawned entities to play death animation
  • added onSpawnedAlland onUnspawnedAll signals
  • added spawnAtFirstTarget for cases when you have several targets to move to, but you always want to start at first
ig.Tutorial
  • removed all loop methods in place of using ig.Spawner respawn system
  • to properly loop, set duration === -1 and optionally respawnDelay
  • added propertiesTarget to check for truthy values of properties in spawn targets to complete tutorial
ig.EntityTrigger
  • added getCanTrigger method to find out if the trigger can be triggered
  • added autoComplete to allow triggers to manually call complete (fixes confusing behavior where complete is called twice)
  • added teardownWhenComplete to defer teardown until deactivate or cleanup
ig.Switch
  • canOpen renamed getCanOpen
  • canClose renamed getCanClose
  • added 'blocked' property for cases when a switch is not broken but blocked by external factors
ig.Door
  • animation name for when locked renamed from lock to locked
ig.Hierarchy
  • removed execute
  • added activate convenience method
  • added setEntity convenience method
  • added setEntityOptions convenience method
  • added setEntityTarget convenience method
  • added setEntityTargetFirst convenience method
  • added getUsing convenience method
ig.Ability
  • typeTargetable and groupTargetable now match only when target has ALL types/groups matching instead of any one
  • target is now checked after setup cast instead of before
  • removed check for invalid target as is already doing that in target check
  • abilities can now target any type or group if typeTargetable === 0 and groupTargetable === 0
  • added once property (default false) to control whether ability keeps activated === true after activate
  • added activateStrict property (default true) to double check distance after all activate casting
  • execute deprecated
  • activate now does what execute used to do (to be more in line with rest of library)
  • i.e. use abilities by calling activate instead of execute
  • activateComplete now does what activate used to do
  • deactivate now does what deactivateSetup used to do (to be more in line with rest of library)
  • i.e. deactivate abilities by calling deactivate instead of deactivateSetup
  • deactivateComplete now does what deactivate used to do
  • abilities now check if in use (i.e. casting or channelling) to avoid chain executions that would block proper use
  • entityTarget now automatically retained when ability is channelled
  • retainTargetChannel removed
  • isEntityTargetable now accounts for and returns false when ability entity and entityTarget are in same group
  • groupTargetable overrides isEntityTargetable to allow for same group targets
  • cast now looks for animation settings in castSettings.animSettings instead of castSettings itself
ig.AbilityMelee
  • animation is now casted during setup instead of when passed
  • settings changed from activateCastSettings to activateSetupCastSettings
ig.EntityAbilityExecute
  • renamed to ig.EntityAbilityActivate
ig.UIElement
  • moved onActivated and onDeactivated to ig.UIInteractive
ig.UIInteractive
  • added enabled state
  • added activateComplete and deactivateComplete, which are called during activate/deactivate if element is enabled
  • added onActivated and onDeactivated signals, called during their respective complete methods
ig.UIButton
  • added simple buttons with automatic animation handling!
ig.UIToggle
  • removed properties animNameActivate and animNameDeactivate in preference of using overriding animation
  • refactored to use activateComplete and deactivateComplete due to ig.UIInteractive changes
ig.UITogglePause
  • now uses media/buttons_states.png (don't forget to copy over the new media)
ig.UIText
  • added property autoRefreshText to update text elements when their text properties are changed
ig.UIOverlay
  • automatically updates message (UIText element) when text property changed
ig.utilstile
  • now properly discards inner edges, instead of outer, when options.discardEdgesInner === true
  • now properly ignores climbables when options.ignoreClimbables === true
  • now properly ignores one ways when options.ignoreOneWays === true
ig.utilsintersection
  • sortByDistance much more accurate, slightly less performant
ig.pathfinding
  • pathfinding greatly improved for slopes (thanks @afflicto for finding), around walls, and entities
  • fixed pathfinding bug that was finding paths through unwalkable areas
  • fixed pathfinding bug that was randomly delaying characters from finding paths (thanks @Pattentrick for finding)
  • pathfinding should be much smoother as characters no longer make small unnecessary adjustments (thanks @Pattentrick for finding)
  • getNodeAt renamed getGridNode
  • getWorldNodeAt renamed getNode (to be more inline with ImpactJS)
  • isPointInGrid renamed isGridPointInGrid
  • isWorldPointInGrid renamed isPointInGrid
  • isWalkableAt renamed isGridWalkable
  • isWorldWalkableAt renamed isWalkable
  • getWalkableNodeAt renamed getGridWalkableNode
  • getWorldWalkableNodeAt renamed getWalkableNode
  • getWorldWalkableNodeChain renamed getWalkableNodeChain
  • ig.pathfinding.Node renamed ig.PathNode
  • pathfinding node's parent renamed prevNode
ig.TWEEN
  • removed pauseSignaller, paused instead through entity pause method