Saturday, May 2, 2020

Confinement release, weird year this 2020

I hope you are all safe and well. Due to bloddy coronavirus thingy I had plenty of time to write code so here we go!

Found binaries at OneDrive, main changes:
  • New level Fear!
  • New boss Brachion
  • New weapon Amus
  • New element Cable

Here is the full list changes:

HBF)
  • New element TCable
  • Weird corrects its angle when taking a new path
  • IInteractive.Interact() implementation was crap, improved
  • New element OldLamp
  • THero.CanJump() improved
  • New THero.TileOnBottom()
  • Now Ropes use a better visibility test 
  • New TTriggerDispatcher GetResult(), ScriptCount() and SumVar(), Print(), ClearTileAt(), ClassCount(), CopyVar(), RemoveEntities(), SpawnClass(), AlphaLayer(), SetShake()
  • TGameSprite.SetGameServices() is no longer virtual
  • New enemy Brachion 
  • Now platform's angle is taking into account (not working 100%)
  • New Kurkani bitmap
  • Nnew Gatashi bitmap
  • TGameSprite.SetGameServices() is no longer virtual
  • New enemy Brachion 
  • Now platform's angle is taking into account (not working 100%)
  • TGamesprite renamed to TActor 
  • Actor.Master is now Actor.Host
  • New property TActor.AutoPriority
  • Game was not cleaning the sound cache between levels
  • New element PhoneBox 
  • Now Turrets show a think red laser when chasing players
  • New property TCotton.MinDistance
  • New property TLight.Animation
  • New property TParticlesWrapper.MinDistance
  • New property TBasicTurret.LaserColor 
  • New property TBrachion.LaserColor 
  • New property TSkeleton.MinDistance
  • New property TNPC.MinDistance
  • New property TPrincess.MinDistance
  • New IBaseItem.IsCollectible()
  • New THero.GetCollectible()
  • Now shop items are sorted by name
  • Now after entities are created, the cell attribute is cleared
  • Now shadow Z is calculated dynamically
  • TActor.CorrectGravityOrientation() improved
  • Now achievements are stored in a file and no longer internally
  • New TCable.Perturb()
  • Runes are no longer keep in the profile, TRunesHelper now keeps all runes information for the current game
  • New TTriggerDispatcher.Sleep() fixed
  • New class TEntityTracker that helps any entity to find the shortest path to a target
  • ExplosiveBarrel behaviour improved
  • New Actor property Range 
  • Actor.DestroyArea() improved
  • Hero can now go down from TwoWays (like clouds) platforms pressing down + jump
  • New attribute GRAVITY_UP so a map can have a different gravity deom design
  • New method TActor.GetPlatformFromCenter()
  • New TActor.ContinuousSpriteCollision() that helps fast moving sprites collisions
  • Now arrows adjust correctly their angles when gravity is up
  • New TActor.AdjustPositionToTile()
  • Now darkness can rotate lightmaps coming from entities
  • TMachineGun many fixes
  • Changed some Sin() and Cos() by SinCos()
  • New element IceSpike
  • New pickup TCollectible
  • Now some enemies uses new shadow queues 
  • New properties TEnemy.PainChance and PainDelay
  • All TStrings changed to TList<string> or TStrings<T>
  • New TTriEye properties ContinueAfter, FireAfter, ShootingProbability
  • TActor.ContinuousSpriteCollision() improved
  • New element SuperBlob 
  • New property TActor.InitialEnergy
  • New explosion with particles, I believe they are cooler
  • When bomber is going to be alerted now also checks that there is nothing solid in between
  • Now Arrows inherite from TBullet and fixed a bug where an arrow did not know that parent (ArrowSpawner) was Dead
  • New weapon Amus
  • Fixed a bug where an actor could die many times in the same frame 
  • New TSoundDispatcher.DelayedSound()
  • Now dynamic priority takes into account liquids 
  • Now when jumping the speed from platforms is take into account giving more inertia
  • Now sound system tries also to use the youngest sound when channel is full 
  • New achievements...
  • New enemy Rotating Spike 
  • New TActor.GetEdgeFromVelocity()
  • New property TActor.ExplosionTime
  • Seems BASS64.dll is modifying MMX overflow flag while playing, so a workaround was created
  • New effect to shake tiles
  • New ITriggerDispatcher.
  • Bat fixed
  • Scepter won't stop on solid items
  • Added lightness to levels
  • Now some shields can reflect a laser
  • New bridge elements 
  • Hidden doors are no longer shown in minimap
  • Up spikes are now correctly aligned
  • Poison was not recovering after 10 seconds 
  • Now fish when is out of water feels the gravity 
  • New Players.GetHeroes(TRect) that improves the performance
  • New shop/inventory item LastExecution that helps with cadency
  • New extra THomingMissile
  • Hero extras handling improved
  • Now hero uses a buffer jumping before falling
  • New generic modifying cube system
