﻿═══════════════════════════════════════════════════════════════════════════
  SAGA TOURNAMENT MANAGER - Version 1.6.6
  Official SAGA Scoring System Implementation
═══════════════════════════════════════════════════════════════════════════

INSTALLATION:
-------------
1. Extract this entire folder to any location (e.g., C:\SAGA-Tournament)
2. Double-click "SAGATournamentManager.exe" to run
3. That's it! No installation required!

SYSTEM REQUIREMENTS:
-------------------
• Windows 10 or Windows 11 (64-bit)
• 200 MB free disk space
• .NET 9.0 Runtime (INCLUDED - no separate installation needed!)

GETTING STARTED:
---------------
1. ADD CLUBS (optional):
   • Go to "Clubs" page
   • Click "+ Add Club" or type a name and press Enter
   • Clubs can be renamed or deleted at any time

2. ADD PLAYERS:
   • Go to "Players" page
   • Click "+ Add Player" or "Import from CSV"
    • Only name is required; ELO rating, contact details, faction and club are optional
   • Faction is picked from the official SAGA faction list
     (edit Data/factions.txt to customise the list)
   • Use "Import ELO" to update player ELO rankings in bulk from a
     Name,CurrentElo CSV (unknown names are added automatically)

3. CREATE TOURNAMENT:
   • Go to "Tournaments" page
   • Click "Create New Tournament"
   • Follow the 3-step wizard
   • Choose how Round 1 is paired (Random or ELO Rank, optional club avoidance),
     how later rounds are paired (Wins, Victory Points, or Massacre Points),
     and which score decides the tournament winner

4. RUN TOURNAMENT:
   • Open your tournament
   • Click "Start Tournament"
   • Generate pairings for each round
   • Enter match results with Massacre Points (MP)
   • System automatically calculates Victory Points (VP)
   • For scenarios scored by Conquest Points, tick "Scenario uses
     Conquest Points" in the result dialog: enter CP alongside MP and
     VP is calculated from the CP difference instead (same table)
   • View live standings
   • Click standings column headers in Active Tournament to sort instantly
  • A bye is reflected in standings after the other matches in its round have
    results, so it cannot give a player an early advantage while a round is
    still being played

SAGA SCORING SYSTEM:
-------------------
This app uses the official SAGA tournament scoring rules:

• MASSACRE POINTS (MP): Your actual game score
• CONQUEST POINTS (CP): Some scenarios score by Conquest Points instead;
  MP is still recorded, but VP comes from the CP difference
• VICTORY POINTS (VP): Tournament points awarded based on MP (or CP) difference
• DRAW RESULTS: VP is calculated from the entered MP (or CP) difference,
  including declared draws with unequal scores

VP AWARDS:
  MP Difference     Winner VP    Loser VP
  ─────────────     ─────────    ────────
  0 (true draw)         10          10
  0 (winner decl.)    10.5          10
  1-3                   11           9
  4-6                   12           8
  7-10                  13           7
  11-15                 14           6
  16-20                 15           5
  21-25                 16           4
  26-30                 17           3
  31-35                 18           2
  36+                   19           1

STANDINGS RANKING:
  The tournament winner is decided by the score chosen at creation:
  Wins (tournament points 3/1/0), Victory Points, or Massacre Points.
  Ties are broken by the remaining scores in the order VP, MP, Wins.

PAIRING MODES:
--------------
FIRST ROUND (chosen at creation):
• Random: the player list is shuffled, then top half plays bottom half.
  With an odd player count, a random player gets the bye.
• ELO Rank: players are listed by ELO ranking (unranked players count
  as 1500), then top half plays bottom half. The lowest-ranked player
  gets the bye.
• Club avoidance (optional, either mode): best effort to avoid pairing
  players from the same club in Round 1.

ROUNDS 2+ (Swiss-system, avoiding rematches):
• Wins (default): pair players by tournament points (3/1/0)
• Victory Points: pair players by total VP
• Massacre Points: pair players by total MP
• If a bye is needed, the top-ranked player entering the round is not
  eligible; among the others, preference goes to players with fewer
  previous byes, then to the lowest-ranked eligible player

