// Project: Shells // Created: 2021-12-15 // By: Virtual Nomad // show all errors SetErrorMode(2) W = GetMaxDeviceWidth()/2 : H = GetMaxDeviceHeight()/2 // set window properties SetWindowTitle( "Shells" ) SetWindowSize( W,H, 0 ) SetWindowAllowResize(0) SetWindowPosition(W/2,H/2) // set display properties SetVirtualResolution( W,H) SetOrientationAllowed( 1, 1, 1, 1 ) SetSyncRate( 0, 0 ) SetScissor( 0,0,0,0 ) UseNewDefaultFonts( 1 ) GLOBAL ShellSPR ShellSPR = CreateSprite(MakeShell()) GLOBAL ShellOverIMG : ShellOverIMG = CreateRenderImage(W,H,0,0) GLOBAL ShellOverSPR : ShellOverSPR = CreateSprite(ShellOverIMG) Type Turret ID, LastShot# EndType GLOBAL Turrets as Turret [] do If GetPointerPressed() AddTurret() EndIf DoTurrets() If GetRawKeyState(27) then Exit Print(ScreenFPS()) Print( "TURs: " + STR(Turrets.Length) ) Print( "IMGs: " + STR(GetLoadedImages()) + " MEM: " + STR(GetImageMemoryUsage())) Sync() loop Function DoTurrets() If Turrets.Length > -1 HideAllTurrets() `ClearScreen() SetRenderToImage(ShellOverIMG,0) For x = 0 to Turrets.Length SetSpriteAngle(Turrets[x].ID, GetSpriteAngle(Turrets[x].ID)+1) If Turrets[x].LastShot# + 0.1 < Timer() TA# = GetSpriteAngle(Turrets[x].ID) + 90.0 //shoot it off to the side TX# = GetSpriteXByOffset(Turrets[x].ID) TY# = GetSpriteYByOffset(Turrets[x].ID) SetSpriteAngle(ShellSPR,Random(0,359)) D# = Random(40,60) SetSpritePositionByOffset(ShellSPR, TX# + SIN(TA#)*D#, TY#-COS(TA#)*D#) DrawSprite(ShellSPR) Turrets[x].LastShot# = Timer() EndIf Next x Render() SetRenderToScreen() ShowAllTurrets() EndIf EndFunction Function HideAllTurrets() for x = 0 to Turrets.length SetSpriteVisible(Turrets[x].ID,0) next x EndFunction Function ShowAllTurrets() for x = 0 to Turrets.length SetSpriteVisible(Turrets[x].ID,1) next x EndFunction Function AddTurret() ThisTurret as Turret ThisTurret.ID = CreateSprite(0) : SetSpriteSize(ThisTurret.ID, 8,32) SetSpriteOffset(ThisTurret.ID, 4,32) SetSpritePositionByOffset(ThisTurret.ID, GetPointerX(), GetPointerY()) ThisTurret.LastShot# = Timer() Turrets.Insert(ThisTurret) EndFunction Function MakeShell() ClearScreen() DrawLine(0,0,0,5,128,128,64) DrawLine(1,0,1,5,255,255,128) DrawLine(2,0,2,5,255,255,128) Render() Img = GetImage(0,0,2,5) EndFunction Img