Saturday, October 17, 2020

Summer is gone, pandemic still there

Weird summer, not crowded at all, but at least living on an island has some advantages...

This is a new release, main topics are:

  • New level includes the new concept Sectors
  • Better continuous collisions with sprites and tiles

Find binaries at download

HBF)
Changed (class as IInterface) with class.GetInterfaceEx(IInterface, intf)
New extra THook
New triggers ClosestHero(), ClearDialogs(), LockPlayers(), UnlockPlayers(), ActivateScript(), EnableTeleport()
New TActor properties, Counter, Phase, AutoFacing, QueueColor, NoCollisionTime, AutoContinuous
New mewthods TActor SnapTo(), TActor.InSight() 
Now NPC can be killed, can use vars in their text and can now ask questions
Added some silly NPC 
New method THero.Heal()
New property THero.MaxHealth
Class TElement removed
New abstract class TNonElement
Now MineBomb is self activated when hero is at certain distance if nothing is blocking
Now dialogs can include portraits
New method IGameServices.GetViewport()
Brachion improved so it does not get stuck in some situations (hopefully)
Now RotatingSpikes can be set horizontally from left or right
Now any actor can be solid, thus not passable
Now platforms can have a tape speed behavior
New level Sectoring
Now when keep pressed attack hero goes faster
Now platforms can be linked to other platforms as mutual exclusive, so visible is toggled among them
New TItems properties Consumption and MaxQuantity
Sounds from hero weapons also have HERO_SOUND tag so they can be hear from other actors
New property TArrow.NailBehaviuour
New game helper IMapSectors
Now when hero got the torch rather than see the whole screen, the light is twice the size
Continuous Tile Collision improved
New unit Enemy.pas, all base enemies are now located in this unit
New TSoundDispatcher .IsPlaying() and .PlayUnique()
Homing missiles target improved
Now TScepter uses segments from map 

BB)
New methods, TSurface SetText(), Box(), AreOpposite()
New properties TSprite IsTimeOut, Area
New method TAnimationSprite.AnimationTime()
New class TInterfaceCache
New method TMap.AsMinimap()
Now colors in TRGB record are no longer functions but consts, thanks to a record helper (nice trick)
New method TTimeHelper.AsTime()
New TCounters class to help the use of them in the game
New helper class TEquality<T>
New class TStackList, a list that resides in the stack rather than in the heap
Now TScreen.NewSurface returns TSurface rather than ISurface 
New methods TMath MultBy7(), Probability()
Method TSprite.CenterFrom() now takes into account CoordinateOrigin property
New rtti TValue record helper TValueHelper
TBufferHasher.Calculate() improved hash in order to avoid collisions
SpriteEngine.Find() changed to Engine.Find<T>()
New method TSpriteEngine.SpriteAt<T>(aX, aY: TFloat): T
Uses of ItemsLayer.GetItemAt() changed to TSpriteEngine.SpriteAt()
Uses of ItemsLayer.GetItemsAt<> changed to TSpriteEngine.SpritesAt<>
New property TScript.Active
New method TSound.Replay()
Now TCollision.IntersectionPoint() uses a faster approach
New method TFloatHelper.IsGreaterThanOne()
Starting to use Mormot for calculating hash values (does 4 bytes at a time)
Fixed a bug in TObject.DeleteObserver() where the double link was not properly removed (source of long time random AV errors)
Now TMap can have sectors 
New methods TMap AddSector() and RemoveSector()
New method TCells.Sort()
Now grouped scripts can be set to be executed in certain order

Map Editor)
Now it shows the configured sectors