DATA FILES:
----------
Your tournament data is stored in the "Data" folder next to the app:
  • Data/players.json       - Your player database
  • Data/clubs.json         - Club registry
  • Data/factions.txt       - SAGA faction list (editable)
  • Data/Tournaments/*.json - Tournament files
  • Exported standings are saved to your Downloads folder
  • Exported tournament files (*.sagatourney) are saved where you choose

BACKUP YOUR DATA:
----------------
To backup everything: Simply copy the entire "Data" folder!
To restore: Paste your backup "Data" folder back into the app directory
(The File menu also has "Backup Results..." and "Restore Backup..." which
zip and unzip the whole Data folder for you.)

To backup ONE tournament: use "Export File" on the Tournaments page, or
"Export / Backup" in the header of an open tournament.

SHARING A TOURNAMENT BETWEEN SYSTEMS:
------------------------------------
A single tournament can be moved to another copy of the app:

1. EXPORT:
   • Tournaments page → "📦 Export File" on the tournament's row, or
     open the tournament and click "📦 Export / Backup"
   • Choose where to save the .sagatourney file (Downloads by default)
   • Send that one file however you like - email, USB stick, cloud drive

2. IMPORT (on the receiving system):
   • Tournaments page → "📥 Import Tournament", or File →
     "Import Tournament..."
   • Pick the .sagatourney file
   • The tournament appears in the list, ready to open and continue

The export file holds the complete tournament: its settings, every
registered player, every round, pairing, result and audit entry. Players
and clubs it references that aren't on the receiving system are added to
that system's player and club lists automatically - players already there
are left exactly as they are.

If the receiving system already has a tournament with the same name and
date, you'll be asked whether to replace it or import it as a separate
copy (the copy is renamed, e.g. "Winter Open (Imported)").

CSV IMPORT FORMAT:
-----------------
For player imports, you can use any of these formats:

Minimal (Name only):
  John Smith
  Sarah Johnson

With Contact Details:
  Name,Contact
  John Smith,john@example.com
  Sarah Johnson,sarah@example.com

Full Format:
  Name,Contact,Faction,Club,EloRating
  John Smith,john@example.com,Vikings,Cape Town SAGA,1450
  Sarah Johnson,sarah@example.com,Anglo-Danes,Pretoria Warlords,1380

• Only NAME is required
• Contact details, faction, club and ELO rating are optional

ELO-ONLY IMPORT ("Import ELO" button):
  Name,CurrentElo
  John Smith,1450
  Sarah Johnson,1380

• Updates the ELO ranking of matching players (matched by name)
• Players not already in the database are created with the given ELO

FIRST RUN:
----------
On first run, Windows may show a security warning:
  1. Click "More info"
  2. Click "Run anyway"
  (This is normal for unsigned applications)

FEATURES:
---------
✓ Player management (add, edit, delete, import)
✓ Club management (add, rename, delete)
✓ ELO rating tracking per player
✓ Tournament creation wizard
✓ Swiss pairing generation
✓ Random or ELO-seeded first round with optional club avoidance
✓ Configurable win condition (Wins, Victory Points, or Massacre Points)
✓ Sortable standings headers in Active Tournament
✓ Official SAGA scoring (MP/VP system)
✓ 10.5 VP support for equal MP with declared winner
✓ Real-time standings
✓ CSV import/export (including bulk ELO import)
✓ Single-tournament export/import (.sagatourney) for sharing and backup
✓ Multiple tournament support
✓ Persistent data storage
✓ Select Players dialog for adding players to tournaments
✓ In-app user guide and license viewer (Help menu)

TROUBLESHOOTING:
---------------
Problem: App won't start
  → Make sure all files from this folder are kept together
  → Try running as Administrator

Problem: Data not saving
  → Check that the "Data" folder is writable
  → Make sure you have permission to write files

Problem: Players not importing
  → Check CSV format (see above)
  → Make sure file is saved as CSV, not Excel format

SUPPORT & UPDATES:
-----------------
Report Issues to visit the www.efundisha.co.za/SAGATournamentManager
For questions or suggestions: visit the www.efundisha.co.za/SAGATournamentManager

LICENSE:
--------
Copyright © 2026 Nick Smuts. All rights reserved.

This software is provided free of charge for personal and gaming club use.
You may not modify, redistribute, or use commercially without permission.

See LICENSE file for complete terms.

═══════════════════════════════════════════════════════════════════════════
VERSION HISTORY:

v1.6.6 (2026-09-29)
  • Bye results now wait until the rest of the round is played before
    affecting standings, pairings, persistence and CSV export
  • Standings now show the active ranking order and use the same bye timing
    as the other tournament calculations

v1.6.5 (2026-09-29)
  • The top-ranked player entering a Swiss round can no longer receive
    the bye
  • Bye assignment favors eligible players with fewer previous byes
  • Manual pairing edits enforce the same bye restrictions

v1.6.4 (2026-09-20)
  • Export a single tournament to a portable .sagatourney file, from the
    Tournaments page or from an open tournament
  • Import a tournament file from another system (File menu or
    Tournaments page), merging any unknown players and clubs
  • Choose to replace or keep a copy when an imported tournament clashes
    with an existing one
  • Doubles as a per-tournament backup

v1.6.3 (2026-08-31)
  • Draw result scoring now uses the shared dynamic VP calculation
  • Clearer score-difference feedback for declared draws

v1.6.2 (2026-07-24)
  • Active Tournament standings now support sortable column headers for
    quick in-event data review

v1.6.1 (2026-07-22)
  • New tournament setup options:
    - First-round pairing method (Random or ELO Rank)
    - Win condition for final standings (Wins, Victory Points, Massacre Points)
  • Active Tournament standings and CSV export now both follow the selected
    win condition ranking
  • Enter Result now supports Conquest Points scenarios:
    - per-match CP toggle
    - VP calculated from CP difference when CP mode is enabled

v1.5.3 (2026-07-20)
  • New "Import ELO" button on the Players page: bulk-update player ELO
    rankings from a Name,CurrentElo CSV
  • Unknown players in the ELO file are created automatically
  • Import summary reports updated, created, and skipped counts

v1.5.2 (2026-07-20)
  • User Guide in the Help menu now shows this full guide in-app
  • New License entry in the Help menu displays the license terms
  • Expanded "About SAGA" introduction to the game
  • Updated support links

v1.5.1 (2026-07-14)
  • Faction picker backed by editable official faction list
    (Data/factions.txt)
  • Data folder now always resolved next to the exe, fixing empty data
    when the app is launched via a shortcut
  • Unified rounded styling for buttons and tabs
  • Pairing normalization improvements
  • About dialog version now updates automatically

v1.4.1 (2026-06-09)
  • Club management page (add, rename, delete clubs)
  • ELO rating field added to player profiles
  • New "Ranking & Club Avoidance" pairing mode: ELO-seeded opening round(s)
    with club-mate avoidance, then standard Wins-based Swiss
  • Player contact details field replaces email field
  • Select Players dialog for tournament registration
  • Dashboard and Players page UI improvements

v1.3.1 (2026-05-01)
  • Maintenance release: performance optimizations and documentation
  • ELO export functionality added to CSV export
  • Improved tournament data handling

v1.2.0
  • Backup/Restore via ZIP
  • About dialog

v1.1.0 (2025-10-22)
  • Official SAGA scoring system with MP/VP
  • 10.5 VP support for equal MP with declared winner
  • Optional email and faction in CSV imports
  • Enhanced result entry dialog
  • Improved standings display

v1.0.0 (2025-10-20)
  • Initial release
  • Basic tournament management
  • Player database
  • CSV import/export

═══════════════════════════════════════════════════════════════════════════

Thank you for using SAGA Tournament Manager!

Built for the SAGA Wargaming community by Nick Smuts.

Last Updated: 2026-09-29
═══════════════════════════════════════════════════════════════════════════
