BF6.ps1

<#PSScriptInfo
 
.VERSION 1.0.0
 
.GUID 1f6d4876-9d0b-44a4-a8a7-d4e7c316e0d7
 
.AUTHOR Glo0mY
 
.COMPANYNAME
 
.COPYRIGHT Copyright (c) 2023 Glo0mY
 
.TAGS Countdown, BF6, Timer, Ticker
 
.LICENSEURI
 
.PROJECTURI
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES Initial release of the BF6 countdown ticker script.
 
.PRIVATEDATA
 
.DESCRIPTION
 Starts a live countdown ticker in the console until the release of BF6.
#>


Param()


function Get-BF6Countdown {
    [CmdletBinding()]
    param(
        [DateTime]$Now = [DateTime]::Now,
        [DateTime]$Release = [DateTime]::SpecifyKind([datetime]'2025-10-10 17:00', [DateTimeKind]::Local)
    )

    $delta = $Release - $Now
    if ($delta.TotalSeconds -le 0) {
        return [pscustomobject]@{
            Weeks = 0; Days = 0; Hours = 0; Minutes = 0; Seconds = 0
            TotalSeconds = 0; Released = $true; Target = $Release
        }
    }

    $weeks = [math]::Floor($delta.TotalDays / 7)
    $remain = $delta - [TimeSpan]::FromDays($weeks * 7)
    [pscustomobject]@{
        Weeks = $weeks; Days = $remain.Days; Hours = $remain.Hours
        Minutes = $remain.Minutes; Seconds = $remain.Seconds
        TotalSeconds = [math]::Floor($delta.TotalSeconds)
        Released = $false; Target = $Release
    }
}

function Start-BF6Ticker {
    [CmdletBinding()]
    param(
        [DateTime]$Release = [DateTime]::SpecifyKind([datetime]'2025-10-10 17:00', [DateTimeKind]::Local),
        [int]$RefreshMs = 1000
    )
    do {
        $c = Get-BF6Countdown -Now ([DateTime]::Now) -Release $Release
        if ($c.Released) {
            Write-Host "🚀 BF6 is OUT. squad up. 🔥" -ForegroundColor Green -BackgroundColor Black
            break
        }

        $msg = "🎮 BF6 HYPE COUNTDOWN 🎮`n" +
        "⏳ {0}w 📅 {1}d ⏰ {2}h 🕒 {3}m ⌛ {4}s" -f `
            $c.Weeks, $c.Days, $c.Hours, $c.Minutes, $c.Seconds

        Clear-Host
        Write-Host $msg -ForegroundColor Cyan -BackgroundColor Black
        Write-Host "Target drop: $($c.Target)" -ForegroundColor Magenta
        Start-Sleep -Milliseconds $RefreshMs
    } while ($true)
}