BB)
  • Now maps can have configured slopes
  • New ISprite.GetLayer(), DistanceXBetween(), DistanceYBetween()
  • TMem.Scan32() in the 64 bits version was flawed thus last 64 bits version of binary was broken
  • New TSurface.Tween()
  • Now triggers can have parameters
  • New TParticleEmitter properties AlphaFrom/AlphaTo 
  • Many functions in TSprite are no longer virtual 
  • TSprite.OnChange does not update collisions if collisions has not been created yet
  • New TSurface.Replace()
  • THashEx.Generic() optimized when size is multiple of 4 (four bytes at a time)
  • New TScreen.DrawSurface(surface, rect, z)
  • New TMap.ScriptCount(group)
  • New TScript property LinkedGroup
  • New TMemVar.Sum()
  • Many loop vars change from integer to NativeInt when used with pointers as offset so code generated is better
  • New TMem.AreEqual<T: record>(A, B: pointer; aSize: cardinal): boolean
  • New TSoundFactory.ToMono()
  • Now TSurface.FlipX is much faster
  • TD3DSurface.FillSurface() performance when no colorkey improved
  • TKinematic improved
  • New TSwap<T>.SwapContent(A, B: pointer)
  • New TMath.CenterOfPolygon()
  • New TMath.ThrowAngle()
  • New class TCameraPrimitives, for primitives with camera 
  • New TParticleEmitter.IsStarted()
  • A few optimizations in loops with field variables from object in many classes
  • TLayer.GetCellNoCheck() used in some functions rather than GetCell()
  • New TInterfaceHelper.Copy()
  • Now individual layer tiles can be glowed
  • New TLayer.GetDistance(), GetTileRect()
  • New property TLightSprite.Blur
  • New TRGB.Dolly(), Martinique()
  • New TParticlesTextureCache class
  • New ISprite.SetEngine()
  • New TColony<T>.Exchange()
  • New TCollision.CircleInRect(), TCollision.CircleInCircle(), TCollision.LineInRect(), TCollision.PointInTriangle(), TCollision.RectInCircle(), TCollision.TriangleInRect()
  • Now once per second system checks for "aged" buffers in pool in order to discard them (10 seconds at the moment)
  • TSpriteEngine.GetSurface() performance improved a little bit
  • Now a TKinematicArm can have many TKinematicSegment
  • New TClamp<T> helper functions
  • New TObjectHelper.CopyObject<T>
  • New TMath.Clamp(), DistanceManhatan(), NormalizeAngle180(), Atan2(), Log10(), Log2(), Sgn(), Ln2()
  • TPathResolver finally works 100%
  • New class TTickHelper
  • New TDirectionHelper.Rotate180(), Rotate90(), Rotate270()
  • New TMath.InverseNormalize()
  • Particles now handle much better when alpha changes with textures (dictionary of pool)
  • New TMath.NextPowerOfTwo()
  • New BB.Helper it contains all BB classes and records helpers
  • New TDummySprite.GetLayerPosition()
  • New TSurface.Copy(), MirrorX(), MirrorY()
  • Now Cadency in .ini, .extra are set as milliseconds
  • New TSprite.GetDelta()
  • Now the precise collision system supports FlipX and FlipX (besides zoom and angle)
  • New IObject.GetClass()
  • New TFloatHelper.Is1()
  • TCollision.TestBB() improved
  • TSurface.Rotate() improved
  • Now in looped maps the offset can be set (does not have to be zero)
  • New TParticleEmitter.Random
  • New TParticleEmitter.RandomRate 
  • New TSprite.GetCenterF()
  • New class TCPU
  • New TRGB.Gradient()
  • Now TSprite FlipX()/FlipY() also flips BoundingBox
  • TSprite.GetBBF() improved
  • Particles cache system does not longer need a group
  • New property TParticleEmitter.RandomAngle
  • New TMath.Normalize()
  • Many exceptions changed to asserts
  • sprites.CenterX/Y were not taking into account CoordinateOrigin...
  • Better management of particles 
  • New unit BB.E3D.Types
  • New Particle Emitter pool
  • New motion tiles has color property in .ini file
  • New TRGB.HasColors()
  • Updated to last version of bass.dll
  • New TCPU.LDMXCSR() and TCPU.STMXCSR()
  • New FloatHelper.InBetween()
  • Added moving slopes tiles in Maps
  • Fixed slope sizes when no colorkey
  • TStrings<T>.SetItem() was not working properly
  • New TGraphicDriver.OnClear event
  • TSpatialPartitioning.GetArea<T> improved when area occupies only one cell
  • TSprite properteis Painted and Locked removed
  • TSpriteEngine.Find<T>() casting improved
  • TSpatialPartitioning.IterateSprites<T> casting improved
  • Scripts rollback handling improved