diff --git a/.agents/skills/cataloging-home-protector-assets/SKILL.md b/.agents/skills/cataloging-home-protector-assets/SKILL.md new file mode 100644 index 0000000..ea5c9d0 --- /dev/null +++ b/.agents/skills/cataloging-home-protector-assets/SKILL.md @@ -0,0 +1,48 @@ +--- +name: cataloging-home-protector-assets +description: Use when inventorying D:/GameAsset for Home Protector, selecting canonical Unity-ready sprite revisions, or updating the asset import manifest before any art is copied. +--- + +# Cataloging Home Protector Assets + +## Overview + +Make `Docs/Development/asset-import-manifest.json` the auditable boundary between generated art and Unity. Catalog first; never copy or slice assets while using this skill. + +## Workflow + +1. Read the root `AGENTS.md`, the existing manifest, and source revision notes. +2. Run `scripts/New-HomeProtectorAssetManifest.ps1` to inventory relative paths, byte sizes, dimensions, SHA-256 hashes, and importer contracts. Use `-Check` after generation. +3. Group by semantic content, animation, level, and batch. A different hash is not proof of different gameplay content. +4. Select one intentional revision and record why. Mark rejected candidates in the manifest instead of silently forgetting them. +5. Check destination collisions under `Assets/_Project/Art/Runtime/`. +6. Report counts for discovered sheets, imported sheets, excluded revisions, single sprites, and total bytes. + +## Canonical policy + +| Case | Decision | +|---|---| +| `*_Sheet_BNN.png` | Candidate sheet | +| `Frames`, `fullres`, `native`, `QualityRefresh*` | Exclude | +| Per-frame or comparison crops | Exclude | +| Player Walk B05/B06 | Historical; exclude | +| Player Walk B08 | Canonical | +| Bear B20 | Canonical normal Bear role | +| BearHeavy B31 | Canonical elite BearHeavy role | +| CommonSoldier and Monkey | Keep existing project art; no external replacement | +| PorchYardDecor mailbox | Valid environment prop, not the Refrigerator valuable | + +The known source has 103 sheet candidates: import 101 and retain the two historical Walk sheets as excluded manifest records. Also catalog required final single sprites separately; do not inflate the sheet count. + +## Manifest contract + +Each record needs a stable ID, content kind and role, source-relative and destination paths, batch, hash, bytes, selection status/reason, and importer contract. Importer data must state texture mode, cell size/grid, PPU, pivot, direction rows, clip meaning, and loop behavior. Use `null` only when Unity review is explicitly required; never guess PPU. + +## Stop conditions + +- Two included records target one destination. +- One semantic role has multiple unexplained revisions. +- A source file changed hash without a batch/reason update. +- A new item has no runtime role or provenance. + +Resolve these in the manifest before invoking the import skill. diff --git a/.agents/skills/cataloging-home-protector-assets/agents/openai.yaml b/.agents/skills/cataloging-home-protector-assets/agents/openai.yaml new file mode 100644 index 0000000..e9ab8bb --- /dev/null +++ b/.agents/skills/cataloging-home-protector-assets/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Catalog Home Protector Assets" + short_description: "Select canonical Unity-ready game art" + default_prompt: "Use $cataloging-home-protector-assets to update the canonical asset manifest without importing duplicate revisions." diff --git a/.agents/skills/cataloging-home-protector-assets/scripts/New-HomeProtectorAssetManifest.ps1 b/.agents/skills/cataloging-home-protector-assets/scripts/New-HomeProtectorAssetManifest.ps1 new file mode 100644 index 0000000..449c53c --- /dev/null +++ b/.agents/skills/cataloging-home-protector-assets/scripts/New-HomeProtectorAssetManifest.ps1 @@ -0,0 +1,276 @@ +[CmdletBinding()] +param( + [string]$SourceRoot = 'D:\GameAsset\GameAssets\HomeProtector\UnityReadySprites', + [string]$OutputPath, + [switch]$Check +) + +$ErrorActionPreference = 'Stop' +Add-Type -AssemblyName System.Drawing + +$projectRoot = (Resolve-Path (Join-Path $PSScriptRoot '../../../..')).Path +if ([string]::IsNullOrWhiteSpace($OutputPath)) { + $OutputPath = Join-Path $projectRoot 'Docs/Development/asset-import-manifest.json' +} + +$source = (Resolve-Path -LiteralPath $SourceRoot).Path.TrimEnd('\') +$destinationRoot = 'Assets/_Project/Art/Runtime' +$directionRows = @('DownLeft', 'DownRight', 'UpLeft', 'UpRight') + +function Get-RelativeSourcePath([System.IO.FileInfo]$file) { + return $file.FullName.Substring($source.Length).TrimStart('\').Replace('\', '/') +} + +function Get-ImageSize([string]$path) { + $image = [System.Drawing.Image]::FromFile($path) + try { + return [ordered]@{ width = $image.Width; height = $image.Height } + } finally { + $image.Dispose() + } +} + +function Get-ContentKind([string]$relativePath) { + return ($relativePath -split '/')[0] +} + +function Get-Pivot([string]$kind, [string]$relativePath) { + if ($kind -in @('VFX', 'Currency', 'UI')) { + return 'Center' + } + if ($kind -eq 'Enemies' -and $relativePath -match '/(Wasp|AntSwarm|MothPest)/') { + return 'Center' + } + if ($kind -in @('Tiles', 'Overlays', 'Props')) { + if ($relativePath -match '/(GroundTiles|GroundOverlays)/') { + return 'Center' + } + if ($relativePath -match 'Environment_Foundation|OldCabin_Tiles') { + return 'MixedBySlice' + } + } + return 'BottomCenter' +} + +function Get-ClipMeaning([string]$relativePath, [bool]$isSheet) { + if (-not $isSheet) { + return 'Static' + } + foreach ($name in @('Idle', 'Walk', 'Move', 'Attack', 'BuffTower', 'Damage', 'Sleep')) { + if ($relativePath -match "_$name(_|\.|/)" -or $relativePath -match "/$name/") { + return $name + } + } + if ($relativePath -match '/VFX/([^/]+)/') { + return $matches[1] + } + if ($relativePath -match '/Valuables/' -and $relativePath -match '/Damage/') { + return 'DamageStates' + } + return 'Atlas' +} + +function Get-FrameRate([string]$clipMeaning) { + switch ($clipMeaning) { + 'Idle' { return 4 } + 'Sleep' { return 4 } + 'Walk' { return 8 } + 'Move' { return 8 } + 'BuffTower' { return 8 } + 'Damage' { return 8 } + 'DamageStates' { return 8 } + 'Attack' { return 10 } + default { + if ($clipMeaning -in @('Atlas', 'Static')) { return 0 } + return 10 + } + } +} + +function Get-CellSize([string]$kind, [string]$relativePath, [bool]$isSheet, [hashtable]$imageSize) { + if (-not $isSheet) { + return [ordered]@{ width = $imageSize.width; height = $imageSize.height } + } + if ($kind -eq 'Currency') { + return [ordered]@{ width = 64; height = 64 } + } + if ($kind -in @('Player', 'Enemies')) { + return [ordered]@{ width = 96; height = 96 } + } + if ($kind -eq 'VFX') { + $size = if ($relativePath -match 'LevelUpGlow') { 128 } else { 96 } + return [ordered]@{ width = $size; height = $size } + } + return [ordered]@{ width = 128; height = 128 } +} + +function Get-PixelsPerUnit([string]$kind) { + if ($kind -eq 'Player') { + return 32 + } + if ($kind -in @('Tiles', 'Props', 'Overlays')) { + return 128 + } + return 100 +} + +function Get-SelectionReason([string]$relativePath, [string]$status, [string]$assetType) { + if ($status -eq 'excluded') { + return 'Historical Player Walk revision; B08 is canonical.' + } + if ($relativePath -match '^Enemies/Bear/B20/') { + return 'Canonical normal Bear role; intentionally distinct from BearHeavy B31.' + } + if ($relativePath -match '^Enemies/BearHeavy/B31/') { + return 'Canonical elite BearHeavy role; intentionally distinct from Bear B20.' + } + if ($assetType -eq 'singleSprite' -and $relativePath -match '^Towers/') { + return 'Canonical static level sprite for Dryer, BookShelf, or CoolDryer.' + } + if ($assetType -eq 'singleSprite' -and $relativePath -match '^Valuables/') { + return 'Canonical undamaged valuable sprite paired with its damage sheet.' + } + if ($assetType -eq 'singleSprite' -and $relativePath -match '^UI/') { + return 'Canonical runtime UI sprite.' + } + return 'Promoted UnityReady sheet for a distinct runtime role and revision.' +} + +function New-ManifestEntry([System.IO.FileInfo]$file, [string]$assetType, [string]$status) { + $relativePath = Get-RelativeSourcePath $file + $kind = Get-ContentKind $relativePath + $imageSize = Get-ImageSize $file.FullName + $isSheet = $assetType -eq 'spriteSheet' + $cellSize = Get-CellSize $kind $relativePath $isSheet $imageSize + + if (($imageSize.width % $cellSize.width) -ne 0 -or ($imageSize.height % $cellSize.height) -ne 0) { + throw "Image dimensions do not match cell contract: $relativePath" + } + + $columns = [int]($imageSize.width / $cellSize.width) + $rows = [int]($imageSize.height / $cellSize.height) + $clipMeaning = Get-ClipMeaning $relativePath $isSheet + $batch = if ($relativePath -match '(?B\d{2})') { $matches.batch } else { $null } + $id = (($relativePath.ToLowerInvariant() -replace '\.png$', '') -replace '[^a-z0-9]+', '-').Trim('-') + $directions = if ($isSheet -and $rows -eq 4 -and $kind -in @('Player', 'Enemies', 'Towers')) { + $directionRows + } else { + @() + } + $loop = $clipMeaning -in @('Idle', 'Walk', 'Move', 'BuffTower', 'Sleep') + if ($kind -eq 'Towers' -and $clipMeaning -eq 'Attack') { + $loop = $true + } + + return [ordered]@{ + id = $id + assetType = $assetType + contentKind = $kind + runtimeRole = [System.IO.Path]::GetFileNameWithoutExtension($file.Name) + sourceRelativePath = $relativePath + destinationPath = "$destinationRoot/$relativePath" + batch = $batch + sha256 = (Get-FileHash -LiteralPath $file.FullName -Algorithm SHA256).Hash.ToLowerInvariant() + bytes = $file.Length + image = $imageSize + selection = [ordered]@{ + status = $status + reason = Get-SelectionReason $relativePath $status $assetType + } + importer = [ordered]@{ + textureType = 'Sprite' + spriteMode = if ($isSheet) { 'Multiple' } else { 'Single' } + cell = $cellSize + columns = $columns + rows = $rows + pixelsPerUnit = Get-PixelsPerUnit $kind + pivot = Get-Pivot $kind $relativePath + directionRows = @($directions) + clipMeaning = $clipMeaning + frameRate = Get-FrameRate $clipMeaning + loop = [bool]$loop + filterMode = 'Point' + compression = 'Uncompressed' + } + } +} + +$pngFiles = @(Get-ChildItem -LiteralPath $source -Recurse -File -Filter '*.png') +$sheetCandidates = @($pngFiles | Where-Object { $_.Name -match '_Sheet_B\d{2}\.png$' }) + +$singleSprites = @($pngFiles | Where-Object { + $relative = Get-RelativeSourcePath $_ + $relative -match '^Valuables/[^/]+/Normal/B\d{2}/[^/]+\.png$' -or + $relative -match '^Towers/T_HP_Tower_(BookShelf|CoolDryer|Dryer)_Lv0[123]\.png$' -or + $relative -match '^UI/[^/]+\.png$' +}) + +$entries = [System.Collections.Generic.List[object]]::new() +foreach ($file in ($sheetCandidates | Sort-Object FullName)) { + $relative = Get-RelativeSourcePath $file + $status = if ($relative -match '^Player/Walk/B0(5|6)/') { 'excluded' } else { 'included' } + $entries.Add((New-ManifestEntry $file 'spriteSheet' $status)) +} +foreach ($file in ($singleSprites | Sort-Object FullName)) { + $entries.Add((New-ManifestEntry $file 'singleSprite' 'included')) +} + +$included = @($entries | Where-Object { $_.selection.status -eq 'included' }) +$sheetIncluded = @($included | Where-Object { $_.assetType -eq 'spriteSheet' }) +$sheetExcluded = @($entries | Where-Object { + $_.assetType -eq 'spriteSheet' -and $_.selection.status -eq 'excluded' +}) +$singleIncluded = @($included | Where-Object { $_.assetType -eq 'singleSprite' }) + +if ($sheetCandidates.Count -ne 103 -or $sheetIncluded.Count -ne 101 -or + $sheetExcluded.Count -ne 2 -or $singleIncluded.Count -ne 22) { + throw "Unexpected canonical counts: candidates=$($sheetCandidates.Count) includedSheets=$($sheetIncluded.Count) excludedSheets=$($sheetExcluded.Count) singles=$($singleIncluded.Count)" +} + +$duplicateDestinations = @($included | Group-Object { $_.destinationPath } | Where-Object Count -gt 1) +if ($duplicateDestinations.Count -gt 0) { + throw "Destination collision: $($duplicateDestinations[0].Name)" +} + +$duplicateHashes = @($included | Group-Object { $_.sha256 } | Where-Object Count -gt 1) +if ($duplicateHashes.Count -gt 0) { + throw "Duplicate included content hash: $($duplicateHashes[0].Name)" +} + +$manifest = [ordered]@{ + schemaVersion = 1 + sourceRoot = $source.Replace('\', '/') + destinationRoot = $destinationRoot + policy = [ordered]@{ + candidates = 'Promoted *_Sheet_BNN.png plus explicit canonical single-sprite allowlist.' + excludedPatterns = @('Frames', 'fullres', 'native', 'QualityRefresh', 'historical comparison revisions') + retainedExistingProjectContent = @('CommonSoldier', 'Monkey') + intentionalRoleSplit = @('Bear B20', 'BearHeavy B31') + } + summary = [ordered]@{ + sheetCandidates = $sheetCandidates.Count + sheetsIncluded = $sheetIncluded.Count + sheetsExcluded = $sheetExcluded.Count + singleSpritesIncluded = $singleIncluded.Count + totalIncluded = $included.Count + includedBytes = ($included | ForEach-Object { $_.bytes } | Measure-Object -Sum).Sum + } + entries = @($entries) +} + +$json = $manifest | ConvertTo-Json -Depth 12 +if ($Check) { + if (-not (Test-Path -LiteralPath $OutputPath -PathType Leaf)) { + throw "Manifest does not exist: $OutputPath" + } + $existing = Get-Content -LiteralPath $OutputPath -Raw -Encoding UTF8 + if ($existing.Trim() -ne $json.Trim()) { + throw 'Manifest is stale. Regenerate it with this script.' + } +} else { + $directory = Split-Path -Parent $OutputPath + New-Item -ItemType Directory -Path $directory -Force | Out-Null + [System.IO.File]::WriteAllText($OutputPath, $json + [Environment]::NewLine, [System.Text.UTF8Encoding]::new($false)) +} + +Write-Host "PASS asset-manifest sheets=$($sheetIncluded.Count)/$($sheetCandidates.Count) singles=$($singleIncluded.Count) total=$($included.Count)" diff --git a/.agents/skills/importing-unity-sprite-sheets/SKILL.md b/.agents/skills/importing-unity-sprite-sheets/SKILL.md new file mode 100644 index 0000000..6169eb2 --- /dev/null +++ b/.agents/skills/importing-unity-sprite-sheets/SKILL.md @@ -0,0 +1,42 @@ +--- +name: importing-unity-sprite-sheets +description: Use when copying manifest-approved Home Protector art into Unity, configuring TextureImporter and sprite slicing, or generating AnimationClips and controllers from importer contracts. +--- + +# Importing Unity Sprite Sheets + +## Overview + +Turn the audited manifest into Unity assets without duplicating Unity's job. The agent chooses and checks the import contract; a single Unity Editor C# command performs copy, import, slice, naming, clip, and controller mutations. + +## Preconditions + +1. Read the root and `Assets/_Project/AGENTS.md` files. +2. Run the catalog script with **Windows PowerShell 5.1**, not `pwsh 7`: `powershell.exe -NoProfile -ExecutionPolicy Bypass -File -Check`. +3. Require `PASS asset-manifest sheets=101/103 singles=22 total=123`. +4. Require a working Unity license and exclusive Unity-writer ownership. + +If any precondition fails, stop before copying. Report `BLOCKED Unity license unavailable; no import mutation performed` when licensing is the cause. + +## Workflow + +1. Select only records whose `selection.status` is `included`; never infer approval from a filename. +2. Preflight source path, SHA-256, bytes, dimensions, destination uniqueness, and importer texture type, mode, cell/grid, PPU, pivot, direction rows, clip meaning, FPS, loop, filter, and compression. +3. Pass records to the Editor importer under `Assets/_Project/Scripts/Editor/AssetPipeline`. +4. Preserve an existing destination `.meta` and GUID. Make reruns idempotent: update assets rather than adding duplicate sprites, clips, or controllers. +5. Apply manifest cell size, PPU, pivot, direction rows, FPS, loop, filter, and compression exactly. Treat `MixedBySlice` as a required per-slice decision, never a global pivot. +6. Save and refresh through Unity, then run one Unity validation and one repository-hygiene check. Do not reimplement semantic Unity checks in PowerShell or prose. + +## Never do this + +- Import all 103 sheet candidates; Player Walk B05/B06 are historical. +- Omit the 22 canonical single sprites. +- Copy `Frames`, `fullres`, `native`, `QualityRefresh`, comparisons, or raw revisions. +- Split a sheet into per-frame PNG files. +- Hand-author `.meta`, scene/prefab YAML, `.anim`, or `.controller` files. +- Collapse Bear B20 and BearHeavy B31, replace CommonSoldier or Monkey, or confuse the PorchYard mailbox with Refrigerator. +- Generate default Unity metadata while Unity is unavailable. + +## Reporting + +Success is concise: `PASS sprite-import sheets=101 singles=22 total=123`. On failure report `FAIL asset= stage= reason= log=` and inspect the full Unity log only then. diff --git a/.agents/skills/importing-unity-sprite-sheets/agents/openai.yaml b/.agents/skills/importing-unity-sprite-sheets/agents/openai.yaml new file mode 100644 index 0000000..83529f8 --- /dev/null +++ b/.agents/skills/importing-unity-sprite-sheets/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Import Home Protector Sprite Sheets" + short_description: "Import manifest-approved art through Unity" + default_prompt: "Use $importing-unity-sprite-sheets to import only manifest-approved Home Protector art through Unity Editor automation." diff --git a/.agents/skills/reviewing-home-protector-playability/SKILL.md b/.agents/skills/reviewing-home-protector-playability/SKILL.md new file mode 100644 index 0000000..f8a1706 --- /dev/null +++ b/.agents/skills/reviewing-home-protector-playability/SKILL.md @@ -0,0 +1,58 @@ +--- +name: reviewing-home-protector-playability +description: Use when hands-on reviewing a playable Home Protector milestone for game flow, readability, voice activation, feedback, UI, balance, or content exposure. +--- + +# Reviewing Home Protector Playability + +## Overview + +Review what a player sees, understands, and feels. Treat Unity verification and repository hygiene as prerequisites, not work to repeat. + +## Inputs + +- Milestone and commit/build ID, platform or scene, and playable artifact. +- Scoped changes, expected day/wave/theme coverage, and newly exposed content. +- Controls plus microphone and keyboard-fallback setup. +- Concise Unity verification and repository-hygiene summaries with known blockers. +- `Docs/Development/playtest-notes.md` for the current milestone. + +## Review loop + +1. Launch the Unity scene or Windows build as a player. +2. Exercise Loading Preparation Combat Result next day or same-day retry final completion. +3. Check placement and tower controls plus Refrigerator, Rice, and Bed damage, destruction, and recovery. +4. Check combat readability: teams, targets, projectiles, damage, hit reaction, and death. +5. Try voice activation and keyboard fallback through the same gameplay path, including unavailable-microphone behavior. +6. Judge wave pacing, role variety, enemy introductions, tower choices, and difficulty spikes. +7. Judge attack anticipation, impact VFX/audio, hit feel, and result feedback. +8. Check phase, day, goal, protected health, controls, and result UI clarity. +9. Confirm promised player, enemy, tower, valuable, VFX, and environment/theme content appears in normal play. + +## Boundaries + +- Do not rerun compile, EditMode, PlayMode, reference, serialization, `.meta`, or hygiene checks already summarized by their owners. +- Do not paste successful full logs; request a failure log only when handing an actual blocker to debugging. +- Do not inspect source for root cause or fix issues while reviewing. Route investigation through `systematic-debugging`. +- Automated readiness is not evidence of playability; hands-on observation is required. + +## Findings + +Record a header with milestone, commit/build, platform/scene, date, input setup, scoped coverage, and concise verification references. Each finding needs severity, timestamp/phase, observation, player impact, expected behavior, at most four repro steps, optional screenshot/clip, and owning area. End with coverage gaps and one status: `PLAYABLE`, `PLAYABLE WITH FINDINGS`, or `BLOCKED`. + +## Severity and stopping + +- **P0:** crash, softlock, wrong result/state, both voice and fallback unusable, or core loop cannot complete. Stop blocked coverage and hand off immediately. +- **P1:** a major required path or repeated combat-comprehension failure; continue other reachable coverage. +- **P2:** meaningful pacing, readability, feedback, or UI degradation. +- **P3:** polish only. +- An unavailable microphone alone is a coverage gap when fallback works; both inputs failing is P0. +- If the playable artifact or hands-on access is unavailable, report `BLOCKED` with an untested coverage gap and no runtime severity; reserve P0 for an observed failure. + +## Handoff + +Separate observed defect, tuning concern, and untested coverage. Give the smallest reproducible player path and impact, group findings by owning subsystem, and do not claim root cause. + +## Reporting + +On a clean run, report the status and covered milestone in one line. On findings, link the compact playtest note; never dump raw Unity logs. diff --git a/.agents/skills/reviewing-home-protector-playability/agents/openai.yaml b/.agents/skills/reviewing-home-protector-playability/agents/openai.yaml new file mode 100644 index 0000000..82330d1 --- /dev/null +++ b/.agents/skills/reviewing-home-protector-playability/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Review Home Protector Playability" + short_description: "Evaluate hands-on game feel without duplicate validation" + default_prompt: "Use $reviewing-home-protector-playability to review a Home Protector milestone through hands-on play and concise findings." diff --git a/.agents/skills/wiring-home-protector-content/SKILL.md b/.agents/skills/wiring-home-protector-content/SKILL.md new file mode 100644 index 0000000..ae062f8 --- /dev/null +++ b/.agents/skills/wiring-home-protector-content/SKILL.md @@ -0,0 +1,49 @@ +--- +name: wiring-home-protector-content +description: Use when connecting imported Home Protector art to prefabs, variants, definitions, ContentCatalog entries, waves, or the final Unity scene. +--- + +# Wiring Home Protector Content + +## Overview + +Integrate one gameplay role at a time while preserving working references. A sprite sheet is animation input, not proof that a new prefab is required. + +## Decision order + +1. Identify the runtime role, dependencies, and existing references. +2. **Reuse** an existing prefab when its components and behavior match; preserve its GUID and add art, animation, or definition data. +3. Create a **variant** when behavior is shared but visuals, stats, or role differ. +4. Create a **new base** only when the existing contracts cannot express required behavior. +5. Represent tower levels in `TowerDefinition` data before considering level-specific prefab duplication. + +## Atomic content unit + +Commit the approved sheet, `.meta`, clips, controller, prefab or variant, definition, `ContentCatalog` entry, and related tests together. Include required projectile or VFX dependencies in the same unit. Catalog IDs and prefab references must be unique and non-null. + +## Workflow + +1. Require a successful manifest-driven import and exclusive Unity-writer ownership. +2. Wire prefab, definition, and catalog before touching a scene. +3. Reuse CommonSoldier, Monkey, Cockroach, Bear, existing towers, and other compatible identities rather than recreating them. +4. Keep `Assets/Prefabs/Refrigerator.prefab` GUID `013bf229ebe2b6247b621e48f6137a06` as the canonical protected resource. Preserve the placeholder PostBox's `DraggableResource`, `TargetObject`, and `ResourceObject` behavior while migrating its scene instances to Refrigerator. +5. Retire the placeholder PostBox asset only after Unity confirms all references were migrated. +6. Wire the final scene last through an Editor C# migration; never hand-edit Unity YAML. +7. Resolve the canonical roster from `ContentCatalog`: CommonSoldier, Monkey, Cockroach, Bear, BearHeavy, WildBoar, Snake, Spider, Mouse, Wasp, Fox, Squirrel, AntSwarm, and MothPest. Distribute all 14 across introduction, mixed, and pressure waves; never infer roles from sheet count or put every type in every wave. + +## Project rules + +- Keep CommonSoldier and Monkey. Keep Bear B20 and BearHeavy B31 as distinct normal and elite roles. +- Protected Refrigerator, Rice, and Bed contribute to target/health rules; decorative placeables do not. +- PorchYardDecor's mailbox is an environment prop, not Refrigerator. It may remain draggable with target and total-health flags disabled. +- Only one agent writes `.unity`, `.prefab`, `.asset`, `.controller`, `.anim`, or `.meta` files; review agents stay read-only. + +## Verification + +- Let Unity check catalog IDs, nulls, references, compile state, and representative spawn-to-death or placeable lifecycles. +- Confirm Refrigerator migration, decoration policy, campaign-wide roster exposure, wave role limits, and final-scene missing references. +- Run repository hygiene separately. Do not duplicate Unity semantic checks in shell scripts. + +## Reporting + +Report one-line success by role or batch. On failure name the role, wiring stage, and Unity log path; read the full log only on failure. diff --git a/.agents/skills/wiring-home-protector-content/agents/openai.yaml b/.agents/skills/wiring-home-protector-content/agents/openai.yaml new file mode 100644 index 0000000..f074910 --- /dev/null +++ b/.agents/skills/wiring-home-protector-content/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Wire Home Protector Content" + short_description: "Connect art, prefabs, definitions, and catalogs" + default_prompt: "Use $wiring-home-protector-content to integrate Home Protector content while preserving GUIDs and scene safety." diff --git a/.github/workflows/unity-repo-hygiene.yml b/.github/workflows/unity-repo-hygiene.yml new file mode 100644 index 0000000..346e1e0 --- /dev/null +++ b/.github/workflows/unity-repo-hygiene.yml @@ -0,0 +1,19 @@ +name: unity-repo-hygiene + +on: + pull_request: + push: + branches: + - main + +permissions: + contents: read + +jobs: + validate: + runs-on: windows-latest + steps: + - uses: actions/checkout@v7 + - name: Validate Unity repository hygiene + shell: pwsh + run: ./Tools/Git/Validate-UnityRepo.ps1 diff --git a/.gitignore b/.gitignore index 0822432..ef7ce8f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,10 @@ Library/ /[Tt]emp/ /[Oo]bj/ /[Bb]uild/ +/[Bb]uild*/ /[Bb]uilds/ +/[Rr]eleases/ +/새 폴더/ /[Ll]ogs/ /[Uu]ser[Ss]ettings/ diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..f20894b --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,51 @@ +# Home Protector agent contract + +This repository is a Unity 2022.3.60f1 project completed from the existing `isometric scene` gameplay. Keep changes incremental and preserve working legacy systems while moving ownership to `Assets/_Project`. + +## Required boundaries + +- `HomeProtector.Core.GameSession` is the only source of Preparation, Combat, and Result state. +- Keep `WaveSystem`, `EnemySpawner`, `TowerSpawner`, `TargetManager`, and `ResourceManager` as the combat engine; adapt them through bridges instead of rewriting them. +- Keep CommonSoldier and Monkey. Treat the old PostBox prefab as the refrigerator placeholder and preserve its draggable, target, and resource behavior while migrating it. +- Keep microphone activation and a keyboard fallback on the same activation path. +- Do not add WebGL, GitHub Pages, NAN submission automation, or an in-game AI director. + +## Unity ownership + +- Only one agent may write `.unity`, `.prefab`, `.asset`, `.controller`, `.anim`, or `.meta` files at a time. +- Never hand-edit Unity scene or prefab YAML. Use Unity Editor C# migration/build commands. +- Read-only asset inventory and playability review may run in parallel. +- Preserve GUIDs when moving assets. Commit a runtime asset together with its `.meta`, clips, controller, prefab, and definition. + +## Art intake + +- Import only canonical Unity-ready sprite sheets from `D:/GameAsset` that are listed in `Docs/Development/asset-import-manifest.json`. +- Exclude raw generations, `Frames`, `fullres`, `native`, comparison images, and intermediate QualityRefresh revisions. +- Slice approved sheets in Unity. Do not commit per-frame PNG copies. +- Store imported runtime art under `Assets/_Project/Art/Runtime` and provenance in the manifest. + +## Verification + +- Let Unity own compile, serialization, reference, EditMode, PlayMode, and build verification. +- Use `Tools/Unity/Invoke-HomeProtectorUnity.ps1` for concise summaries. Read full Unity logs only after a failure. +- Use `Tools/Git/Validate-UnityRepo.ps1` for repository hygiene; do not duplicate Unity semantic checks in shell scripts or skills. +- A missing Unity license is an explicit blocked check, never a passing result. + +## Git + +- Work on `codex/*` branches; never push or force-push `main`. +- Stage explicit feature paths. Do not use `git add -A` in this mixed Unity worktree. +- Do not commit `Library`, `Temp`, `Build`, `Builds`, `Releases`, executables, generated DLLs, or raw/full-resolution art. +- Use normal Git for approved sheets. Reconsider LFS only for future source assets such as PSD/WAV or files over 20 MiB. +- Keep code and its tests together. Keep scene wiring in a later, separate commit. + +## Local skills + +Use the smallest applicable skill under `.agents/skills`: + +- `cataloging-home-protector-assets` for canonical asset selection and manifest updates. +- `importing-unity-sprite-sheets` for importer contracts and Editor-driven slicing. +- `wiring-home-protector-content` for prefab, definition, catalog, and scene integration. +- `reviewing-home-protector-playability` for milestone play reviews. + +Use existing `systematic-debugging`, `verification-before-completion`, and GitHub `yeet` instead of creating overlapping project skills. diff --git a/Assets/Prefabs/EnemyBear.prefab b/Assets/Prefabs/EnemyBear.prefab index dd0836d..b2b03b6 100644 --- a/Assets/Prefabs/EnemyBear.prefab +++ b/Assets/Prefabs/EnemyBear.prefab @@ -103,7 +103,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 1 + m_SortingOrder: 2 m_Sprite: {fileID: 21300000, guid: 72c692a250175e3408a8627d98e867fc, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 @@ -156,8 +156,8 @@ MonoBehaviour: gold: 30 expValue: 50 targetTagPriority: - - Food - Goods + - Food - Human targetSearchRadius: 10 targetUpdateInterval: 1 diff --git a/Assets/Prefabs/EnemyCockroach.prefab b/Assets/Prefabs/EnemyCockroach.prefab index 8b4219f..f0fa8d7 100644 --- a/Assets/Prefabs/EnemyCockroach.prefab +++ b/Assets/Prefabs/EnemyCockroach.prefab @@ -187,7 +187,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 1 + m_SortingOrder: 2 m_Sprite: {fileID: 21300000, guid: 86b0557da12100c4280a2086d2458a01, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 diff --git a/Assets/Prefabs/EnemyCommonSoldier.prefab b/Assets/Prefabs/EnemyCommonSoldier.prefab index 058aa6c..edd5a96 100644 --- a/Assets/Prefabs/EnemyCommonSoldier.prefab +++ b/Assets/Prefabs/EnemyCommonSoldier.prefab @@ -187,7 +187,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 1 + m_SortingOrder: 2 m_Sprite: {fileID: -7008412969330441016, guid: 4a7c0da22d195094c996d9182a363b82, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 diff --git a/Assets/Prefabs/EnemyCommonSoldier 1.prefab b/Assets/Prefabs/EnemyMonkey.prefab similarity index 87% rename from Assets/Prefabs/EnemyCommonSoldier 1.prefab rename to Assets/Prefabs/EnemyMonkey.prefab index 2bea492..91ed736 100644 --- a/Assets/Prefabs/EnemyCommonSoldier 1.prefab +++ b/Assets/Prefabs/EnemyMonkey.prefab @@ -103,8 +103,9 @@ GameObject: - component: {fileID: 6203516723759015889} - component: {fileID: -84709492547993232} - component: {fileID: -8553615408204601458} + - component: {fileID: -5499601254261705463} m_Layer: 8 - m_Name: EnemyCommonSoldier 1 + m_Name: EnemyMonkey m_TagString: Enemy m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -134,7 +135,7 @@ Animator: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8385226143460851807} - m_Enabled: 1 + m_Enabled: 0 m_Avatar: {fileID: 0} m_Controller: {fileID: 9100000, guid: a08fc71a87fe29047b93017ed22c5817, type: 2} m_CullingMode: 0 @@ -187,8 +188,8 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 1 - m_Sprite: {fileID: -7008412969330441016, guid: 4a7c0da22d195094c996d9182a363b82, type: 3} + m_SortingOrder: 2 + m_Sprite: {fileID: 21300000, guid: 6014ac042f215ee40bd60ebf3c53aa9f, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 m_FlipY: 0 @@ -223,7 +224,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3866747457431c04f8a86561f03ccf31, type: 3} m_Name: m_EditorClassIdentifier: - moveSpeed: 2 + moveSpeed: 16.6 moveDirection: {x: 0, y: 0, z: 0} --- !u!114 &-2238810831190767473 MonoBehaviour: @@ -240,9 +241,9 @@ MonoBehaviour: gold: 10 expValue: 20 targetTagPriority: - - Resource - - PlayerBase - - Tower + - Goods + - Food + - Human targetSearchRadius: 10 targetUpdateInterval: 1 defaultTargetTag: Human @@ -296,7 +297,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 14e868f8837a5e5479846d867a687b91, type: 3} m_Name: m_EditorClassIdentifier: - maxHP: 7 + maxHP: 10 --- !u!195 &6203516723759015889 NavMeshAgent: m_ObjectHideFlags: 0 @@ -306,7 +307,7 @@ NavMeshAgent: m_GameObject: {fileID: 8385226143460851807} m_Enabled: 1 m_AgentTypeID: 0 - m_Radius: 0.3 + m_Radius: 0.1 m_Speed: 3.5 m_Acceleration: 12 avoidancePriority: 10 @@ -315,7 +316,7 @@ NavMeshAgent: m_AutoTraverseOffMeshLink: 1 m_AutoBraking: 0 m_AutoRepath: 1 - m_Height: 1 + m_Height: 0.5 m_BaseOffset: 0 m_WalkableMask: 1 m_ObstacleAvoidanceType: 1 @@ -331,16 +332,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9b4f5468c74ed5c4596ef0af94081a11, type: 3} m_Name: m_EditorClassIdentifier: - attackType: 2 - attackRange: 0.1 + attackType: 1 + attackRange: 10 attackRate: 0.8 attackDamage: 2 targetLayers: serializedVersion: 2 m_Bits: 8 - projectilePrefab: {fileID: 2777279350721899029, guid: 44489083cff375d4aa63a379f35125dd, type: 3} + projectilePrefab: {fileID: 0} attackPoint: {fileID: 3820741013839462605} - attackEffect: {fileID: 0} + attackEffect: {fileID: 1297803425142155509, guid: dde7a72a4de1bdc40a7138e6bd05585f, type: 3} attackSound: {fileID: 0} useIsometricPosition: 1 --- !u!114 &-8553615408204601458 @@ -357,3 +358,47 @@ MonoBehaviour: m_EditorClassIdentifier: flipX: 1 flipY: 0 +--- !u!114 &-5499601254261705463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8385226143460851807} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 046e5eb2ec9e2f84a827b6ae91eb69ce, type: 3} + m_Name: + m_EditorClassIdentifier: + jumpHeight: 1.5 + jumpDuration: 0.7 + jumpCooldown: 2 + jumpCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomJumping: 1 + randomJumpChance: 0.1 + jumpOnObstacle: 1 + jumpEffect: {fileID: 0} + jumpSound: {fileID: 0} diff --git a/Assets/Prefabs/EnemyCommonSoldier 1.prefab.meta b/Assets/Prefabs/EnemyMonkey.prefab.meta similarity index 100% rename from Assets/Prefabs/EnemyCommonSoldier 1.prefab.meta rename to Assets/Prefabs/EnemyMonkey.prefab.meta diff --git a/Assets/Prefabs/FollowTower03.prefab b/Assets/Prefabs/FollowTower03.prefab new file mode 100644 index 0000000..86ab59e --- /dev/null +++ b/Assets/Prefabs/FollowTower03.prefab @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5283101220022144376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 586370364521603436} + - component: {fileID: 2843504925317398706} + - component: {fileID: 9195364417866039883} + m_Layer: 0 + m_Name: FollowTower03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &586370364521603436 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5283101220022144376} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &2843504925317398706 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5283101220022144376} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 + m_Sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 0.5} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &9195364417866039883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5283101220022144376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 45f67371a075196438240da166445dfb, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/FollowTower03.prefab.meta b/Assets/Prefabs/FollowTower03.prefab.meta new file mode 100644 index 0000000..3bdba30 --- /dev/null +++ b/Assets/Prefabs/FollowTower03.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 33f77d679e7670b45981337fd1c2c8ba +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Last/Monkey Idle 1.png b/Assets/Prefabs/Last/Monkey Idle 1.png new file mode 100644 index 0000000..2148b41 Binary files /dev/null and b/Assets/Prefabs/Last/Monkey Idle 1.png differ diff --git a/Assets/Prefabs/Last/Monkey Idle 1.png.meta b/Assets/Prefabs/Last/Monkey Idle 1.png.meta new file mode 100644 index 0000000..e371c89 --- /dev/null +++ b/Assets/Prefabs/Last/Monkey Idle 1.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: 6014ac042f215ee40bd60ebf3c53aa9f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 32 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Last/UI/FadeManager.cs b/Assets/Prefabs/Last/UI/FadeManager.cs index 5cca403..6a14af0 100644 --- a/Assets/Prefabs/Last/UI/FadeManager.cs +++ b/Assets/Prefabs/Last/UI/FadeManager.cs @@ -1,47 +1,48 @@ +using System.Collections; using UnityEngine; -using UnityEngine.UI; using UnityEngine.SceneManagement; -using System.Collections; +using UnityEngine.UI; public class FadeManager : MonoBehaviour { - public Image fadeImage; // UI Image ( ) + public Image fadeImage; public float fadeSpeed = 1.5f; - // void Start() - // { - // ̵ ȿ (ȭ ) - // StartCoroutine(FadeIn()); - // } + private bool isTransitioning; - public void StartSceneTransition(string morning) + public void StartSceneTransition(string sceneName) { - // ȯ (̵ ƿ ̵) - StartCoroutine(FadeOut(morning)); + if (isTransitioning) + { + return; + } + + if (string.IsNullOrWhiteSpace(sceneName)) + { + Debug.LogError("FadeManager cannot load an empty scene name."); + return; + } + + isTransitioning = true; + StartCoroutine(FadeOut(sceneName)); } - // IEnumerator FadeIn() - // { - // float alpha = 1; - // while (alpha > 0) - // { - // alpha -= Time.deltaTime * fadeSpeed; - // fadeImage.color = new Color(0, 0, 0, alpha); - // yield return null; - // } - // } - - IEnumerator FadeOut(string morning) + private IEnumerator FadeOut(string sceneName) { - float alpha = 0; - while (alpha < 1) + if (fadeImage == null || fadeSpeed <= 0f) + { + SceneManager.LoadScene(sceneName); + yield break; + } + + float alpha = 0f; + while (alpha < 1f) { alpha += Time.deltaTime * fadeSpeed; - fadeImage.color = new Color(0, 0, 0, alpha); + fadeImage.color = new Color(0f, 0f, 0f, alpha); yield return null; } - // ȯ - SceneManager.LoadScene(morning); + SceneManager.LoadScene(sceneName); } -} +} \ No newline at end of file diff --git a/Assets/Prefabs/Last/UI/StartGame.cs b/Assets/Prefabs/Last/UI/StartGame.cs index 1773443..87bfd10 100644 --- a/Assets/Prefabs/Last/UI/StartGame.cs +++ b/Assets/Prefabs/Last/UI/StartGame.cs @@ -1,14 +1,65 @@ using UnityEngine; +using UnityEngine.SceneManagement; public class StartGame : MonoBehaviour { - public FadeManager fadeManager; // FadeManager ũƮ + private const string DefaultTargetSceneName = "isometric scene"; - void Update() + [SerializeField] private FadeManager fadeManager; + [SerializeField] private string targetSceneName = DefaultTargetSceneName; + [SerializeField] private bool startOnAnyMouseClick = true; + [SerializeField] private bool startOnSubmitKey = true; + + private bool isTransitioning; + + public string TargetSceneName => + string.IsNullOrWhiteSpace(targetSceneName) ? DefaultTargetSceneName : targetSceneName; + + private void Awake() + { + if (fadeManager == null) + { + fadeManager = FindObjectOfType(); + } + } + + private void Update() { - if (Input.GetMouseButtonDown(0)) // ȭ Ŭ + if (!ShouldStart()) { - fadeManager.StartSceneTransition("isometric scene"); // ȯ + return; } + + StartGameFlow(); + } + + public void StartGameFlow() + { + if (isTransitioning) + { + return; + } + + isTransitioning = true; + + if (fadeManager != null) + { + fadeManager.StartSceneTransition(TargetSceneName); + return; + } + + Debug.LogWarning("StartGame has no FadeManager. Loading target scene immediately."); + SceneManager.LoadScene(TargetSceneName); + } + + private bool ShouldStart() + { + bool mouseRequested = startOnAnyMouseClick && Input.GetMouseButtonDown(0); + bool keyboardRequested = startOnSubmitKey + && (Input.GetKeyDown(KeyCode.Return) + || Input.GetKeyDown(KeyCode.KeypadEnter) + || Input.GetKeyDown(KeyCode.Space)); + + return mouseRequested || keyboardRequested; } -} +} \ No newline at end of file diff --git a/Assets/Prefabs/Materials/ProjectileCoolDryer.prefab b/Assets/Prefabs/Materials/ProjectileCoolDryer.prefab new file mode 100644 index 0000000..b73bced --- /dev/null +++ b/Assets/Prefabs/Materials/ProjectileCoolDryer.prefab @@ -0,0 +1,188 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2777279350721899029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2315529299478935262} + - component: {fileID: 4868053075446110428} + - component: {fileID: 6226941901820838719} + - component: {fileID: 5394799678845828166} + - component: {fileID: 1856268412655041909} + - component: {fileID: 5000556750402004395} + m_Layer: 0 + m_Name: ProjectileCoolDryer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2315529299478935262 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777279350721899029} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4868053075446110428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777279350721899029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3866747457431c04f8a86561f03ccf31, type: 3} + m_Name: + m_EditorClassIdentifier: + moveSpeed: 15 + moveDirection: {x: 0, y: 0, z: 0} +--- !u!58 &6226941901820838719 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777279350721899029} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.1 +--- !u!50 &5394799678845828166 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777279350721899029} + m_BodyType: 1 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 0 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!212 &1856268412655041909 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777279350721899029} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 + m_Sprite: {fileID: 21300000, guid: 373130f3555d2b345bb1d8098d6a42db, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.21, y: 0.35} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &5000556750402004395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777279350721899029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29186558c7e854840872e40bd3e2a046, type: 3} + m_Name: + m_EditorClassIdentifier: + hitEffect: {fileID: 1297803425142155509, guid: dde7a72a4de1bdc40a7138e6bd05585f, type: 3} + updateZPosition: 1 + effectRadius: 2 + enemyTag: Enemy + moveSpeed: 8 + moveSlowAmount: 1 + moveSlowDuration: 4 + attackSlowAmount: 1 + attackSlowDuration: 3 + debuffEffectPrefab: {fileID: 1297803425142155509, guid: dde7a72a4de1bdc40a7138e6bd05585f, type: 3} diff --git a/Assets/Prefabs/Materials/ProjectileCoolDryer.prefab.meta b/Assets/Prefabs/Materials/ProjectileCoolDryer.prefab.meta new file mode 100644 index 0000000..485746e --- /dev/null +++ b/Assets/Prefabs/Materials/ProjectileCoolDryer.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9f72e4894fe04e84795264cd1b0da82a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Rice.prefab b/Assets/Prefabs/Rice.prefab index 81ed33e..4bdf146 100644 --- a/Assets/Prefabs/Rice.prefab +++ b/Assets/Prefabs/Rice.prefab @@ -92,7 +92,7 @@ GameObject: - component: {fileID: 1130233737445535661} m_Layer: 3 m_Name: Rice - m_TagString: Goods + m_TagString: Food m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -178,6 +178,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: targetTag: Food + autoRegister: 1 --- !u!114 &1288222789276926307 MonoBehaviour: m_ObjectHideFlags: 0 @@ -190,7 +191,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 585e1db9aa9f31141a7e3d787e65e025, type: 3} m_Name: m_EditorClassIdentifier: - maxHP: 100 + maxHP: 50 resourceName: Food destroyEffect: {fileID: 0} isInvincible: 0 diff --git a/Assets/Prefabs/Tower03CoolDryer.asset b/Assets/Prefabs/Tower03CoolDryer.asset new file mode 100644 index 0000000..ff702c0 --- /dev/null +++ b/Assets/Prefabs/Tower03CoolDryer.asset @@ -0,0 +1,47 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 724490502a651684da550b41ba71b958, type: 3} + m_Name: Tower03CoolDryer + m_EditorClassIdentifier: + towerPrefab: {fileID: 7937509987669185425, guid: f827b8f1b1e900f4a887ac5530ae3134, type: 3} + weapons: + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + damage: 1 + rate: 1 + range: 5 + cost: 7 + sell: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + damage: 1 + rate: 1.3 + range: 7 + cost: 7 + sell: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + damage: 1 + rate: 1.6 + range: 9 + cost: 7 + sell: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + damage: 1.2 + rate: 1.9 + range: 11 + cost: 7 + sell: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + damage: 2 + rate: 2.2 + range: 11 + cost: 7 + sell: 3 + followTowerPrefab: {fileID: 5283101220022144376, guid: 33f77d679e7670b45981337fd1c2c8ba, type: 3} diff --git a/Assets/Prefabs/Tower03CoolDryer.asset.meta b/Assets/Prefabs/Tower03CoolDryer.asset.meta new file mode 100644 index 0000000..006639c --- /dev/null +++ b/Assets/Prefabs/Tower03CoolDryer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 42202a8d6ff0484419452be243e9d106 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/TowerCoolDryer.prefab b/Assets/Prefabs/TowerCoolDryer.prefab new file mode 100644 index 0000000..5da68d0 --- /dev/null +++ b/Assets/Prefabs/TowerCoolDryer.prefab @@ -0,0 +1,213 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7371461398766480874 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 440144251034166792} + m_Layer: 9 + m_Name: SpawnPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &440144251034166792 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7371461398766480874} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1868021092688681769} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7937509987669185425 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1868021092688681769} + - component: {fileID: 994000507248595842} + - component: {fileID: -6281782124998012200} + - component: {fileID: -6842561234153425761} + - component: {fileID: 8675374209508277363} + - component: {fileID: 3285590015073188405} + m_Layer: 9 + m_Name: TowerCoolDryer + m_TagString: Tower + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1868021092688681769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7937509987669185425} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 440144251034166792} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &994000507248595842 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7937509987669185425} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 0.5} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &-6281782124998012200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7937509987669185425} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39ee8bc23ad864841a60797d1f81588b, type: 3} + m_Name: + m_EditorClassIdentifier: + projectilePrefab: {fileID: 2777279350721899029, guid: 9f72e4894fe04e84795264cd1b0da82a, type: 3} + spawnPoint: {fileID: 440144251034166792} + attackEnabled: 1 +--- !u!61 &-6842561234153425761 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7937509987669185425} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -0.0152255, y: 0.03214276} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 0.64, y: 0.64} + newSize: {x: 1, y: 0.5} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 0.80578893, y: 0.79225516} + m_EdgeRadius: 0 +--- !u!208 &8675374209508277363 +NavMeshObstacle: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7937509987669185425} + m_Enabled: 1 + serializedVersion: 3 + m_Shape: 1 + m_Extents: {x: 0.32000002, y: 0.32000002, z: 0.1} + m_MoveThreshold: 0.1 + m_Carve: 0 + m_CarveOnlyStationary: 1 + m_Center: {x: 0, y: 0, z: 0} + m_TimeToStationary: 0.5 +--- !u!114 &3285590015073188405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7937509987669185425} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6bd949ebc1b5b6a41b394ef49d3d95f0, type: 3} + m_Name: + m_EditorClassIdentifier: + updateContinuously: 1 + updateOnStart: 1 + includeChildren: 1 diff --git a/Assets/Prefabs/TowerCoolDryer.prefab.meta b/Assets/Prefabs/TowerCoolDryer.prefab.meta new file mode 100644 index 0000000..84b4c40 --- /dev/null +++ b/Assets/Prefabs/TowerCoolDryer.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f827b8f1b1e900f4a887ac5530ae3134 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/TowerDryer.prefab b/Assets/Prefabs/TowerDryer.prefab index c880dd3..efadc07 100644 --- a/Assets/Prefabs/TowerDryer.prefab +++ b/Assets/Prefabs/TowerDryer.prefab @@ -109,7 +109,7 @@ SpriteRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 - m_Sprite: {fileID: 21300000, guid: bf093bf7afa81b542a10689df8d22170, type: 3} + m_Sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} m_FlipX: 0 m_FlipY: 0 diff --git "a/Assets/Prefabs/\354\230\244\353\270\214\354\240\235\355\212\270_\355\227\244\354\226\264\353\223\234\353\235\274\354\235\264\354\226\264(\354\240\225\353\251\264).png" "b/Assets/Prefabs/\354\230\244\353\270\214\354\240\235\355\212\270_\355\227\244\354\226\264\353\223\234\353\235\274\354\235\264\354\226\264(\354\240\225\353\251\264).png" new file mode 100644 index 0000000..fcf33bd Binary files /dev/null and "b/Assets/Prefabs/\354\230\244\353\270\214\354\240\235\355\212\270_\355\227\244\354\226\264\353\223\234\353\235\274\354\235\264\354\226\264(\354\240\225\353\251\264).png" differ diff --git "a/Assets/Prefabs/\354\230\244\353\270\214\354\240\235\355\212\270_\355\227\244\354\226\264\353\223\234\353\235\274\354\235\264\354\226\264(\354\240\225\353\251\264).png.meta" "b/Assets/Prefabs/\354\230\244\353\270\214\354\240\235\355\212\270_\355\227\244\354\226\264\353\223\234\353\235\274\354\235\264\354\226\264(\354\240\225\353\251\264).png.meta" new file mode 100644 index 0000000..18f26d5 --- /dev/null +++ "b/Assets/Prefabs/\354\230\244\353\270\214\354\240\235\355\212\270_\355\227\244\354\226\264\353\223\234\353\235\274\354\235\264\354\226\264(\354\240\225\353\251\264).png.meta" @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: c6bc141ec427697498158281f07ba0a9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/isometric scene.unity b/Assets/Scenes/isometric scene.unity index 42956c1..cca5dd5 100644 --- a/Assets/Scenes/isometric scene.unity +++ b/Assets/Scenes/isometric scene.unity @@ -556,6 +556,7 @@ MonoBehaviour: towerTemplates: - {fileID: 11400000, guid: ba188ac3d4bece146bc102e7763e57e5, type: 2} - {fileID: 11400000, guid: 7d36bbf111c9b2f4d9aa3fbe62191b72, type: 2} + - {fileID: 11400000, guid: 42202a8d6ff0484419452be243e9d106, type: 2} enemySpawner: {fileID: 1147920979} grid: {fileID: 859478659} playerGold: {fileID: 1581344736} @@ -650,6 +651,140 @@ MonoBehaviour: updateContinuously: 1 updateOnStart: 1 includeChildren: 1 +--- !u!1 &185855365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 185855366} + - component: {fileID: 185855369} + - component: {fileID: 185855368} + - component: {fileID: 185855367} + m_Layer: 5 + m_Name: ButtonTower03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &185855366 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185855365} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 740696203} + - {fileID: 1646052604} + m_Father: {fileID: 1867004582} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &185855367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185855365} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 185855368} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 154468004} + m_TargetAssemblyTypeName: TowerSpawner, Assembly-CSharp + m_MethodName: ReadyToSpawnTower + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &185855368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185855365} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.38013974, g: 0.4009434, b: 0.39036527, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &185855369 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 185855365} + m_CullTransparentMesh: 1 --- !u!1 &237603021 GameObject: m_ObjectHideFlags: 0 @@ -44519,6 +44654,140 @@ MonoBehaviour: mediumToHighThreshold: 0.66 playerExperience: {fileID: 1581344737} targetImage: {fileID: 2049949287} +--- !u!1 &740696202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740696203} + - component: {fileID: 740696205} + - component: {fileID: 740696204} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &740696203 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740696202} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 185855366} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 2.5} + m_SizeDelta: {x: 0, y: -5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &740696204 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740696202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: $7 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4293059309 + m_fontColor: {r: 0.9292453, g: 0.885413, b: 0.885413, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &740696205 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740696202} + m_CullTransparentMesh: 1 --- !u!114 &809933616 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 1229078846868282744, guid: 3dbcabafd138ac343ab3079802a95348, type: 3} @@ -44944,7 +45213,7 @@ MonoBehaviour: minActivationThreshold: 30 maxActivationThreshold: 80 sampleWindow: 128 - scaledVolume: 50 + scaledVolume: 73 pauseGameOnActivation: 1 fatigueToDifficultyMultiplier: serializedVersion: 2 @@ -44957,7 +45226,7 @@ MonoBehaviour: placementIndicatorColor: {r: 0.9371345, g: 0.9481132, b: 0.4740566, a: 0.5} playerActivationEnabled: 1 oneTimeUseOnly: 1 - playerActiveTime: 10 + playerActiveTime: 30 placementInstructionUI: {fileID: 0} debugText: {fileID: 0} showDebugInfo: 1 @@ -45650,11 +45919,15 @@ MonoBehaviour: - enemyPrefab: {fileID: 8385226143460851807, guid: 6ffdc11c948d0284ea7c1945fee301b9, type: 3} count: 5 spawnTime: 2 - spawnPoint: {fileID: 981001447} + spawnPoint: {fileID: 2112826239} - enemyPrefab: {fileID: 3414869680251919639, guid: 5ee286c5b97c2fd4f9a183e2ef82b0f3, type: 3} count: 3 spawnTime: 10 - spawnPoint: {fileID: 2112826239} + spawnPoint: {fileID: 981001447} + - enemyPrefab: {fileID: 8385226143460851807, guid: 8baaacbdeee084d46b28c6a10405ba2c, type: 3} + count: 8 + spawnTime: 10 + spawnPoint: {fileID: 1163419457} delayBeforeNextWave: 0 baseDuration: 20 enemySpawner: {fileID: 1147920979} @@ -45682,12 +45955,16 @@ MonoBehaviour: waves: - waveName: enemyGroups: - - enemyPrefab: {fileID: 0} - count: 0 - spawnTime: 0 - spawnPoint: {fileID: 0} - delayBeforeNextWave: 0 - baseDuration: 0 + - enemyPrefab: {fileID: 8385226143460851807, guid: 459970b3cd6480340ae2f709e3c03d44, type: 3} + count: 8 + spawnTime: 0.5 + spawnPoint: {fileID: 1163419457} + - enemyPrefab: {fileID: 3414869680251919639, guid: 5ee286c5b97c2fd4f9a183e2ef82b0f3, type: 3} + count: 4 + spawnTime: 8 + spawnPoint: {fileID: 981001447} + delayBeforeNextWave: 2 + baseDuration: 15 defaultWaves: [] waveSystem: {fileID: 1147920980} dayCounterSystem: {fileID: 1581344740} @@ -45941,17 +46218,13 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 172438930} m_Modifications: - - target: {fileID: 1288222789276926307, guid: 44ba641023229ea46bb80c519a00bf60, type: 3} - propertyPath: maxHP - value: 50 - objectReference: {fileID: 0} - target: {fileID: 2609580779989615194, guid: 44ba641023229ea46bb80c519a00bf60, type: 3} propertyPath: m_LocalPosition.x - value: 13.62 + value: 10.85 objectReference: {fileID: 0} - target: {fileID: 2609580779989615194, guid: 44ba641023229ea46bb80c519a00bf60, type: 3} propertyPath: m_LocalPosition.y - value: 1.07 + value: 1.09 objectReference: {fileID: 0} - target: {fileID: 2609580779989615194, guid: 44ba641023229ea46bb80c519a00bf60, type: 3} propertyPath: m_LocalPosition.z @@ -45989,10 +46262,6 @@ PrefabInstance: propertyPath: m_Name value: Rice objectReference: {fileID: 0} - - target: {fileID: 7784308354496575444, guid: 44ba641023229ea46bb80c519a00bf60, type: 3} - propertyPath: m_TagString - value: Food - objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -55313,11 +55582,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8625425667629719472, guid: 5c40c302b42ba7e49a9792fbdbc9eca1, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: -1 objectReference: {fileID: 0} - target: {fileID: 8625425667629719472, guid: 5c40c302b42ba7e49a9792fbdbc9eca1, type: 3} propertyPath: m_LocalPosition.z - value: 0 + value: -1 objectReference: {fileID: 0} - target: {fileID: 8625425667629719472, guid: 5c40c302b42ba7e49a9792fbdbc9eca1, type: 3} propertyPath: m_LocalRotation.w @@ -55969,7 +56238,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 885a8c24fafb4fc4fad6186d899aeb41, type: 3} m_Name: m_EditorClassIdentifier: - currentGold: 300 + currentGold: 150 maxFatigue: 100 currentFatigue: 0 fatiguePerTower: 10 @@ -56375,6 +56644,81 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: 68787472} m_SourcePrefab: {fileID: 100100000, guid: b58705ae47db919469a26088aca18287, type: 3} +--- !u!1 &1646052603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1646052604} + - component: {fileID: 1646052606} + - component: {fileID: 1646052605} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1646052604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646052603} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 185855366} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -10} + m_SizeDelta: {x: 88, y: 59} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1646052605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646052603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1646052606 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646052603} + m_CullTransparentMesh: 1 --- !u!114 &1718113225 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 1229078846868282744, guid: 3dbcabafd138ac343ab3079802a95348, type: 3} @@ -56426,6 +56770,7 @@ RectTransform: m_Children: - {fileID: 1691278} - {fileID: 1498566254} + - {fileID: 185855366} m_Father: {fileID: 469968503} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0.5} @@ -56525,6 +56870,7 @@ MonoBehaviour: towerButtons: - {fileID: 1691279} - {fileID: 1498566255} + - {fileID: 185855367} --- !u!1 &1913536161 GameObject: m_ObjectHideFlags: 0 @@ -56731,7 +57077,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4476800047696795335, guid: 580e3cbb4d3d8e5478065d094194784f, type: 3} propertyPath: m_AnchoredPosition.x - value: 34.3 + value: 34.30005 objectReference: {fileID: 0} - target: {fileID: 4476800047696795335, guid: 580e3cbb4d3d8e5478065d094194784f, type: 3} propertyPath: m_AnchoredPosition.y diff --git a/Assets/Scripts/Movement2D.cs b/Assets/Scripts/Movement2D.cs deleted file mode 100644 index 9e9c295..0000000 --- a/Assets/Scripts/Movement2D.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class Movement2D : MonoBehaviour -{ - [SerializeField] - private float moveSpeed = 1.0f; - [SerializeField] - private Vector3 moveDirection = Vector3.zero; - - private float originalMoveSpeed; // ̵ ӵ - private bool isSlowed = false; // - private float slowTimer = 0f; // ð Ÿ̸ - private float currentSlowAmount = 0f; // - - public float MoveSpeed => moveSpeed; - - private void Awake() - { - // ʱ ̵ ӵ - originalMoveSpeed = moveSpeed; - } - - // Update is called once per frame - void Update() - { - transform.position += moveDirection * moveSpeed * Time.deltaTime; - - // ȿ ̶ Ÿ̸ Ʈ - if (isSlowed) - { - slowTimer -= Time.deltaTime; - - // Ÿ̸Ӱ ̵ ӵ - if (slowTimer <= 0) - { - ResetMoveSpeed(); - } - } - } - - public void MoveTo(Vector3 direction) - { - moveDirection = direction; - } - - // ̵ ӵ ȿ - public void ApplySlow(float slowAmount, float duration) - { - // Ӻ ̰ų, ȿ 쿡 - if (slowAmount > currentSlowAmount || slowTimer < 0.5f) - { - // ȿ ó Ǹ ӵ - if (!isSlowed) - { - originalMoveSpeed = moveSpeed; - } - - // ο ȿ - currentSlowAmount = slowAmount; - moveSpeed = originalMoveSpeed * (1 - slowAmount); - slowTimer = duration; - isSlowed = true; - } - } - - // ̵ ӵ - public void ResetMoveSpeed() - { - moveSpeed = originalMoveSpeed; - isSlowed = false; - currentSlowAmount = 0f; - } -} \ No newline at end of file diff --git a/Assets/Scripts/Projectile/ProjectileComboDebuff.cs b/Assets/Scripts/Projectile/ProjectileComboDebuff.cs deleted file mode 100644 index c8edf60..0000000 --- a/Assets/Scripts/Projectile/ProjectileComboDebuff.cs +++ /dev/null @@ -1,112 +0,0 @@ -// ̵ ӵ ӵ ÿ ҽŰ ߻ü ( ) -using UnityEngine; - -public class ProjectileComboDebuff : ProjectileBase -{ - [SerializeField] private float effectRadius = 2f; - [SerializeField] private string enemyTag = "Enemy"; - [SerializeField] private float moveSpeed = 5f; - - [Header("̵ ӵ ȿ")] - [SerializeField] private float moveSlowAmount = 0.3f; // ̵ ӵ (0.3 = 30% ) - [SerializeField] private float moveSlowDuration = 4.0f; // ̵ ӵ ð - - [Header(" ӵ ȿ")] - [SerializeField] private float attackSlowAmount = 0.25f; // ӵ (0.25 = 25% ) - [SerializeField] private float attackSlowDuration = 3.0f; // ӵ ð - - [Header("ȿ ðȭ")] - [SerializeField] private GameObject debuffEffectPrefab; // ȿ ðȭ () - - public override void Process() - { - // Ÿ ó - if (target == null) return; - - // ߻ü Ÿٿ ߴ Ȯ - float distance = Vector3.Distance(transform.position, target.position); - if (distance < 0.1f) - { - // ȿ - ApplyEffectInArea(target.position); - - // Ÿ ȿ - if (hitEffect != null) - { - Instantiate(hitEffect, transform.position, Quaternion.identity); - } - - // ߻ü ı - Destroy(gameObject); - } - else - { - // Ÿ ̵ - MoveToTarget(); - } - } - - private void ApplyEffectInArea(Vector3 centerPosition) - { - // ȿ ݶ̴ - Collider2D[] colliders = Physics2D.OverlapCircleAll(centerPosition, effectRadius); - - foreach (Collider2D collider in colliders) - { - if (collider.CompareTag(enemyTag)) - { - GameObject enemy = collider.gameObject; - - // ⺻ - EnemyHP enemyHP = enemy.GetComponent(); - if (enemyHP != null) - { - enemyHP.TakeDamage(damage); - } - - // ̵ ӵ ȿ - Movement2D movement = enemy.GetComponent(); - if (movement != null) - { - movement.ApplySlow(moveSlowAmount, moveSlowDuration); - } - - // ӵ ȿ - EnemyAttack enemyAttack = enemy.GetComponent(); - if (enemyAttack != null) - { - enemyAttack.ApplyAttackSlow(attackSlowAmount, attackSlowDuration); - } - - // ȿ ðȭ () - if (debuffEffectPrefab != null) - { - GameObject effectObj = Instantiate(debuffEffectPrefab, enemy.transform.position, Quaternion.identity); - effectObj.transform.SetParent(enemy.transform); - Destroy(effectObj, Mathf.Max(moveSlowDuration, attackSlowDuration)); - } - } - } - } - - private void MoveToTarget() - { - // Ÿ ̵ - Vector3 direction = (target.position - transform.position).normalized; - transform.position += direction * moveSpeed * Time.deltaTime; - - // ߻ü ȸ () - float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; - transform.rotation = Quaternion.Euler(0, 0, angle); - } - - // Ϳ ðȭ - private void OnDrawGizmosSelected() - { - if (target != null) - { - Gizmos.color = Color.yellow; - Gizmos.DrawWireSphere(target.position, effectRadius); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/TowerWeapon.cs b/Assets/Scripts/TowerWeapon.cs deleted file mode 100644 index 76c78a0..0000000 --- a/Assets/Scripts/TowerWeapon.cs +++ /dev/null @@ -1,381 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public enum WeaponState { SearchTarget = 0, AttackToTarget } // Ž - -public class TowerWeapon : MonoBehaviour -{ - [SerializeField] - private GameObject projectilePrefab; // ߻ü - [SerializeField] - private Transform spawnPoint; - - [Header("Time Settings")] - [SerializeField] private bool attackEnabled = true; // - - private TowerTemplate towerTemplate; - private int level = 0; - private WeaponState weaponState = WeaponState.SearchTarget; - private Transform attackTarget = null; - private SpriteRenderer spriteRenderer; - private PlayerGold playerGold; - private EnemySpawner enemySpawner; - private Tile ownerTile; - private IsometricPositionHandler isometricPosition; - - // ¿ - private bool isFlipped = false; - private SpriteRenderer[] childRenderers; - - public Sprite TowerSprite => towerTemplate.weapons[level].sprite; - public float Damage => towerTemplate.weapons[level].damage; - public float Rate => towerTemplate.weapons[level].rate; - public float Range => towerTemplate.weapons[level].range; - public int Level => level + 1; - public int MaxLevel => towerTemplate.weapons.Count; - - // ¿ Ƽ - public bool IsFlipped => isFlipped; - - private void Awake() - { - spriteRenderer = GetComponent(); - childRenderers = GetComponentsInChildren(); - isometricPosition = GetComponent(); - - // IsometricPositionHandler ߰ - if (isometricPosition == null) - { - isometricPosition = gameObject.AddComponent(); - } - } - - private void SpawnProjectile() - { - // ȰȭǾ ߻ü Ұ - if (!attackEnabled) return; - - if (projectilePrefab == null) - { - Debug.LogError("No projectile prefab assigned to tower"); - return; - } - - Debug.Log($"Spawning projectile at {spawnPoint.position}"); - - // ߻ ġ z ġ (̼ҸƮ ) - Vector3 spawnPos = spawnPoint.position; - spawnPos.z = spawnPos.y; - - GameObject projectileObj = Instantiate(projectilePrefab, spawnPos, Quaternion.identity); - - // ߻ü IsometricPositionHandler ߰ ( ) - IsometricPositionHandler projectileIsometric = projectileObj.GetComponent(); - if (projectileIsometric == null) - { - projectileIsometric = projectileObj.AddComponent(); - } - - // ProjectileBase Ʈ - ProjectileBase projectileScript = projectileObj.GetComponent(); - - if (projectileScript == null) - { - Debug.LogError($"No ProjectileBase component found on prefab: {projectilePrefab.name}"); - Destroy(projectileObj); - return; - } - - // ¿ - if (isFlipped) - { - SpriteRenderer projRenderer = projectileObj.GetComponent(); - if (projRenderer != null) - { - projRenderer.flipX = true; - } - else - { - // Ʈ Ϸ - Vector3 scale = projectileObj.transform.localScale; - scale.x = -Mathf.Abs(scale.x); - projectileObj.transform.localScale = scale; - } - - // ߻ (ʿ) - ProjectileStraight straightProjectile = projectileObj.GetComponent(); - if (straightProjectile != null) - { - // SetFlipDirection ޼ҵ尡 ִ Ȯϰ ȣ - System.Reflection.MethodInfo methodInfo = straightProjectile.GetType().GetMethod("SetFlipDirection"); - if (methodInfo != null) - { - methodInfo.Invoke(straightProjectile, new object[] { true }); - } - } - } - - // ߻ü - projectileScript.Setup(attackTarget, towerTemplate.weapons[level].damage); - } - - public void Setup(TowerTemplate template, EnemySpawner enemySpawner, PlayerGold playerGold, Vector3 worldPosition) - { - towerTemplate = template; - Debug.Log("TowerWeapon Setup called!"); - this.enemySpawner = enemySpawner; - this.playerGold = playerGold; - - // ̼ҸƮ 信 ° z ġ - worldPosition.z = worldPosition.y; - transform.position = worldPosition; - - spriteRenderer.sprite = towerTemplate.weapons[level].sprite; - ChangeState(WeaponState.SearchTarget); - } - - // ¿ ޼ҵ (ܺο ȣ ) - public void SetFlipped(bool flipped) - { - isFlipped = flipped; - - // Ʈ - UpdateFlipState(); - } - - // ¿ - public void ToggleFlip() - { - isFlipped = !isFlipped; - UpdateFlipState(); - } - - // ¿ Ʈ - private void UpdateFlipState() - { - // ⺻ Ʈ - if (spriteRenderer != null) - { - spriteRenderer.flipX = isFlipped; - } - - // ڽ Ʈ - foreach (SpriteRenderer renderer in childRenderers) - { - if (renderer != null && renderer != spriteRenderer) // ߺ - { - renderer.flipX = isFlipped; - } - } - - // Ʈ ų ߰ ʿ ϵ - if (spriteRenderer == null || !spriteRenderer.flipX) - { - Vector3 scale = transform.localScale; - scale.x = isFlipped ? -Mathf.Abs(scale.x) : Mathf.Abs(scale.x); - transform.localScale = scale; - } - - // Ʈ ġ (ʿ) - if (spawnPoint != null) - { - // Ʈ ġ ִ , x ʿ - // Ȳ ڵ Ȱȭ - /* - Vector3 localPos = spawnPoint.localPosition; - localPos.x = isFlipped ? -Mathf.Abs(localPos.x) : Mathf.Abs(localPos.x); - spawnPoint.localPosition = localPos; - */ - } - } - - public void ChangeState(WeaponState newstate) - { - Debug.Log($"Changing state to {newstate}"); - StopCoroutine(weaponState.ToString()); - weaponState = newstate; - StartCoroutine(weaponState.ToString()); - } - - // Update is called once per frame - private void Update() - { - if (attackTarget != null) - { - // RotateToTarget(); // ڵ - FlipToTarget(); // ڵ - ȸ ¿ - } - - // ̼ҸƮ 信 ° z ġ ( ) - Vector3 position = transform.position; - position.z = position.y; - transform.position = position; - } - - // RotateToTarget ޼带 FlipToTarget ü - private void FlipToTarget() - { - if (attackTarget == null) return; - - // ġ Ÿ ġ Ͽ - float dx = attackTarget.position.x - transform.position.x; - - // dx ʿ ְ, ʿ - bool shouldFaceLeft = dx < 0; - - // Ÿ ִ Ȯ (flipX true ) - bool isCurrentlyFacingLeft = false; - - // Ʈ Ȯ - if (spriteRenderer != null) - { - isCurrentlyFacingLeft = spriteRenderer.flipX; - } - else - { - // Ʈ localScale.x Ȯ - isCurrentlyFacingLeft = transform.localScale.x < 0; - } - - // ٸ - if (shouldFaceLeft != isCurrentlyFacingLeft) - { - // ¿ - if (spriteRenderer != null) - { - spriteRenderer.flipX = shouldFaceLeft; - } - else - { - // Ʈ - Vector3 scale = transform.localScale; - scale.x = shouldFaceLeft ? -Mathf.Abs(scale.x) : Mathf.Abs(scale.x); - transform.localScale = scale; - } - - // ڽ Ʈ - foreach (SpriteRenderer renderer in childRenderers) - { - if (renderer != null && renderer != spriteRenderer) - { - renderer.flipX = shouldFaceLeft; - } - } - - // isFlipped Ʈ - isFlipped = shouldFaceLeft; - } - - // ȸ - ڵ - // transform.rotation = Quaternion.Euler(0, 0, degree); - } - - private IEnumerator SearchTarget() - { - while (true) - { - // Ȱȭ Ǿ Ž ϰ - if (!attackEnabled) - { - yield return new WaitForSeconds(0.5f); - continue; - } - - float closetDistSqr = Mathf.Infinity; - for (int i = 0; i < enemySpawner.EnemyList.Count; i++) // ˻ - { - float distance = Vector3.Distance(enemySpawner.EnemyList[i].transform.position, transform.position); - if (distance <= towerTemplate.weapons[level].range && distance <= closetDistSqr) - { - closetDistSqr = distance; - attackTarget = enemySpawner.EnemyList[i].transform; - } - } - if (attackTarget != null && attackEnabled) - { - Debug.Log($"Target found: {attackTarget.name}"); - ChangeState(WeaponState.AttackToTarget); // ش Ÿ - } - - yield return null; - } - } - - private IEnumerator AttackToTarget() - { - while (true) - { - // ȰȭǾ Ž · ư - if (!attackEnabled) - { - ChangeState(WeaponState.SearchTarget); - break; - } - - if (attackTarget == null) // target ִ Ȯ - { - ChangeState(WeaponState.SearchTarget); - break; - } - - float distance = Vector3.Distance(attackTarget.position, transform.position); - if (distance > towerTemplate.weapons[level].range) //target ο Ž - { - attackTarget = null; - ChangeState(WeaponState.SearchTarget); - break; - } - - yield return new WaitForSeconds(towerTemplate.weapons[level].rate); - - SpawnProjectile(); // ߻ü - } - } - - public bool Upgrade() - { - if (level + 1 >= towerTemplate.weapons.Count || playerGold.CurrentGold < towerTemplate.weapons[level + 1].cost) - { - return false; - } - level++; - spriteRenderer.sprite = towerTemplate.weapons[level].sprite; - playerGold.CurrentGold -= towerTemplate.weapons[level].cost; - - // ׷̵ ¿ - if (isFlipped) - { - UpdateFlipState(); - } - - return true; - } - - public void Sell() - { - playerGold.CurrentGold += towerTemplate.weapons[level].sell; - - Vector3Int cellposition = FindObjectOfType().WorldToCell(transform.position); - FindObjectOfType().RemoveTower(cellposition); - - Destroy(gameObject); - } - - // Ȱȭ/Ȱȭ ޼ҵ - public void SetAttackEnabled(bool enabled) - { - attackEnabled = enabled; - - if (enabled) - { - // Ȱȭ Ÿ Ž - ChangeState(WeaponState.SearchTarget); - } - else - { - // Ȱȭ ڷƾ - StopAllCoroutines(); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/WaveSystem.cs b/Assets/Scripts/WaveSystem.cs deleted file mode 100644 index db9f4cd..0000000 --- a/Assets/Scripts/WaveSystem.cs +++ /dev/null @@ -1,524 +0,0 @@ -using UnityEngine; -using System.Collections; -using System.Collections.Generic; - -[System.Serializable] -public struct EnemyGroup -{ - [Header("⺻ ")] - [Tooltip(" ")] - public GameObject enemyPrefab; // - [Tooltip(" ")] - public int count; // - [Tooltip(" ()")] - public float spawnTime; // - - [Header("ġ ")] - [Tooltip("Ư ġ ( ⺻ ġ )")] - public Transform spawnPoint; // ġ (null̸ ⺻ ġ) -} - -[System.Serializable] -public struct Wave -{ - public string waveName; // ̺ ̸ - public EnemyGroup[] enemyGroups; // ׷ 迭 - public float delayBeforeNextWave; // ̺ - public float baseDuration; // ̺ ⺻ ð () -} - -public class WaveSystem : MonoBehaviour -{ - [SerializeField] - private Wave[] waves; // ̺ 迭 - - [SerializeField] - private EnemySpawner enemySpawner; // - - [SerializeField] - private PlayerGold playerGold; // ÷̾ /Ƿε - - [SerializeField] - private PlayerExperience playerExperience; // ÷̾ ġ - - [SerializeField] - private float defaultWaveDuration = 30f; // ⺻ ̺ ð () - - [SerializeField] - private bool cleanupEnemiesAfterAllWaves = true; // ̺ Ϸ - - [SerializeField] - private float finalCleanupDelay = 3f; // ̺ Ϸ ű ð () - - [SerializeField] - private bool showDebugMessages = true; // ޽ ǥ - - private int currentWaveIndex = -1; // ̺ ε - private bool isWaveActive = false; // ̺ Ȱȭ - private float waveTimer = 0f; // ̺ Ÿ̸ - private int enemiesKilledInWave = 0; // ̺ óġ - private bool allWavesCompleted = false; // ̺ Ϸ - - // ̺ ̺Ʈ Ʈ - public delegate void WaveEventHandler(int waveNumber, string waveName); - public event WaveEventHandler OnWaveStart; // ̺ ̺Ʈ - public event WaveEventHandler OnWaveEnd; // ̺ ̺Ʈ - - // ̺ Ϸ ̺Ʈ Ʈ - public delegate void AllWavesCompletedHandler(); - public event AllWavesCompletedHandler OnAllWavesCompleted; // ̺ Ϸ ̺Ʈ - - // ̺ ȣ Ƽ (1 ) - public int CurrentWave => currentWaveIndex + 1; - - // ִ ̺ Ƽ - public int MaxWave => waves.Length; - - // ̺ ̸ Ƽ - public string CurrentWaveName => currentWaveIndex >= 0 && currentWaveIndex < waves.Length ? - waves[currentWaveIndex].waveName : "None"; - - // ̺ Ϸ Ƽ - public bool AllWavesCompleted => allWavesCompleted; - - // ̺ ð Ƽ - public float CurrentWaveDuration - { - get - { - if (currentWaveIndex < 0 || currentWaveIndex >= waves.Length) - return defaultWaveDuration; - - // ̺꿡 ð , ⺻ - float baseDuration = waves[currentWaveIndex].baseDuration > 0 ? - waves[currentWaveIndex].baseDuration : defaultWaveDuration; - - // ÷̾ Ƿε ̺ ӽð - if (playerGold != null) - { - return playerGold.GetWaveDuration(baseDuration); - } - - return baseDuration; - } - } - - // ̺ ð Ƽ - public float RemainingWaveTime => Mathf.Max(0, CurrentWaveDuration - waveTimer); - - // ̺ Ƽ (0~1) - public float WaveProgress => Mathf.Clamp01(waveTimer / CurrentWaveDuration); - - private void Start() - { - // ʱȭ - InitializeReferences(); - - // ڵ ù ̺ (ʿ ּ ) - // StartWave(); - } - - private void InitializeReferences() - { - if (playerGold == null) - { - playerGold = FindObjectOfType(); - if (playerGold == null) - { - Debug.LogWarning("PlayerGold ã ϴ!"); - } - } - - if (playerExperience == null) - { - playerExperience = FindObjectOfType(); - } - - if (enemySpawner == null) - { - enemySpawner = FindObjectOfType(); - if (enemySpawner == null) - { - Debug.LogError("EnemySpawner ã ϴ!"); - } - } - } - - private void Update() - { - if (isWaveActive) - { - // ̺ Ÿ̸ Ʈ - waveTimer += Time.deltaTime; - - // ̺ ð Ǿų ó - if (waveTimer >= CurrentWaveDuration || - (enemySpawner.EnemyList.Count == 0 && enemySpawner.CurrentEnemyCount <= 0)) - { - EndCurrentWave(); - } - } - } - - // ̺ ޼ҵ - private void EndCurrentWave() - { - if (!isWaveActive) return; - - isWaveActive = false; - - // ̺ ̺Ʈ ߻ - OnWaveEnd?.Invoke(CurrentWave, CurrentWaveName); - - LogDebug($"̺ {CurrentWave} ! óġ : {enemiesKilledInWave}"); - - // ġ - if (playerExperience != null) - { - playerExperience.AddExperienceForWaveCompletion(enemiesKilledInWave); - } - - // Ƿε (߰ κ) - if (playerGold != null) - { - playerGold.ResetFatigue(); - LogDebug("̺ Ƿε µ"); - } - - // óġ ʱȭ - enemiesKilledInWave = 0; - - // ̺갡 ִ Ȯ - if (currentWaveIndex < waves.Length - 1) - { - // ̺ غ - float delay = waves[currentWaveIndex].delayBeforeNextWave; - StartCoroutine(StartNextWaveAfterDelay(delay)); - } - else - { - // ̺ Ϸ - HandleAllWavesCompleted(); - } - } - - // ̺ Ϸ ó - private void HandleAllWavesCompleted() - { - allWavesCompleted = true; - LogDebug(" ̺갡 ϷǾϴ!"); - - // ̺ Ϸ ̺Ʈ ߻ - OnAllWavesCompleted?.Invoke(); - - // ̺ Ϸ - if (cleanupEnemiesAfterAllWaves) - { - StartCoroutine(CleanupAllEnemiesAfterDelay()); - } - - // Ŭ ó (ʿ ߰) - // GameManager.Instance.HandleGameWin(); - } - - // ̺ Ϸ ڷƾ - private IEnumerator CleanupAllEnemiesAfterDelay() - { - // ð - yield return new WaitForSeconds(finalCleanupDelay); - - int enemyCount = enemySpawner.EnemyList.Count; - if (enemyCount > 0) - { - LogDebug($" ̺ Ϸ {enemyCount} ..."); - - // Ʈ Ͽ ȸ - List enemiesToDestroy = new List(enemySpawner.EnemyList); - - foreach (Enemy enemy in enemiesToDestroy) - { - if (enemy != null) - { - // (Kill Ÿ - /ġ ) - enemy.gold = 0; // - enemy.OnDie(EnemyDestroyType.Kill); - - // ణ ð ΰ Ͽ ð ȿ () - yield return new WaitForSeconds(0.05f); - } - } - - LogDebug($" ̺ Ϸ Ϸ"); - } - } - - // ̺ óġ ޼ҵ - public void OnEnemyKilled() - { - enemiesKilledInWave++; - } - - // ̺ ڷƾ - private IEnumerator StartNextWaveAfterDelay(float delay) - { - yield return new WaitForSeconds(delay); - StartWave(); - } - - // ̺ ޼ҵ - public void StartWave() - { - if (!isWaveActive && currentWaveIndex < waves.Length - 1) - { - currentWaveIndex++; - - float waveDuration = CurrentWaveDuration; - LogDebug($"̺ {CurrentWave} : {CurrentWaveName}, ð: {waveDuration} (Ƿε: {playerGold?.FatigueRatio:P0})"); - - // ̺ ̺Ʈ ߻ - OnWaveStart?.Invoke(CurrentWave, CurrentWaveName); - - // - enemySpawner.StartWave(waves[currentWaveIndex]); - - // óġ ̺Ʈ - enemySpawner.OnEnemyDestroyed += OnEnemyDestroyed; - - isWaveActive = true; - waveTimer = 0f; // Ÿ̸ ʱȭ - } - else if (currentWaveIndex >= waves.Length - 1) - { - LogDebug(" ̻ ̺갡 ϴ!"); - } - } - - // óġ ̺Ʈ ڵ鷯 - private void OnEnemyDestroyed(Transform enemy) - { - // óġ ȣ - if (isWaveActive) - { - OnEnemyKilled(); - } - } - - // Ǵ ȣ - public void ResetWaveSystem() - { - StopAllCoroutines(); - currentWaveIndex = -1; - isWaveActive = false; - waveTimer = 0f; - enemiesKilledInWave = 0; - allWavesCompleted = false; - - // Ƿε ʱȭ - if (playerGold != null) - { - playerGold.ResetFatigue(); - } - - LogDebug("̺ ý "); - } - - // α ޼ҵ - private void LogDebug(string message) - { - if (showDebugMessages) - { - Debug.Log($"[WaveSystem] {message}"); - } - } - - // OnDestroy: ̺Ʈ - private void OnDestroy() - { - if (enemySpawner != null) - { - enemySpawner.OnEnemyDestroyed -= OnEnemyDestroyed; - } - } - - // ̺긦 ϴ ޼ҵ - public void SetWaves(Wave[] newWaves) - { - if (newWaves == null || newWaves.Length == 0) - { - Debug.LogWarning("Ϸ ̺갡 ֽϴ."); - return; - } - - // ̺갡 ִ Ȯ - if (isWaveActive) - { - Debug.LogWarning("̺갡 ̺긦 ϴ."); - return; - } - - // ̺ - Wave[] oldWaves = waves; - - // ̺ - waves = newWaves; - - // ̺ ʱȭ - ResetWaveSystem(); - - Debug.Log($"̺ Ǿϴ. ̺ : {waves.Length}"); - - // ̺ (׿) - for (int i = 0; i < waves.Length; i++) - { - Debug.Log($"̺ {i + 1}: {waves[i].waveName}, ׷ : {waves[i].enemyGroups.Length}"); - } - } - - // ̺ ߰ ޼ҵ - public void AddWaves(Wave[] additionalWaves) - { - if (additionalWaves == null || additionalWaves.Length == 0) - { - Debug.LogWarning("߰Ϸ ̺갡 ֽϴ."); - return; - } - - // ̺ ̺ - Wave[] combinedWaves = new Wave[waves.Length + additionalWaves.Length]; - - // ̺ - for (int i = 0; i < waves.Length; i++) - { - combinedWaves[i] = waves[i]; - } - - // ̺ ߰ - for (int i = 0; i < additionalWaves.Length; i++) - { - combinedWaves[waves.Length + i] = additionalWaves[i]; - } - - // յ ̺ - waves = combinedWaves; - - Debug.Log($"̺갡 ߰Ǿϴ. ̺ : {waves.Length}"); - } - - // Ư ε ̺ - public Wave GetWave(int index) - { - if (index < 0 || index >= waves.Length) - { - Debug.LogWarning($"ȿ ̺ ε: {index}, ̺ : {waves.Length}"); - return default(Wave); - } - - return waves[index]; - } - - // ̺ Ͽ - public Wave GetCurrentWaveInfo() - { - if (currentWaveIndex < 0 || currentWaveIndex >= waves.Length) - { - Debug.LogWarning(" Ȱȭ ̺갡 ϴ."); - return default(Wave); - } - - return waves[currentWaveIndex]; - } - - // ̺ () - public Wave GenerateRandomWave(int difficulty = 1) - { - // ̺ - Wave randomWave = new Wave(); - - // ̺ ̸ - randomWave.waveName = $"Random Wave (Difficulty {difficulty})"; - - // ⺻ ð - randomWave.baseDuration = 60f + (difficulty * 10f); - - // ׷ - int groupCount = Mathf.Max(1, Random.Range(1, 3 + difficulty / 2)); - randomWave.enemyGroups = new EnemyGroup[groupCount]; - - // (Resources ) - GameObject[] enemyPrefabs = Resources.LoadAll("Prefabs/Enemies"); - - // ̺ ȯ - if (enemyPrefabs == null || enemyPrefabs.Length == 0) - { - Debug.LogWarning(" ̺ ã ϴ."); - return randomWave; - } - - // ׷ - for (int i = 0; i < groupCount; i++) - { - EnemyGroup group = new EnemyGroup(); - - // - group.enemyPrefab = enemyPrefabs[Random.Range(0, enemyPrefabs.Length)]; - - // (̵ ) - group.count = Mathf.Max(3, 5 + difficulty * 2 + Random.Range(-2, 3)); - - // - group.spawnTime = Mathf.Max(0.5f, 2f - (difficulty * 0.1f) + Random.Range(-0.2f, 0.2f)); - - // ׷ ߰ - randomWave.enemyGroups[i] = group; - } - - // ̺ - randomWave.delayBeforeNextWave = 5f + Random.Range(0f, 5f); - - return randomWave; - } - - // ̺ Ư Ӽ - public void AdjustWaveDifficulty(float difficultyMultiplier) - { - // ̺ 迭 ( ) - Wave[] adjustedWaves = new Wave[waves.Length]; - - for (int i = 0; i < waves.Length; i++) - { - // ̺ - adjustedWaves[i] = waves[i]; - - // ̺ ð - if (adjustedWaves[i].baseDuration > 0) - { - adjustedWaves[i].baseDuration *= Mathf.Max(0.5f, difficultyMultiplier); - } - - // ׷ - EnemyGroup[] adjustedGroups = new EnemyGroup[adjustedWaves[i].enemyGroups.Length]; - - for (int j = 0; j < adjustedWaves[i].enemyGroups.Length; j++) - { - // ׷ - adjustedGroups[j] = adjustedWaves[i].enemyGroups[j]; - - // (ü ҰϹǷ ο νϽ ) - int newCount = Mathf.Max(1, Mathf.RoundToInt(adjustedGroups[j].count * difficultyMultiplier)); - adjustedGroups[j].count = newCount; - - // ð (ݺ) - float newSpawnTime = Mathf.Max(0.2f, adjustedGroups[j].spawnTime / Mathf.Max(0.5f, difficultyMultiplier)); - adjustedGroups[j].spawnTime = newSpawnTime; - } - - // ׷ - adjustedWaves[i].enemyGroups = adjustedGroups; - } - - // ̺ Ʈ - waves = adjustedWaves; - - Debug.Log($"̺ ̵ Ǿϴ. : {difficultyMultiplier}"); - } -} \ No newline at end of file diff --git a/Assets/_Project.meta b/Assets/_Project.meta new file mode 100644 index 0000000..420a39e --- /dev/null +++ b/Assets/_Project.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf03936f18bd26a429aa8c37578cd53c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/AGENTS.md b/Assets/_Project/AGENTS.md new file mode 100644 index 0000000..ec8abfc --- /dev/null +++ b/Assets/_Project/AGENTS.md @@ -0,0 +1,31 @@ +# Maintained Unity workspace + +`Assets/_Project` is the maintained layer. `Scripts/Legacy` remains compatible with the existing game scene while new core contracts live in `Scripts/Runtime`. + +## Runtime design + +- Put engine-independent phase and content contracts in the `HomeProtector.Core` assembly. +- Put adapters that reference legacy global-namespace components under `Scripts/Legacy/RuntimeIntegration` until legacy dependencies are migrated. +- `GameFlowBridge` is the only component allowed to coordinate `GameSession`, `TimeSystem`, `WaveSystem`, and `WaveResultSystem`. +- Result publication is idempotent per combat. Defeat aborts spawners, timers, delayed waves, and live enemies. +- Preparation restores configured resources. Victory advances the day; defeat retries the same day; final victory exposes completion. + +## Content design + +- `ContentCatalog` is the runtime inventory for all enemies, towers, valuables, VFX, player animation sets, and environment themes. +- `PlaceableResourceDefinition` separates placement from targeting, health totals, instant-defeat behavior, and preparation restoration. +- Decorative placeables remain draggable but are excluded from enemy targeting and total health. +- Prefer prefab variants and data definitions over duplicate scene-only configuration. + +## Tests and Editor tooling + +- Write EditMode tests first for pure state and catalog contracts; write PlayMode tests only for Unity lifecycle/scene behavior. +- Editor tooling owns texture importer settings, slicing, clips, controllers, prefab generation, catalog updates, scene migration, and builds. +- Do not assert Unity serialization by parsing YAML in runtime tests. +- Do not expand successful test logs. Record one-line totals and the result artifact path. + +## Naming and compatibility + +- Use English identifiers and UTF-8 files. Existing Korean inspector labels/comments may remain. +- Retain `DraggableResource` during migration and let it reference the new definition. +- Retain `MicrophoneSystem` only as a temporary facade; all new references target the separated voice components. diff --git a/Assets/_Project/AGENTS.md.meta b/Assets/_Project/AGENTS.md.meta new file mode 100644 index 0000000..250e84c --- /dev/null +++ b/Assets/_Project/AGENTS.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8f2c4a3be4924e239da7f67a1c71a302 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data.meta b/Assets/_Project/Data.meta new file mode 100644 index 0000000..c88564d --- /dev/null +++ b/Assets/_Project/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad79175abe2f7cb44b25b29e8a9593f4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/DayWaveTable.asset b/Assets/_Project/Data/DayWaveTable.asset new file mode 100644 index 0000000..994c5d6 --- /dev/null +++ b/Assets/_Project/Data/DayWaveTable.asset @@ -0,0 +1,50 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 12cd5e587efc45c47875adee9fb020c8, type: 3} + m_Name: DayWaveTable + m_EditorClassIdentifier: + entries: + - label: Day 1 + day: 1 + dayRangeStart: 0 + dayRangeEnd: 0 + waves: + - {fileID: 11400000, guid: f7db1d2a6b054bf4581e99ab56fc42c4, type: 2} + - {fileID: 11400000, guid: 0940134452c71594985b8929357685bb, type: 2} + - label: Day 2 + day: 2 + dayRangeStart: 0 + dayRangeEnd: 0 + waves: + - {fileID: 11400000, guid: 4877d962545b1b34ea02afc4d79eee12, type: 2} + - {fileID: 11400000, guid: 3431dc52baa5b844fa14bf86c7913c78, type: 2} + - label: Day 3 + day: 3 + dayRangeStart: 0 + dayRangeEnd: 0 + waves: + - {fileID: 11400000, guid: 6cc5727a0c4e9584e9ba3dbcc6bccd22, type: 2} + - {fileID: 11400000, guid: 9a34c2fa28ba69c4bbdc771c6c34be61, type: 2} + - label: Day 4 + day: 4 + dayRangeStart: 0 + dayRangeEnd: 0 + waves: + - {fileID: 11400000, guid: 700707d0dcbc41a4dbb0204bc377087f, type: 2} + - {fileID: 11400000, guid: 4892f1dce32fbb0408df3fad2d0ae6c0, type: 2} + - label: Day 5 + day: 5 + dayRangeStart: 0 + dayRangeEnd: 0 + waves: + - {fileID: 11400000, guid: 3e0f22eedb1f774449b48e44e07e0c2a, type: 2} + - {fileID: 11400000, guid: 9d6d1bc65f515004f93960e5d261fcb1, type: 2} diff --git a/Assets/_Project/Data/DayWaveTable.asset.meta b/Assets/_Project/Data/DayWaveTable.asset.meta new file mode 100644 index 0000000..dc0d108 --- /dev/null +++ b/Assets/_Project/Data/DayWaveTable.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d12050ad74539dc489939a82e652bd4a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Enemies.meta b/Assets/_Project/Data/Enemies.meta new file mode 100644 index 0000000..c678bb6 --- /dev/null +++ b/Assets/_Project/Data/Enemies.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73876adc7a5a34848ab8e5d68bc5ae44 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Enemies/EnemyBearDefinition.asset b/Assets/_Project/Data/Enemies/EnemyBearDefinition.asset new file mode 100644 index 0000000..d427307 --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyBearDefinition.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31479fc32602c544f91e0663c653a597, type: 3} + m_Name: EnemyBearDefinition + m_EditorClassIdentifier: + id: enemybear + displayName: EnemyBear + prefab: {fileID: 3414869680251919639, guid: 5ee286c5b97c2fd4f9a183e2ef82b0f3, type: 3} + icon: {fileID: 21300000, guid: 72c692a250175e3408a8627d98e867fc, type: 3} + maxHealth: 60 + goldReward: 30 + experienceReward: 50 + moveSpeedMultiplier: 1 diff --git a/Assets/_Project/Data/Enemies/EnemyBearDefinition.asset.meta b/Assets/_Project/Data/Enemies/EnemyBearDefinition.asset.meta new file mode 100644 index 0000000..59c3e21 --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyBearDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ed5ca0bf155ec44d8dd61b5773bb061 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Enemies/EnemyCockroachDefinition.asset b/Assets/_Project/Data/Enemies/EnemyCockroachDefinition.asset new file mode 100644 index 0000000..dfc1cde --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyCockroachDefinition.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31479fc32602c544f91e0663c653a597, type: 3} + m_Name: EnemyCockroachDefinition + m_EditorClassIdentifier: + id: enemycockroach + displayName: EnemyCockroach + prefab: {fileID: 8385226143460851807, guid: 459970b3cd6480340ae2f709e3c03d44, type: 3} + icon: {fileID: 21300000, guid: 86b0557da12100c4280a2086d2458a01, type: 3} + maxHealth: 2 + goldReward: 2 + experienceReward: 20 + moveSpeedMultiplier: 1 diff --git a/Assets/_Project/Data/Enemies/EnemyCockroachDefinition.asset.meta b/Assets/_Project/Data/Enemies/EnemyCockroachDefinition.asset.meta new file mode 100644 index 0000000..ffac34e --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyCockroachDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 498256f643448804ebcb0b63ce841ce8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Enemies/EnemyCommonSoldierDefinition.asset b/Assets/_Project/Data/Enemies/EnemyCommonSoldierDefinition.asset new file mode 100644 index 0000000..799c5a0 --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyCommonSoldierDefinition.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31479fc32602c544f91e0663c653a597, type: 3} + m_Name: EnemyCommonSoldierDefinition + m_EditorClassIdentifier: + id: enemycommonsoldier + displayName: EnemyCommonSoldier + prefab: {fileID: 8385226143460851807, guid: 6ffdc11c948d0284ea7c1945fee301b9, type: 3} + icon: {fileID: -7008412969330441016, guid: 4a7c0da22d195094c996d9182a363b82, type: 3} + maxHealth: 12 + goldReward: 10 + experienceReward: 20 + moveSpeedMultiplier: 1 diff --git a/Assets/_Project/Data/Enemies/EnemyCommonSoldierDefinition.asset.meta b/Assets/_Project/Data/Enemies/EnemyCommonSoldierDefinition.asset.meta new file mode 100644 index 0000000..76d0f37 --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyCommonSoldierDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2c64af1cf7b2e4e449c0fba2b359f9f5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Enemies/EnemyMonkeyDefinition.asset b/Assets/_Project/Data/Enemies/EnemyMonkeyDefinition.asset new file mode 100644 index 0000000..39f54f8 --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyMonkeyDefinition.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31479fc32602c544f91e0663c653a597, type: 3} + m_Name: EnemyMonkeyDefinition + m_EditorClassIdentifier: + id: enemymonkey + displayName: EnemyMonkey + prefab: {fileID: 8385226143460851807, guid: 8baaacbdeee084d46b28c6a10405ba2c, type: 3} + icon: {fileID: 21300000, guid: 6014ac042f215ee40bd60ebf3c53aa9f, type: 3} + maxHealth: 10 + goldReward: 10 + experienceReward: 20 + moveSpeedMultiplier: 1 diff --git a/Assets/_Project/Data/Enemies/EnemyMonkeyDefinition.asset.meta b/Assets/_Project/Data/Enemies/EnemyMonkeyDefinition.asset.meta new file mode 100644 index 0000000..ea40c15 --- /dev/null +++ b/Assets/_Project/Data/Enemies/EnemyMonkeyDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb46d8b27b2a1f340b06ddfb4d8de86f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Projectiles.meta b/Assets/_Project/Data/Projectiles.meta new file mode 100644 index 0000000..c248afb --- /dev/null +++ b/Assets/_Project/Data/Projectiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f678f592414103242badc4b3e0e80fa0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Projectiles/ProjectileArrowDefinition.asset b/Assets/_Project/Data/Projectiles/ProjectileArrowDefinition.asset new file mode 100644 index 0000000..bb3c870 --- /dev/null +++ b/Assets/_Project/Data/Projectiles/ProjectileArrowDefinition.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac10458e8db14384983b3b0f5c10c36f, type: 3} + m_Name: ProjectileArrowDefinition + m_EditorClassIdentifier: + id: projectilearrow + displayName: ProjectileArrow + prefab: {fileID: 2777279350721899029, guid: 44489083cff375d4aa63a379f35125dd, type: 3} + icon: {fileID: 21300000, guid: 737145cfdb0a6ee49a544610e9d61888, type: 3} + behaviourType: 0 + baseDamage: 1 + speed: 8 + areaRadius: 0 + debuffDuration: 0 + debuffMultiplier: 1 diff --git a/Assets/_Project/Data/Projectiles/ProjectileArrowDefinition.asset.meta b/Assets/_Project/Data/Projectiles/ProjectileArrowDefinition.asset.meta new file mode 100644 index 0000000..d28956d --- /dev/null +++ b/Assets/_Project/Data/Projectiles/ProjectileArrowDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e89befbfae1628449edbdcb81a62743 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Projectiles/ProjectileBookDefinition.asset b/Assets/_Project/Data/Projectiles/ProjectileBookDefinition.asset new file mode 100644 index 0000000..f5abceb --- /dev/null +++ b/Assets/_Project/Data/Projectiles/ProjectileBookDefinition.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac10458e8db14384983b3b0f5c10c36f, type: 3} + m_Name: ProjectileBookDefinition + m_EditorClassIdentifier: + id: projectilebook + displayName: ProjectileBook + prefab: {fileID: 2777279350721899029, guid: f030fa4de2061ef418fc6e40e18d6dc8, type: 3} + icon: {fileID: 21300000, guid: 6d107208eb9001b458c1a59cce463cf3, type: 3} + behaviourType: 1 + baseDamage: 1 + speed: 8 + areaRadius: 0 + debuffDuration: 0 + debuffMultiplier: 1 diff --git a/Assets/_Project/Data/Projectiles/ProjectileBookDefinition.asset.meta b/Assets/_Project/Data/Projectiles/ProjectileBookDefinition.asset.meta new file mode 100644 index 0000000..cd96b82 --- /dev/null +++ b/Assets/_Project/Data/Projectiles/ProjectileBookDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3ce46485f0a7d941826b61a2164a17a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Projectiles/ProjectileCoolDryerDefinition.asset b/Assets/_Project/Data/Projectiles/ProjectileCoolDryerDefinition.asset new file mode 100644 index 0000000..1a04097 --- /dev/null +++ b/Assets/_Project/Data/Projectiles/ProjectileCoolDryerDefinition.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac10458e8db14384983b3b0f5c10c36f, type: 3} + m_Name: ProjectileCoolDryerDefinition + m_EditorClassIdentifier: + id: projectilecooldryer + displayName: ProjectileCoolDryer + prefab: {fileID: 2777279350721899029, guid: 9f72e4894fe04e84795264cd1b0da82a, type: 3} + icon: {fileID: 21300000, guid: 373130f3555d2b345bb1d8098d6a42db, type: 3} + behaviourType: 5 + baseDamage: 0 + speed: 8 + areaRadius: 0 + debuffDuration: 0 + debuffMultiplier: 1 diff --git a/Assets/_Project/Data/Projectiles/ProjectileCoolDryerDefinition.asset.meta b/Assets/_Project/Data/Projectiles/ProjectileCoolDryerDefinition.asset.meta new file mode 100644 index 0000000..add17f5 --- /dev/null +++ b/Assets/_Project/Data/Projectiles/ProjectileCoolDryerDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f790375cb74176443ad6a90e87df9754 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Towers.meta b/Assets/_Project/Data/Towers.meta new file mode 100644 index 0000000..aeb1984 --- /dev/null +++ b/Assets/_Project/Data/Towers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 289c27fac70277f40a5c95f74dbb2428 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Towers/Tower01DryerDefinition.asset b/Assets/_Project/Data/Towers/Tower01DryerDefinition.asset new file mode 100644 index 0000000..f4201e6 --- /dev/null +++ b/Assets/_Project/Data/Towers/Tower01DryerDefinition.asset @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff06f21defe13c142a818363f9d9c232, type: 3} + m_Name: Tower01DryerDefinition + m_EditorClassIdentifier: + id: tower01dryer + displayName: Tower01Dryer + towerPrefab: {fileID: 7937509987669185425, guid: 34a592719307199419a8c6ee4c711e70, type: 3} + previewPrefab: {fileID: 5283101220022144376, guid: 18fe1ba71f76b2345b6ae10a249456c1, type: 3} + levels: + - sprite: {fileID: 21300000, guid: bf093bf7afa81b542a10689df8d22170, type: 3} + projectile: {fileID: 11400000, guid: 5e89befbfae1628449edbdcb81a62743, type: 2} + damage: 1 + fireRate: 1 + range: 5 + cost: 3 + sellValue: 2 + - sprite: {fileID: 21300000, guid: bf093bf7afa81b542a10689df8d22170, type: 3} + projectile: {fileID: 11400000, guid: 5e89befbfae1628449edbdcb81a62743, type: 2} + damage: 1 + fireRate: 1.1 + range: 7 + cost: 3 + sellValue: 2 + - sprite: {fileID: 21300000, guid: bf093bf7afa81b542a10689df8d22170, type: 3} + projectile: {fileID: 11400000, guid: 5e89befbfae1628449edbdcb81a62743, type: 2} + damage: 1 + fireRate: 1.2 + range: 9 + cost: 3 + sellValue: 2 + - sprite: {fileID: 21300000, guid: bf093bf7afa81b542a10689df8d22170, type: 3} + projectile: {fileID: 11400000, guid: 5e89befbfae1628449edbdcb81a62743, type: 2} + damage: 1.2 + fireRate: 1.4 + range: 11 + cost: 3 + sellValue: 2 + - sprite: {fileID: 21300000, guid: bf093bf7afa81b542a10689df8d22170, type: 3} + projectile: {fileID: 11400000, guid: 5e89befbfae1628449edbdcb81a62743, type: 2} + damage: 2 + fireRate: 1.4 + range: 11 + cost: 5 + sellValue: 3 diff --git a/Assets/_Project/Data/Towers/Tower01DryerDefinition.asset.meta b/Assets/_Project/Data/Towers/Tower01DryerDefinition.asset.meta new file mode 100644 index 0000000..d799a69 --- /dev/null +++ b/Assets/_Project/Data/Towers/Tower01DryerDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa9effdc78ed32a4c90fa3264d996893 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Towers/Tower02BookShelfDefinition.asset b/Assets/_Project/Data/Towers/Tower02BookShelfDefinition.asset new file mode 100644 index 0000000..bd05d4d --- /dev/null +++ b/Assets/_Project/Data/Towers/Tower02BookShelfDefinition.asset @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff06f21defe13c142a818363f9d9c232, type: 3} + m_Name: Tower02BookShelfDefinition + m_EditorClassIdentifier: + id: tower02bookshelf + displayName: Tower02BookShelf + towerPrefab: {fileID: 7937509987669185425, guid: ec790bab3e937e248ab6d1da37cc94b4, type: 3} + previewPrefab: {fileID: 5283101220022144376, guid: bb9c962ce23478745b1e3b618c281f7a, type: 3} + levels: + - sprite: {fileID: 21300000, guid: a3c3bf9564fb9d642bfe8b04b3945fae, type: 3} + projectile: {fileID: 11400000, guid: d3ce46485f0a7d941826b61a2164a17a, type: 2} + damage: 1 + fireRate: 2 + range: 4 + cost: 5 + sellValue: 3 + - sprite: {fileID: 21300000, guid: a3c3bf9564fb9d642bfe8b04b3945fae, type: 3} + projectile: {fileID: 11400000, guid: d3ce46485f0a7d941826b61a2164a17a, type: 2} + damage: 2 + fireRate: 2 + range: 4 + cost: 5 + sellValue: 3 + - sprite: {fileID: 21300000, guid: a3c3bf9564fb9d642bfe8b04b3945fae, type: 3} + projectile: {fileID: 11400000, guid: d3ce46485f0a7d941826b61a2164a17a, type: 2} + damage: 2 + fireRate: 3 + range: 4 + cost: 5 + sellValue: 3 + - sprite: {fileID: 21300000, guid: a3c3bf9564fb9d642bfe8b04b3945fae, type: 3} + projectile: {fileID: 11400000, guid: d3ce46485f0a7d941826b61a2164a17a, type: 2} + damage: 2 + fireRate: 3.5 + range: 4 + cost: 7 + sellValue: 3 + - sprite: {fileID: 21300000, guid: a3c3bf9564fb9d642bfe8b04b3945fae, type: 3} + projectile: {fileID: 11400000, guid: d3ce46485f0a7d941826b61a2164a17a, type: 2} + damage: 3 + fireRate: 4 + range: 4 + cost: 8 + sellValue: 4 diff --git a/Assets/_Project/Data/Towers/Tower02BookShelfDefinition.asset.meta b/Assets/_Project/Data/Towers/Tower02BookShelfDefinition.asset.meta new file mode 100644 index 0000000..c9de377 --- /dev/null +++ b/Assets/_Project/Data/Towers/Tower02BookShelfDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa06123b1b8801c41ad5a5d123c0e35f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Towers/Tower03CoolDryerDefinition.asset b/Assets/_Project/Data/Towers/Tower03CoolDryerDefinition.asset new file mode 100644 index 0000000..c81d176 --- /dev/null +++ b/Assets/_Project/Data/Towers/Tower03CoolDryerDefinition.asset @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff06f21defe13c142a818363f9d9c232, type: 3} + m_Name: Tower03CoolDryerDefinition + m_EditorClassIdentifier: + id: tower03cooldryer + displayName: Tower03CoolDryer + towerPrefab: {fileID: 7937509987669185425, guid: f827b8f1b1e900f4a887ac5530ae3134, type: 3} + previewPrefab: {fileID: 5283101220022144376, guid: 33f77d679e7670b45981337fd1c2c8ba, type: 3} + levels: + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + projectile: {fileID: 11400000, guid: f790375cb74176443ad6a90e87df9754, type: 2} + damage: 1 + fireRate: 1 + range: 5 + cost: 7 + sellValue: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + projectile: {fileID: 11400000, guid: f790375cb74176443ad6a90e87df9754, type: 2} + damage: 1 + fireRate: 1.3 + range: 7 + cost: 7 + sellValue: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + projectile: {fileID: 11400000, guid: f790375cb74176443ad6a90e87df9754, type: 2} + damage: 1 + fireRate: 1.6 + range: 9 + cost: 7 + sellValue: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + projectile: {fileID: 11400000, guid: f790375cb74176443ad6a90e87df9754, type: 2} + damage: 1.2 + fireRate: 1.9 + range: 11 + cost: 7 + sellValue: 2 + - sprite: {fileID: 21300000, guid: c6bc141ec427697498158281f07ba0a9, type: 3} + projectile: {fileID: 11400000, guid: f790375cb74176443ad6a90e87df9754, type: 2} + damage: 2 + fireRate: 2.2 + range: 11 + cost: 7 + sellValue: 3 diff --git a/Assets/_Project/Data/Towers/Tower03CoolDryerDefinition.asset.meta b/Assets/_Project/Data/Towers/Tower03CoolDryerDefinition.asset.meta new file mode 100644 index 0000000..6c2c5dc --- /dev/null +++ b/Assets/_Project/Data/Towers/Tower03CoolDryerDefinition.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a26ee914d41f7ca4aa295e767ba23338 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves.meta b/Assets/_Project/Data/Waves.meta new file mode 100644 index 0000000..a1b46db --- /dev/null +++ b/Assets/_Project/Data/Waves.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 681501bfcd1e68341ac4a6df150166c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day01_Wave01_CockroachIntro.asset b/Assets/_Project/Data/Waves/Day01_Wave01_CockroachIntro.asset new file mode 100644 index 0000000..d9c7a99 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day01_Wave01_CockroachIntro.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day01_Wave01_CockroachIntro + m_EditorClassIdentifier: + id: day01_wave01_cockroachintro + displayName: Day 1-1 Cockroach Intro + duration: 20 + rewardGold: 4 + enemyGroups: + - enemy: {fileID: 11400000, guid: 498256f643448804ebcb0b63ce841ce8, type: 2} + count: 4 + spawnInterval: 1.2 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day01_Wave01_CockroachIntro.asset.meta b/Assets/_Project/Data/Waves/Day01_Wave01_CockroachIntro.asset.meta new file mode 100644 index 0000000..c03c856 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day01_Wave01_CockroachIntro.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7db1d2a6b054bf4581e99ab56fc42c4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day01_Wave02_CockroachPush.asset b/Assets/_Project/Data/Waves/Day01_Wave02_CockroachPush.asset new file mode 100644 index 0000000..58c317a --- /dev/null +++ b/Assets/_Project/Data/Waves/Day01_Wave02_CockroachPush.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day01_Wave02_CockroachPush + m_EditorClassIdentifier: + id: day01_wave02_cockroachpush + displayName: Day 1-2 Cockroach Push + duration: 25 + rewardGold: 6 + enemyGroups: + - enemy: {fileID: 11400000, guid: 498256f643448804ebcb0b63ce841ce8, type: 2} + count: 6 + spawnInterval: 1 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day01_Wave02_CockroachPush.asset.meta b/Assets/_Project/Data/Waves/Day01_Wave02_CockroachPush.asset.meta new file mode 100644 index 0000000..53a3df4 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day01_Wave02_CockroachPush.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0940134452c71594985b8929357685bb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day02_Wave01_CockroachSwarm.asset b/Assets/_Project/Data/Waves/Day02_Wave01_CockroachSwarm.asset new file mode 100644 index 0000000..2926567 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day02_Wave01_CockroachSwarm.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day02_Wave01_CockroachSwarm + m_EditorClassIdentifier: + id: day02_wave01_cockroachswarm + displayName: Day 2-1 Cockroach Swarm + duration: 28 + rewardGold: 8 + enemyGroups: + - enemy: {fileID: 11400000, guid: 498256f643448804ebcb0b63ce841ce8, type: 2} + count: 8 + spawnInterval: 0.85 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day02_Wave01_CockroachSwarm.asset.meta b/Assets/_Project/Data/Waves/Day02_Wave01_CockroachSwarm.asset.meta new file mode 100644 index 0000000..f524b60 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day02_Wave01_CockroachSwarm.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4877d962545b1b34ea02afc4d79eee12 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day02_Wave02_MonkeyIntro.asset b/Assets/_Project/Data/Waves/Day02_Wave02_MonkeyIntro.asset new file mode 100644 index 0000000..ac7857d --- /dev/null +++ b/Assets/_Project/Data/Waves/Day02_Wave02_MonkeyIntro.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day02_Wave02_MonkeyIntro + m_EditorClassIdentifier: + id: day02_wave02_monkeyintro + displayName: Day 2-2 Monkey Intro + duration: 30 + rewardGold: 10 + enemyGroups: + - enemy: {fileID: 11400000, guid: 498256f643448804ebcb0b63ce841ce8, type: 2} + count: 6 + spawnInterval: 0.9 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: bb46d8b27b2a1f340b06ddfb4d8de86f, type: 2} + count: 2 + spawnInterval: 1.5 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day02_Wave02_MonkeyIntro.asset.meta b/Assets/_Project/Data/Waves/Day02_Wave02_MonkeyIntro.asset.meta new file mode 100644 index 0000000..5ec6cd0 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day02_Wave02_MonkeyIntro.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3431dc52baa5b844fa14bf86c7913c78 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day03_Wave01_MixedRaid.asset b/Assets/_Project/Data/Waves/Day03_Wave01_MixedRaid.asset new file mode 100644 index 0000000..e722e3b --- /dev/null +++ b/Assets/_Project/Data/Waves/Day03_Wave01_MixedRaid.asset @@ -0,0 +1,31 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day03_Wave01_MixedRaid + m_EditorClassIdentifier: + id: day03_wave01_mixedraid + displayName: Day 3-1 Mixed Raid + duration: 35 + rewardGold: 14 + enemyGroups: + - enemy: {fileID: 11400000, guid: 498256f643448804ebcb0b63ce841ce8, type: 2} + count: 8 + spawnInterval: 0.8 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: bb46d8b27b2a1f340b06ddfb4d8de86f, type: 2} + count: 4 + spawnInterval: 1.2 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 2c64af1cf7b2e4e449c0fba2b359f9f5, type: 2} + count: 2 + spawnInterval: 1.6 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day03_Wave01_MixedRaid.asset.meta b/Assets/_Project/Data/Waves/Day03_Wave01_MixedRaid.asset.meta new file mode 100644 index 0000000..321eb44 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day03_Wave01_MixedRaid.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cc5727a0c4e9584e9ba3dbcc6bccd22 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day03_Wave02_SoldierLine.asset b/Assets/_Project/Data/Waves/Day03_Wave02_SoldierLine.asset new file mode 100644 index 0000000..bbd01f1 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day03_Wave02_SoldierLine.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day03_Wave02_SoldierLine + m_EditorClassIdentifier: + id: day03_wave02_soldierline + displayName: Day 3-2 Soldier Line + duration: 38 + rewardGold: 18 + enemyGroups: + - enemy: {fileID: 11400000, guid: bb46d8b27b2a1f340b06ddfb4d8de86f, type: 2} + count: 3 + spawnInterval: 1.1 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 2c64af1cf7b2e4e449c0fba2b359f9f5, type: 2} + count: 5 + spawnInterval: 1.35 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day03_Wave02_SoldierLine.asset.meta b/Assets/_Project/Data/Waves/Day03_Wave02_SoldierLine.asset.meta new file mode 100644 index 0000000..58381b1 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day03_Wave02_SoldierLine.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a34c2fa28ba69c4bbdc771c6c34be61 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day04_Wave01_HeavyPressure.asset b/Assets/_Project/Data/Waves/Day04_Wave01_HeavyPressure.asset new file mode 100644 index 0000000..4a696c1 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day04_Wave01_HeavyPressure.asset @@ -0,0 +1,31 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day04_Wave01_HeavyPressure + m_EditorClassIdentifier: + id: day04_wave01_heavypressure + displayName: Day 4-1 Heavy Pressure + duration: 42 + rewardGold: 22 + enemyGroups: + - enemy: {fileID: 11400000, guid: 498256f643448804ebcb0b63ce841ce8, type: 2} + count: 10 + spawnInterval: 0.7 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: bb46d8b27b2a1f340b06ddfb4d8de86f, type: 2} + count: 4 + spawnInterval: 1 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 2c64af1cf7b2e4e449c0fba2b359f9f5, type: 2} + count: 6 + spawnInterval: 1.2 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day04_Wave01_HeavyPressure.asset.meta b/Assets/_Project/Data/Waves/Day04_Wave01_HeavyPressure.asset.meta new file mode 100644 index 0000000..902a350 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day04_Wave01_HeavyPressure.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 700707d0dcbc41a4dbb0204bc377087f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day04_Wave02_BearWarning.asset b/Assets/_Project/Data/Waves/Day04_Wave02_BearWarning.asset new file mode 100644 index 0000000..d44795b --- /dev/null +++ b/Assets/_Project/Data/Waves/Day04_Wave02_BearWarning.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day04_Wave02_BearWarning + m_EditorClassIdentifier: + id: day04_wave02_bearwarning + displayName: Day 4-2 Bear Warning + duration: 45 + rewardGold: 28 + enemyGroups: + - enemy: {fileID: 11400000, guid: 2c64af1cf7b2e4e449c0fba2b359f9f5, type: 2} + count: 6 + spawnInterval: 1.1 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 0ed5ca0bf155ec44d8dd61b5773bb061, type: 2} + count: 1 + spawnInterval: 2.5 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day04_Wave02_BearWarning.asset.meta b/Assets/_Project/Data/Waves/Day04_Wave02_BearWarning.asset.meta new file mode 100644 index 0000000..7c5551f --- /dev/null +++ b/Assets/_Project/Data/Waves/Day04_Wave02_BearWarning.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4892f1dce32fbb0408df3fad2d0ae6c0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day05_Wave01_BearPush.asset b/Assets/_Project/Data/Waves/Day05_Wave01_BearPush.asset new file mode 100644 index 0000000..4eea1aa --- /dev/null +++ b/Assets/_Project/Data/Waves/Day05_Wave01_BearPush.asset @@ -0,0 +1,31 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day05_Wave01_BearPush + m_EditorClassIdentifier: + id: day05_wave01_bearpush + displayName: Day 5-1 Bear Push + duration: 48 + rewardGold: 34 + enemyGroups: + - enemy: {fileID: 11400000, guid: bb46d8b27b2a1f340b06ddfb4d8de86f, type: 2} + count: 6 + spawnInterval: 0.9 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 2c64af1cf7b2e4e449c0fba2b359f9f5, type: 2} + count: 8 + spawnInterval: 1 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 0ed5ca0bf155ec44d8dd61b5773bb061, type: 2} + count: 2 + spawnInterval: 2.2 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day05_Wave01_BearPush.asset.meta b/Assets/_Project/Data/Waves/Day05_Wave01_BearPush.asset.meta new file mode 100644 index 0000000..51e9bf7 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day05_Wave01_BearPush.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e0f22eedb1f774449b48e44e07e0c2a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Data/Waves/Day05_Wave02_FirstWall.asset b/Assets/_Project/Data/Waves/Day05_Wave02_FirstWall.asset new file mode 100644 index 0000000..887adc7 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day05_Wave02_FirstWall.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 61c5cffba0b9e1d469c3aaa9e53eda49, type: 3} + m_Name: Day05_Wave02_FirstWall + m_EditorClassIdentifier: + id: day05_wave02_firstwall + displayName: Day 5-2 First Wall + duration: 55 + rewardGold: 45 + enemyGroups: + - enemy: {fileID: 11400000, guid: 498256f643448804ebcb0b63ce841ce8, type: 2} + count: 12 + spawnInterval: 0.65 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: bb46d8b27b2a1f340b06ddfb4d8de86f, type: 2} + count: 8 + spawnInterval: 0.85 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 2c64af1cf7b2e4e449c0fba2b359f9f5, type: 2} + count: 10 + spawnInterval: 0.95 + spawnPointOverride: {fileID: 0} + - enemy: {fileID: 11400000, guid: 0ed5ca0bf155ec44d8dd61b5773bb061, type: 2} + count: 2 + spawnInterval: 2 + spawnPointOverride: {fileID: 0} diff --git a/Assets/_Project/Data/Waves/Day05_Wave02_FirstWall.asset.meta b/Assets/_Project/Data/Waves/Day05_Wave02_FirstWall.asset.meta new file mode 100644 index 0000000..3e4bbd5 --- /dev/null +++ b/Assets/_Project/Data/Waves/Day05_Wave02_FirstWall.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d6d1bc65f515004f93960e5d261fcb1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts.meta b/Assets/_Project/Scripts.meta new file mode 100644 index 0000000..0517ce0 --- /dev/null +++ b/Assets/_Project/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aced4bf22960ae242addfc33106ba053 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Editor.meta b/Assets/_Project/Scripts/Editor.meta new file mode 100644 index 0000000..982bfa9 --- /dev/null +++ b/Assets/_Project/Scripts/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a10b05d50f0c9bf4eb907fa21ddfa1de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Editor/CleanCoreDataMigrationBootstrapper.cs b/Assets/_Project/Scripts/Editor/CleanCoreDataMigrationBootstrapper.cs new file mode 100644 index 0000000..6d0938c --- /dev/null +++ b/Assets/_Project/Scripts/Editor/CleanCoreDataMigrationBootstrapper.cs @@ -0,0 +1,519 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using HomeProtector.Core; +using UnityEditor; +using UnityEngine; + +namespace HomeProtector.Editor +{ + public static class CleanCoreDataMigrationBootstrapper + { + private const string DataRoot = "Assets/_Project/Data"; + private const string TowerDataRoot = DataRoot + "/Towers"; + private const string EnemyDataRoot = DataRoot + "/Enemies"; + private const string ProjectileDataRoot = DataRoot + "/Projectiles"; + private const string WaveDataRoot = DataRoot + "/Waves"; + private const string DayWaveTablePath = DataRoot + "/DayWaveTable.asset"; + private const string LegacyPrefabRoot = "Assets/Prefabs"; + + [MenuItem("Home Protector/Migrate Legacy Content Data")] + public static void MigrateLegacyContentData() + { + EnsureFolders(); + + Dictionary projectileDefinitions = new(); + int towerCount = MigrateTowerDefinitions(projectileDefinitions); + int enemyCount = MigrateEnemyDefinitions(); + int waveCount = GenerateStarterWaves(); + int dayEntryCount = GenerateStarterDayWaveTable(); + + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + Debug.Log( + $"Home Protector content data migration complete. Towers: {towerCount}, " + + $"Projectiles: {projectileDefinitions.Count}, Enemies: {enemyCount}, " + + $"Waves: {waveCount}, Day entries: {dayEntryCount}."); + } + + private static void EnsureFolders() + { + EnsureFolder("Assets", "_Project"); + EnsureFolder("Assets/_Project", "Data"); + EnsureFolder(DataRoot, "Towers"); + EnsureFolder(DataRoot, "Enemies"); + EnsureFolder(DataRoot, "Projectiles"); + EnsureFolder(DataRoot, "Waves"); + } + + private static void EnsureFolder(string parent, string child) + { + string path = parent + "/" + child; + if (!AssetDatabase.IsValidFolder(path)) + { + AssetDatabase.CreateFolder(parent, child); + } + } + + private static int MigrateTowerDefinitions(Dictionary projectileDefinitions) + { + string[] towerTemplatePaths = AssetDatabase.FindAssets("t:TowerTemplate", new[] { LegacyPrefabRoot }) + .Select(AssetDatabase.GUIDToAssetPath) + .OrderBy(path => path) + .ToArray(); + + int migratedCount = 0; + foreach (string path in towerTemplatePaths) + { + TowerTemplate legacyTemplate = AssetDatabase.LoadAssetAtPath(path); + if (legacyTemplate == null || legacyTemplate.towerPrefab == null) + { + continue; + } + + GameObject projectilePrefab = GetObjectReference( + FindComponentByTypeName(legacyTemplate.towerPrefab, "TowerWeapon"), + "projectilePrefab"); + ProjectileDefinition projectileDefinition = projectilePrefab != null + ? GetOrCreateProjectileDefinition(projectilePrefab, FirstWeaponDamage(legacyTemplate), projectileDefinitions) + : null; + + string assetName = legacyTemplate.name + "Definition"; + TowerDefinition definition = LoadOrCreateAsset(TowerDataRoot + "/" + assetName + ".asset"); + WriteTowerDefinition(definition, legacyTemplate, projectileDefinition); + migratedCount++; + } + + return migratedCount; + } + + private static int GenerateStarterWaves() + { + EnemyDefinition cockroach = LoadEnemyDefinition("EnemyCockroachDefinition"); + EnemyDefinition monkey = LoadEnemyDefinition("EnemyMonkeyDefinition"); + EnemyDefinition soldier = LoadEnemyDefinition("EnemyCommonSoldierDefinition"); + EnemyDefinition bear = LoadEnemyDefinition("EnemyBearDefinition"); + + StarterWaveSpec[] starterWaves = + { + new("Day01_Wave01_CockroachIntro", "Day 1-1 Cockroach Intro", 20f, 4, + new StarterEnemyGroup(cockroach, 4, 1.2f)), + new("Day01_Wave02_CockroachPush", "Day 1-2 Cockroach Push", 25f, 6, + new StarterEnemyGroup(cockroach, 6, 1.0f)), + new("Day02_Wave01_CockroachSwarm", "Day 2-1 Cockroach Swarm", 28f, 8, + new StarterEnemyGroup(cockroach, 8, 0.85f)), + new("Day02_Wave02_MonkeyIntro", "Day 2-2 Monkey Intro", 30f, 10, + new StarterEnemyGroup(cockroach, 6, 0.9f), + new StarterEnemyGroup(monkey, 2, 1.5f)), + new("Day03_Wave01_MixedRaid", "Day 3-1 Mixed Raid", 35f, 14, + new StarterEnemyGroup(cockroach, 8, 0.8f), + new StarterEnemyGroup(monkey, 4, 1.2f), + new StarterEnemyGroup(soldier, 2, 1.6f)), + new("Day03_Wave02_SoldierLine", "Day 3-2 Soldier Line", 38f, 18, + new StarterEnemyGroup(monkey, 3, 1.1f), + new StarterEnemyGroup(soldier, 5, 1.35f)), + new("Day04_Wave01_HeavyPressure", "Day 4-1 Heavy Pressure", 42f, 22, + new StarterEnemyGroup(cockroach, 10, 0.7f), + new StarterEnemyGroup(monkey, 4, 1.0f), + new StarterEnemyGroup(soldier, 6, 1.2f)), + new("Day04_Wave02_BearWarning", "Day 4-2 Bear Warning", 45f, 28, + new StarterEnemyGroup(soldier, 6, 1.1f), + new StarterEnemyGroup(bear, 1, 2.5f)), + new("Day05_Wave01_BearPush", "Day 5-1 Bear Push", 48f, 34, + new StarterEnemyGroup(monkey, 6, 0.9f), + new StarterEnemyGroup(soldier, 8, 1.0f), + new StarterEnemyGroup(bear, 2, 2.2f)), + new("Day05_Wave02_FirstWall", "Day 5-2 First Wall", 55f, 45, + new StarterEnemyGroup(cockroach, 12, 0.65f), + new StarterEnemyGroup(monkey, 8, 0.85f), + new StarterEnemyGroup(soldier, 10, 0.95f), + new StarterEnemyGroup(bear, 2, 2.0f)), + }; + + foreach (StarterWaveSpec spec in starterWaves) + { + WaveDefinition wave = LoadOrCreateAsset(WaveDataRoot + "/" + spec.AssetName + ".asset"); + WriteWaveDefinition(wave, spec); + } + + return starterWaves.Length; + } + + private static int GenerateStarterDayWaveTable() + { + DayWaveTable table = LoadOrCreateAsset(DayWaveTablePath); + SerializedObject serializedObject = new(table); + SerializedProperty entries = serializedObject.FindProperty("entries"); + entries.arraySize = 5; + + for (int day = 1; day <= 5; day++) + { + SerializedProperty entry = entries.GetArrayElementAtIndex(day - 1); + entry.FindPropertyRelative("label").stringValue = $"Day {day}"; + entry.FindPropertyRelative("day").intValue = day; + entry.FindPropertyRelative("dayRangeStart").intValue = 0; + entry.FindPropertyRelative("dayRangeEnd").intValue = 0; + + SerializedProperty waves = entry.FindPropertyRelative("waves"); + waves.arraySize = 2; + waves.GetArrayElementAtIndex(0).objectReferenceValue = + LoadWaveDefinition($"Day{day:00}_Wave01"); + waves.GetArrayElementAtIndex(1).objectReferenceValue = + LoadWaveDefinition($"Day{day:00}_Wave02"); + } + + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(table); + return entries.arraySize; + } + + private static int MigrateEnemyDefinitions() + { + string[] prefabPaths = AssetDatabase.FindAssets("t:Prefab", new[] { LegacyPrefabRoot }) + .Select(AssetDatabase.GUIDToAssetPath) + .OrderBy(path => path) + .ToArray(); + + int migratedCount = 0; + foreach (string path in prefabPaths) + { + GameObject prefab = AssetDatabase.LoadAssetAtPath(path); + Component enemy = FindComponentByTypeName(prefab, "Enemy"); + Component enemyHp = FindComponentByTypeName(prefab, "EnemyHP"); + if (prefab == null || enemy == null || enemyHp == null) + { + continue; + } + + string assetName = prefab.name + "Definition"; + EnemyDefinition definition = LoadOrCreateAsset(EnemyDataRoot + "/" + assetName + ".asset"); + WriteEnemyDefinition(definition, prefab, enemy, enemyHp); + migratedCount++; + } + + return migratedCount; + } + + private static ProjectileDefinition GetOrCreateProjectileDefinition( + GameObject prefab, + float baseDamage, + Dictionary projectileDefinitions) + { + if (projectileDefinitions.TryGetValue(prefab, out ProjectileDefinition existing)) + { + return existing; + } + + string assetName = prefab.name + "Definition"; + ProjectileDefinition definition = + LoadOrCreateAsset(ProjectileDataRoot + "/" + assetName + ".asset"); + WriteProjectileDefinition(definition, prefab, baseDamage); + projectileDefinitions[prefab] = definition; + return definition; + } + + private static void WriteTowerDefinition( + TowerDefinition definition, + TowerTemplate legacyTemplate, + ProjectileDefinition projectileDefinition) + { + SerializedObject serializedObject = new(definition); + SetString(serializedObject, "id", ToId(legacyTemplate.name)); + SetString(serializedObject, "displayName", legacyTemplate.name); + SetObject(serializedObject, "towerPrefab", legacyTemplate.towerPrefab); + SetObject(serializedObject, "previewPrefab", legacyTemplate.followTowerPrefab); + + SerializedProperty levels = serializedObject.FindProperty("levels"); + levels.arraySize = legacyTemplate.weapons != null ? legacyTemplate.weapons.Count : 0; + + for (int i = 0; i < levels.arraySize; i++) + { + TowerTemplate.Weapon legacyWeapon = legacyTemplate.weapons[i]; + SerializedProperty level = levels.GetArrayElementAtIndex(i); + level.FindPropertyRelative("sprite").objectReferenceValue = legacyWeapon.sprite; + level.FindPropertyRelative("projectile").objectReferenceValue = projectileDefinition; + level.FindPropertyRelative("damage").floatValue = legacyWeapon.damage; + level.FindPropertyRelative("fireRate").floatValue = legacyWeapon.rate; + level.FindPropertyRelative("range").floatValue = legacyWeapon.range; + level.FindPropertyRelative("cost").intValue = legacyWeapon.cost; + level.FindPropertyRelative("sellValue").intValue = legacyWeapon.sell; + } + + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(definition); + } + + private static void WriteEnemyDefinition( + EnemyDefinition definition, + GameObject prefab, + Component enemy, + Component enemyHp) + { + SerializedObject serializedObject = new(definition); + SetString(serializedObject, "id", ToId(prefab.name)); + SetString(serializedObject, "displayName", prefab.name); + SetObject(serializedObject, "prefab", prefab); + SetObject(serializedObject, "icon", GetPrefabSprite(prefab)); + SetFloat(serializedObject, "maxHealth", Mathf.Max(1f, GetFloat(enemyHp, "maxHP", 1f))); + SetInt(serializedObject, "goldReward", GetInt(enemy, "gold", 1)); + SetInt(serializedObject, "experienceReward", GetInt(enemy, "expValue", 1)); + SetFloat(serializedObject, "moveSpeedMultiplier", 1f); + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(definition); + } + + private static void WriteProjectileDefinition(ProjectileDefinition definition, GameObject prefab, float baseDamage) + { + SerializedObject serializedObject = new(definition); + SetString(serializedObject, "id", ToId(prefab.name)); + SetString(serializedObject, "displayName", prefab.name); + SetObject(serializedObject, "prefab", prefab); + SetObject(serializedObject, "icon", GetPrefabSprite(prefab)); + SetEnum(serializedObject, "behaviourType", GuessProjectileBehaviour(prefab)); + SetFloat(serializedObject, "baseDamage", Mathf.Max(0f, baseDamage)); + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(definition); + } + + private static void WriteWaveDefinition(WaveDefinition definition, StarterWaveSpec spec) + { + SerializedObject serializedObject = new(definition); + SetString(serializedObject, "id", ToId(spec.AssetName)); + SetString(serializedObject, "displayName", spec.DisplayName); + SetFloat(serializedObject, "duration", spec.Duration); + SetInt(serializedObject, "rewardGold", spec.RewardGold); + + SerializedProperty enemyGroups = serializedObject.FindProperty("enemyGroups"); + enemyGroups.arraySize = spec.Groups.Count; + + for (int i = 0; i < spec.Groups.Count; i++) + { + StarterEnemyGroup group = spec.Groups[i]; + SerializedProperty entry = enemyGroups.GetArrayElementAtIndex(i); + entry.FindPropertyRelative("enemy").objectReferenceValue = group.Enemy; + entry.FindPropertyRelative("count").intValue = group.Count; + entry.FindPropertyRelative("spawnInterval").floatValue = group.SpawnInterval; + entry.FindPropertyRelative("spawnPointOverride").objectReferenceValue = null; + } + + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(definition); + } + + private static T LoadOrCreateAsset(string path) where T : ScriptableObject + { + T asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + { + return asset; + } + + asset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(asset, path); + return asset; + } + + private static Component FindComponentByTypeName(GameObject prefab, string typeName) + { + if (prefab == null) + { + return null; + } + + return prefab.GetComponentsInChildren(true) + .FirstOrDefault(component => component != null && component.GetType().Name == typeName); + } + + private static T GetObjectReference(UnityEngine.Object owner, string propertyName) + where T : UnityEngine.Object + { + if (owner == null) + { + return null; + } + + SerializedProperty property = new SerializedObject(owner).FindProperty(propertyName); + return property != null ? property.objectReferenceValue as T : null; + } + + private static float FirstWeaponDamage(TowerTemplate legacyTemplate) + { + return legacyTemplate.weapons != null && legacyTemplate.weapons.Count > 0 + ? legacyTemplate.weapons[0].damage + : 0f; + } + + private static Sprite GetPrefabSprite(GameObject prefab) + { + SpriteRenderer renderer = prefab.GetComponentInChildren(true); + return renderer != null ? renderer.sprite : null; + } + + private static EnemyDefinition LoadEnemyDefinition(string assetName) + { + EnemyDefinition definition = + AssetDatabase.LoadAssetAtPath(EnemyDataRoot + "/" + assetName + ".asset"); + if (definition == null) + { + throw new InvalidOperationException($"Missing enemy definition: {assetName}"); + } + + return definition; + } + + private static WaveDefinition LoadWaveDefinition(string assetNamePrefix) + { + string[] matches = AssetDatabase.FindAssets(assetNamePrefix + " t:WaveDefinition", new[] { WaveDataRoot }) + .Select(AssetDatabase.GUIDToAssetPath) + .Where(path => System.IO.Path.GetFileNameWithoutExtension(path).StartsWith(assetNamePrefix, StringComparison.Ordinal)) + .OrderBy(path => path) + .ToArray(); + + if (matches.Length == 0) + { + throw new InvalidOperationException($"Missing wave definition matching prefix: {assetNamePrefix}"); + } + + return AssetDatabase.LoadAssetAtPath(matches[0]); + } + + private static ProjectileBehaviourType GuessProjectileBehaviour(GameObject prefab) + { + if (HasComponentNamed(prefab, "ProjectileComboDebuff")) + { + return ProjectileBehaviourType.ComboDebuff; + } + + if (HasComponentNamed(prefab, "ProjectileAttackSpeedDebuff")) + { + return ProjectileBehaviourType.AttackSpeedDebuff; + } + + if (HasComponentNamed(prefab, "ProjectileSlowDebuff")) + { + return ProjectileBehaviourType.SlowDebuff; + } + + if (HasComponentNamed(prefab, "ProjectileAreaDamage")) + { + return ProjectileBehaviourType.Area; + } + + if (HasComponentNamed(prefab, "ProjectileHoming") + || HasComponentNamed(prefab, "ProjectileQuadraticHoming") + || HasComponentNamed(prefab, "ProjectileCubicHoming")) + { + return ProjectileBehaviourType.Homing; + } + + return ProjectileBehaviourType.Straight; + } + + private static bool HasComponentNamed(GameObject prefab, string typeName) + { + return FindComponentByTypeName(prefab, typeName) != null; + } + + private static int GetInt(UnityEngine.Object owner, string propertyName, int fallback) + { + SerializedProperty property = new SerializedObject(owner).FindProperty(propertyName); + return property != null ? property.intValue : fallback; + } + + private static float GetFloat(UnityEngine.Object owner, string propertyName, float fallback) + { + SerializedProperty property = new SerializedObject(owner).FindProperty(propertyName); + return property != null ? property.floatValue : fallback; + } + + private static void SetString(SerializedObject serializedObject, string propertyName, string value) + { + serializedObject.FindProperty(propertyName).stringValue = value; + } + + private static void SetObject(SerializedObject serializedObject, string propertyName, UnityEngine.Object value) + { + serializedObject.FindProperty(propertyName).objectReferenceValue = value; + } + + private static void SetFloat(SerializedObject serializedObject, string propertyName, float value) + { + serializedObject.FindProperty(propertyName).floatValue = value; + } + + private static void SetInt(SerializedObject serializedObject, string propertyName, int value) + { + serializedObject.FindProperty(propertyName).intValue = value; + } + + private static void SetEnum(SerializedObject serializedObject, string propertyName, TEnum value) + where TEnum : Enum + { + serializedObject.FindProperty(propertyName).enumValueIndex = Convert.ToInt32(value); + } + + private static string ToId(string source) + { + if (string.IsNullOrWhiteSpace(source)) + { + return "asset"; + } + + StringBuilder builder = new(); + foreach (char character in source) + { + if (char.IsLetterOrDigit(character)) + { + builder.Append(char.ToLowerInvariant(character)); + continue; + } + + if (builder.Length > 0 && builder[builder.Length - 1] != '_') + { + builder.Append('_'); + } + } + + return builder.ToString().Trim('_'); + } + + private readonly struct StarterWaveSpec + { + public StarterWaveSpec( + string assetName, + string displayName, + float duration, + int rewardGold, + params StarterEnemyGroup[] groups) + { + AssetName = assetName; + DisplayName = displayName; + Duration = duration; + RewardGold = rewardGold; + Groups = groups.Where(group => group.Enemy != null && group.Count > 0).ToArray(); + } + + public string AssetName { get; } + public string DisplayName { get; } + public float Duration { get; } + public int RewardGold { get; } + public IReadOnlyList Groups { get; } + } + + private readonly struct StarterEnemyGroup + { + public StarterEnemyGroup(EnemyDefinition enemy, int count, float spawnInterval) + { + Enemy = enemy; + Count = count; + SpawnInterval = spawnInterval; + } + + public EnemyDefinition Enemy { get; } + public int Count { get; } + public float SpawnInterval { get; } + } + } +} diff --git a/Assets/_Project/Scripts/Editor/CleanCoreDataMigrationBootstrapper.cs.meta b/Assets/_Project/Scripts/Editor/CleanCoreDataMigrationBootstrapper.cs.meta new file mode 100644 index 0000000..435de39 --- /dev/null +++ b/Assets/_Project/Scripts/Editor/CleanCoreDataMigrationBootstrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d663533b7e9404fb9e50d98c45ad3eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Editor/HomeProtectorAutomation.cs b/Assets/_Project/Scripts/Editor/HomeProtectorAutomation.cs new file mode 100644 index 0000000..89d0969 --- /dev/null +++ b/Assets/_Project/Scripts/Editor/HomeProtectorAutomation.cs @@ -0,0 +1,350 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using HomeProtector.Core; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.Tilemaps; + +namespace HomeProtector.Editor.AssetPipeline +{ + public static class HomeProtectorAutomation + { + private const string DataRoot = "Assets/_Project/Data"; + private const string DayWaveTablePath = DataRoot + "/DayWaveTable.asset"; + private const string PlayableScenePath = "Assets/Scenes/isometric scene.unity"; + private const string PlaceholderPostBoxPrefabPath = "Assets/Prefabs/PostBox.prefab"; + private const string ForbiddenTilemapMaterialPath = "Assets/Prefabs/Last/Materials/우체통.mat"; + + public static void ValidateProject() + { + List issues = new(); + + if (EditorUtility.scriptCompilationFailed) + { + issues.Add("Unity reports script compilation errors."); + } + + int sceneCount = ValidateEnabledScenes(issues); + int dataAssetCount = ValidateFoundationData(issues); + + if (issues.Count > 0) + { + foreach (string issue in issues) + { + Debug.LogError("HOME_PROTECTOR_VALIDATE_ERROR " + issue); + } + + throw new BuildFailedException( + $"Home Protector validation failed with {issues.Count} issue(s)."); + } + + Debug.Log( + $"HOME_PROTECTOR_VALIDATE_OK scenes={sceneCount} dataAssets={dataAssetCount}"); + } + + private static int ValidateEnabledScenes(List issues) + { + EditorBuildSettingsScene[] enabledScenes = EditorBuildSettings.scenes + .Where(scene => scene.enabled) + .ToArray(); + + bool playableSceneEnabled = enabledScenes.Any(scene => scene.path == PlayableScenePath); + if (enabledScenes.Length == 0) + { + issues.Add("Build Settings has no enabled scenes."); + } + + if (!playableSceneEnabled) + { + issues.Add($"Build Settings must enable the playable scene: {PlayableScenePath}."); + enabledScenes = enabledScenes + .Concat(new[] { new EditorBuildSettingsScene(PlayableScenePath, true) }) + .ToArray(); + } + + int validatedSceneCount = 0; + foreach (EditorBuildSettingsScene buildScene in enabledScenes) + { + string scenePath = buildScene.path; + if (string.IsNullOrWhiteSpace(scenePath) || + AssetDatabase.LoadAssetAtPath(scenePath) == null) + { + issues.Add($"Enabled scene does not exist: '{scenePath}'."); + continue; + } + + Scene scene = SceneManager.GetSceneByPath(scenePath); + bool openedForValidation = !scene.IsValid() || !scene.isLoaded; + + try + { + if (openedForValidation) + { + scene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Additive); + } + + foreach (GameObject root in scene.GetRootGameObjects()) + { + ValidateHierarchy(root, scenePath, issues); + } + + validatedSceneCount++; + } + catch (Exception exception) + { + issues.Add($"Could not validate scene '{scenePath}': {exception.Message}"); + } + finally + { + if (openedForValidation && scene.IsValid() && scene.isLoaded) + { + EditorSceneManager.CloseScene(scene, true); + } + } + } + + return validatedSceneCount; + } + + private static void ValidateHierarchy(GameObject gameObject, string scenePath, List issues) + { + int missingScriptCount = GameObjectUtility.GetMonoBehavioursWithMissingScriptCount(gameObject); + GameObject instanceRoot = PrefabUtility.GetNearestPrefabInstanceRoot(gameObject); + if (instanceRoot == gameObject) + { + GameObject source = PrefabUtility.GetCorrespondingObjectFromSource(gameObject); + if (source != null && + AssetDatabase.GetAssetPath(source) == PlaceholderPostBoxPrefabPath) + { + issues.Add($"{scenePath}: {GetHierarchyPath(gameObject)} uses the temporary PostBox prefab."); + } + } + + TilemapRenderer tilemapRenderer = gameObject.GetComponent(); + if (tilemapRenderer != null && + AssetDatabase.GetAssetPath(tilemapRenderer.sharedMaterial) == ForbiddenTilemapMaterialPath) + { + issues.Add( + $"{scenePath}: {GetHierarchyPath(gameObject)} uses the forbidden PostBox tilemap material."); + } + + if (missingScriptCount > 0) + { + issues.Add( + $"{scenePath}: {GetHierarchyPath(gameObject)} has " + + $"{missingScriptCount} missing script(s)."); + } + + foreach (Component component in gameObject.GetComponents()) + { + if (component != null) + { + try + { + CollectMissingObjectReferences(component, scenePath, gameObject, issues); + } + catch (Exception exception) + { + issues.Add( + $"{scenePath}: {GetHierarchyPath(gameObject)} " + + $"({component.GetType().Name}) reference validation threw " + + $"{exception.GetType().Name}: {exception.Message}"); + } + } + } + + foreach (Transform child in gameObject.transform) + { + ValidateHierarchy(child.gameObject, scenePath, issues); + } + } + + private static void CollectMissingObjectReferences( + Component component, + string scenePath, + GameObject owner, + List issues) + { + SerializedProperty property = new SerializedObject(component).GetIterator(); + while (property.Next(true)) + { + if (property.propertyType != SerializedPropertyType.ObjectReference || + property.objectReferenceValue != null || + property.objectReferenceInstanceIDValue == 0) + { + continue; + } + + issues.Add( + $"{scenePath}: {GetHierarchyPath(owner)} " + + $"({component.GetType().Name}.{property.propertyPath}) has a missing reference."); + } + } + + private static int ValidateFoundationData(List issues) + { + int validatedAssetCount = 0; + DayWaveTable dayWaveTable = AssetDatabase.LoadAssetAtPath(DayWaveTablePath); + if (dayWaveTable == null) + { + issues.Add($"Missing Foundation data asset: {DayWaveTablePath}."); + } + else + { + validatedAssetCount++; + if (!dayWaveTable.IsValid(out string message)) + { + issues.Add($"{DayWaveTablePath}: {message}"); + } + IReadOnlyList entries = dayWaveTable.Entries; + if (entries != null) + { + for (int entryIndex = 0; entryIndex < entries.Count; entryIndex++) + { + DayWaveEntry entry = entries[entryIndex]; + if (entry == null) + { + issues.Add($"{DayWaveTablePath}: entry {entryIndex} is null."); + continue; + } + + IReadOnlyList waves = entry.Waves; + if (waves == null) + { + issues.Add($"{DayWaveTablePath}: entry {entryIndex} waves collection is null."); + continue; + } + + for (int waveIndex = 0; waveIndex < waves.Count; waveIndex++) + { + if (waves[waveIndex] == null) + { + issues.Add( + $"{DayWaveTablePath}: entry {entryIndex} has a missing wave " + + $"at index {waveIndex}."); + } + } + } + } + } + + validatedAssetCount += ValidateDefinitions( + "t:TowerDefinition", + ValidateTowerDefinition, + issues); + validatedAssetCount += ValidateDefinitions( + "t:EnemyDefinition", + ValidateEnemyDefinition, + issues); + validatedAssetCount += ValidateDefinitions( + "t:ProjectileDefinition", + ValidateProjectileDefinition, + issues); + validatedAssetCount += ValidateDefinitions( + "t:WaveDefinition", + ValidateWaveDefinition, + issues); + + return validatedAssetCount; + } + + private static int ValidateDefinitions( + string filter, + Func validate, + List issues) + where T : UnityEngine.Object + { + string[] paths = AssetDatabase.FindAssets(filter, new[] { DataRoot }) + .Select(AssetDatabase.GUIDToAssetPath) + .OrderBy(path => path) + .ToArray(); + + if (paths.Length == 0) + { + issues.Add($"Foundation data contains no assets matching '{filter}'."); + return 0; + } + + foreach (string path in paths) + { + T definition = AssetDatabase.LoadAssetAtPath(path); + if (definition == null) + { + issues.Add($"Could not load Foundation data asset: {path}."); + continue; + } + + try + { + string issue = validate(definition); + if (!string.IsNullOrEmpty(issue)) + { + issues.Add($"{path}: {issue}"); + } + } + catch (Exception exception) + { + issues.Add($"{path}: validation threw {exception.GetType().Name}: {exception.Message}"); + } + } + + return paths.Length; + } + + private static string ValidateTowerDefinition(TowerDefinition definition) + { + if (!definition.IsValid(out string message)) + { + return message; + } + + for (int levelIndex = 0; levelIndex < definition.Levels.Count; levelIndex++) + { + TowerLevelDefinition level = definition.Levels[levelIndex]; + if (level == null) + { + return $"Tower '{definition.Id}' has a null level at index {levelIndex}."; + } + + if (level.Projectile == null) + { + return $"Tower '{definition.Id}' level {levelIndex} has no projectile."; + } + } + + return string.Empty; + } + + private static string ValidateEnemyDefinition(EnemyDefinition definition) + { + return definition.IsValid(out string message) ? string.Empty : message; + } + + private static string ValidateProjectileDefinition(ProjectileDefinition definition) + { + return definition.IsValid(out string message) ? string.Empty : message; + } + + private static string ValidateWaveDefinition(WaveDefinition definition) + { + return definition.IsValid(out string message) ? string.Empty : message; + } + + private static string GetHierarchyPath(GameObject gameObject) + { + Stack names = new(); + Transform current = gameObject.transform; + while (current != null) + { + names.Push(current.name); + current = current.parent; + } + + return string.Join("/", names); + } + } +} diff --git a/Assets/_Project/Scripts/Editor/HomeProtectorAutomation.cs.meta b/Assets/_Project/Scripts/Editor/HomeProtectorAutomation.cs.meta new file mode 100644 index 0000000..b72c5a8 --- /dev/null +++ b/Assets/_Project/Scripts/Editor/HomeProtectorAutomation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a03643efbb6aac94990b36d2e18d54a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/_Project/Scripts/Legacy.meta similarity index 100% rename from Assets/Scripts.meta rename to Assets/_Project/Scripts/Legacy.meta diff --git a/Assets/Scripts/ArrowManager.cs b/Assets/_Project/Scripts/Legacy/ArrowManager.cs similarity index 100% rename from Assets/Scripts/ArrowManager.cs rename to Assets/_Project/Scripts/Legacy/ArrowManager.cs diff --git a/Assets/Scripts/ArrowManager.cs.meta b/Assets/_Project/Scripts/Legacy/ArrowManager.cs.meta similarity index 100% rename from Assets/Scripts/ArrowManager.cs.meta rename to Assets/_Project/Scripts/Legacy/ArrowManager.cs.meta diff --git a/Assets/Scripts/BGMManager.cs b/Assets/_Project/Scripts/Legacy/BGMManager.cs similarity index 100% rename from Assets/Scripts/BGMManager.cs rename to Assets/_Project/Scripts/Legacy/BGMManager.cs diff --git a/Assets/Scripts/BGMManager.cs.meta b/Assets/_Project/Scripts/Legacy/BGMManager.cs.meta similarity index 100% rename from Assets/Scripts/BGMManager.cs.meta rename to Assets/_Project/Scripts/Legacy/BGMManager.cs.meta diff --git a/Assets/Scripts/CameraFollow.cs b/Assets/_Project/Scripts/Legacy/CameraFollow.cs similarity index 100% rename from Assets/Scripts/CameraFollow.cs rename to Assets/_Project/Scripts/Legacy/CameraFollow.cs diff --git a/Assets/Scripts/CameraFollow.cs.meta b/Assets/_Project/Scripts/Legacy/CameraFollow.cs.meta similarity index 100% rename from Assets/Scripts/CameraFollow.cs.meta rename to Assets/_Project/Scripts/Legacy/CameraFollow.cs.meta diff --git a/Assets/Scripts/DayBasedWavePresets.cs b/Assets/_Project/Scripts/Legacy/DayBasedWavePresets.cs similarity index 100% rename from Assets/Scripts/DayBasedWavePresets.cs rename to Assets/_Project/Scripts/Legacy/DayBasedWavePresets.cs diff --git a/Assets/Scripts/DayBasedWavePresets.cs.meta b/Assets/_Project/Scripts/Legacy/DayBasedWavePresets.cs.meta similarity index 100% rename from Assets/Scripts/DayBasedWavePresets.cs.meta rename to Assets/_Project/Scripts/Legacy/DayBasedWavePresets.cs.meta diff --git a/Assets/Scripts/DayBasedWaveSystem.cs b/Assets/_Project/Scripts/Legacy/DayBasedWaveSystem.cs similarity index 100% rename from Assets/Scripts/DayBasedWaveSystem.cs rename to Assets/_Project/Scripts/Legacy/DayBasedWaveSystem.cs diff --git a/Assets/Scripts/DayBasedWaveSystem.cs.meta b/Assets/_Project/Scripts/Legacy/DayBasedWaveSystem.cs.meta similarity index 100% rename from Assets/Scripts/DayBasedWaveSystem.cs.meta rename to Assets/_Project/Scripts/Legacy/DayBasedWaveSystem.cs.meta diff --git a/Assets/Scripts/DayCounterSystem.cs b/Assets/_Project/Scripts/Legacy/DayCounterSystem.cs similarity index 100% rename from Assets/Scripts/DayCounterSystem.cs rename to Assets/_Project/Scripts/Legacy/DayCounterSystem.cs diff --git a/Assets/Scripts/DayCounterSystem.cs.meta b/Assets/_Project/Scripts/Legacy/DayCounterSystem.cs.meta similarity index 100% rename from Assets/Scripts/DayCounterSystem.cs.meta rename to Assets/_Project/Scripts/Legacy/DayCounterSystem.cs.meta diff --git a/Assets/Scripts/DraggableResource.cs b/Assets/_Project/Scripts/Legacy/DraggableResource.cs similarity index 100% rename from Assets/Scripts/DraggableResource.cs rename to Assets/_Project/Scripts/Legacy/DraggableResource.cs diff --git a/Assets/Scripts/DraggableResource.cs.meta b/Assets/_Project/Scripts/Legacy/DraggableResource.cs.meta similarity index 100% rename from Assets/Scripts/DraggableResource.cs.meta rename to Assets/_Project/Scripts/Legacy/DraggableResource.cs.meta diff --git a/Assets/Scripts/Enemy.cs b/Assets/_Project/Scripts/Legacy/Enemy.cs similarity index 58% rename from Assets/Scripts/Enemy.cs rename to Assets/_Project/Scripts/Legacy/Enemy.cs index a43fa0b..03aafba 100644 --- a/Assets/Scripts/Enemy.cs +++ b/Assets/_Project/Scripts/Legacy/Enemy.cs @@ -8,42 +8,42 @@ public enum EnemyDestroyType { Kill = 0, Arrive } public class Enemy : MonoBehaviour { [Header("Basic Settings")] - [SerializeField] public int gold = 10; // ȹ - [SerializeField] public int expValue = 20; // ȹ ġ + [SerializeField] public int gold = 10; // 적 사망시 획득 골드 + [SerializeField] public int expValue = 20; // 적 사망시 획득 경험치 [Header("Target Selection")] - [SerializeField, Tooltip("Ÿ ± 켱 ( ˻)")] - public string[] targetTagPriority = { "Goods", "Food", "Human" }; // Ÿ ± 켱 - [SerializeField, Tooltip("Ÿ ˻ ")] - private float targetSearchRadius = 10f; // Ÿ ˻ - [SerializeField, Tooltip("Ÿ ֱ ()")] - private float targetUpdateInterval = 1f; // Ÿ ֱ - [SerializeField, Tooltip("⺻ Ÿ ±")] - private string defaultTargetTag = "Target"; // ⺻ Ÿ ± + [SerializeField, Tooltip("타겟 태그 우선순위 (순서대로 검색)")] + public string[] targetTagPriority = { "Goods", "Food", "Human" }; // 타겟 태그 우선순위 + [SerializeField, Tooltip("타겟 검색 범위")] + private float targetSearchRadius = 30f; // 타겟 검색 범위 + [SerializeField, Tooltip("타겟 갱신 주기 (초)")] + private float targetUpdateInterval = 1f; // 타겟 갱신 주기 + [SerializeField, Tooltip("기본 타겟 태그")] + private string defaultTargetTag = "Target"; // 기본 타겟 태그 [Header("Attack Settings")] - [SerializeField] private bool hasAttack = true; // Ȱȭ + [SerializeField] private bool hasAttack = true; // 공격 기능 활성화 여부 [Header("Isometric Settings")] - [SerializeField] private bool useIsometricPosition = true; // ̼ҸƮ ġ + [SerializeField] private bool useIsometricPosition = true; // 이소메트릭 위치 사용 여부 [Header("Debug")] - [SerializeField] private bool debugMode = false; // + [SerializeField] private bool debugMode = false; // 디버그 모드 - private Transform target; // Ÿ + private Transform target; // 현재 타겟 private NavMeshAgent navMeshAgent; private EnemySpawner enemySpawner; private EnemyHP enemyHP; private EnemyAttack enemyAttack; - private EnemyDirectionFlipper directionFlipper; // ȯ Ʈ - private IsometricPositionHandler isometricPosition; // ̼ҸƮ ġ ڵ鷯 + private EnemyDirectionFlipper directionFlipper; // 방향 전환 컴포넌트 참조 + private IsometricPositionHandler isometricPosition; // 이소메트릭 위치 핸들러 private Vector3 spawnOffset = Vector3.zero; private Transform customSpawnPoint = null; - private string targetTag = "Target"; // Ÿ ± - private float lastTargetSearchTime; // Ÿ ˻ ð - private bool isSearchingForTarget = false; // Ÿ ˻ (ߺ ˻ ) + private string targetTag = "Target"; // 현재 사용 중인 타겟 태그 + private float lastTargetSearchTime; // 마지막 타겟 검색 시간 + private bool isSearchingForTarget = false; // 타겟 검색 중 여부(중복 검색 방지) - // Ÿٿ ߰ + // 현재 타겟에 대한 접근자 추가 public Transform CurrentTarget => target; public string TargetTag => targetTag; public int GoldValue => gold; @@ -51,24 +51,24 @@ public class Enemy : MonoBehaviour private void Awake() { - // ʿ Ʈ + // 필요한 컴포넌트 가져오기 enemyHP = GetComponent(); enemyAttack = GetComponent(); - // Ʈ 鼭 Ȱȭ , Ʈ ߰ + // 공격 컴포넌트가 없으면서 공격 기능이 활성화된 경우, 컴포넌트 추가 if (hasAttack && enemyAttack == null) { enemyAttack = gameObject.AddComponent(); } - // ȯ Ʈ Ȯ ߰ + // 방향 전환 컴포넌트 확인 및 추가 directionFlipper = GetComponent(); if (directionFlipper == null) { directionFlipper = gameObject.AddComponent(); } - // ̼ҸƮ ġ ڵ鷯 Ȯ ߰ + // 이소메트릭 위치 핸들러 확인 및 추가 if (useIsometricPosition) { isometricPosition = GetComponent(); @@ -79,16 +79,16 @@ private void Awake() } } - // Update ޼忡 Ÿ ã + // Update 메서드에서 더 적극적으로 타겟을 찾도록 수정 private void Update() { - // Ÿ ų ȿ Ÿ ã + // 타겟이 없거나 유효하지 않은 경우 새 타겟 찾기 if ((target == null || (TargetManager.Instance != null && !TargetManager.Instance.IsTargetValid(target))) && !isSearchingForTarget) { - // Ÿ ˻ + // 타겟이 없는 경우 더 빠르게 검색 float interval = target == null ? targetUpdateInterval * 0.5f : targetUpdateInterval; - // ˻κ ð Ȯ + // 마지막 검색으로부터 일정 시간이 지났는지 확인 if (Time.time - lastTargetSearchTime >= interval) { SearchForNewTarget(); @@ -114,10 +114,10 @@ public void SetTargetTag(string tag) } } - // Ÿ ± 켱 迭 + // 타겟 태그 우선순위 배열 가져오기 public string[] GetTargetTagPriority() { - // ⺻ ± ȯ + // 비어있으면 기본 태그 반환 if (targetTagPriority == null || targetTagPriority.Length == 0) { return new string[] { defaultTargetTag }; @@ -125,26 +125,23 @@ public string[] GetTargetTagPriority() return targetTagPriority; } - // Ÿ ˻ + // 타겟 검색 범위 가져오기 public float GetTargetSearchRadius() { return targetSearchRadius; } - // Ÿ ϴ ޼ + // 타겟을 변경하는 메서드 public void SetTarget(Transform newTarget) { if (newTarget != null && newTarget != target) { target = newTarget; - // NavMeshAgent 缳 - if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled) - { - navMeshAgent.SetDestination(target.position); - } + // NavMeshAgent 경로 재설정 + TrySetDestination(target.position); - // ȯ Ʈ Ÿ + // 방향 전환 컴포넌트가 있으면 타겟 방향으로 설정 if (directionFlipper != null) { directionFlipper.SetFacingDirection(target.position); @@ -162,7 +159,7 @@ public void Setup(EnemySpawner spawner, Transform target) enemySpawner = spawner; this.target = target; - // NavMeshAgent + // NavMeshAgent 설정 navMeshAgent = GetComponent(); if (navMeshAgent != null) { @@ -174,44 +171,44 @@ public void Setup(EnemySpawner spawner, Transform target) Debug.LogError("NavMeshAgent component not found on enemy!"); } - // ġ + // 스폰 위치 설정 SetSpawnPosition(); - // TargetManager ̺Ʈ + // TargetManager 이벤트 구독 if (TargetManager.Instance != null) { TargetManager.Instance.OnTargetAdded += HandleTargetAdded; TargetManager.Instance.OnTargetRemoved += HandleTargetRemoved; } - // ʱ Ÿ Ÿ ã + // 초기 타겟이 없으면 새 타겟 찾기 if (target == null) { SearchForNewTarget(); } else { - // ʱ Ÿ ش ± + // 초기 타겟이 있으면 해당 태그 저장 if (target != null) { targetTag = target.tag; } } - // ȯ (ʱ ) + // 방향 전환 설정 (초기 방향 설정) if (target != null && directionFlipper != null) { directionFlipper.SetFacingDirection(target.position); } - // ̵ ڷƾ + // 이동 코루틴 시작 StartCoroutine(OnMoveWithDirectionUpdate()); } - // ġ + // 스폰 위치를 설정 private void SetSpawnPosition() { - // ⺻ ġ + // 기본 스폰 위치 가져오기 Vector3 spawnPosition; if (customSpawnPoint != null) { @@ -222,53 +219,60 @@ private void SetSpawnPosition() spawnPosition = enemySpawner.GetSpawnPosition(); } - // + // 개별 오프셋 적용 spawnPosition += spawnOffset; - // NavMesh ġ ( NavMesh ã) + // NavMesh 위치로 조정 (가장 가까운 NavMesh 지점 찾기) NavMeshHit hit; if (NavMesh.SamplePosition(spawnPosition, out hit, 5f, NavMesh.AllAreas)) { - // ̼ҸƮ ġ ڵ鷯 ο ٸ ó + Vector3 navMeshPosition = hit.position; + + if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled) + { + navMeshAgent.Warp(navMeshPosition); + } + + // 이소메트릭 위치 핸들러 사용 여부에 따라 다르게 처리 if (isometricPosition != null) { - isometricPosition.SetPosition(hit.position); + isometricPosition.SetPosition(navMeshPosition); } else { - // z ġ - Vector3 position = hit.position; + // 수동으로 z 위치 조정 + Vector3 position = navMeshPosition; position.z = position.y; transform.position = position; } } else { - Debug.LogWarning("NavMesh ã ϴ. ġ ˴ϴ."); + Debug.LogWarning("NavMesh 지점을 찾을 수 없습니다. 원래 위치에 스폰됩니다."); - // ̼ҸƮ ġ ڵ鷯 ο ٸ ó + // 이소메트릭 위치 핸들러 사용 여부에 따라 다르게 처리 if (isometricPosition != null) { isometricPosition.SetPosition(spawnPosition); } else { - // z ġ + // 수동으로 z 위치 조정 spawnPosition.z = spawnPosition.y; transform.position = spawnPosition; } } } - // Ÿ ߰Ǿ ȣǴ ڵ鷯 + // 타겟이 추가되었을 때 호출되는 핸들러 private void HandleTargetAdded(string tag, Transform newTarget) { - // Ÿ + // 현재 타겟이 없는 경우 if (target == null) { SearchForNewTarget(); } - // Ÿ ȿ ʰ, ߰ Ÿ ±װ 켱 ִ + // 현재 타겟이 유효하지 않고, 추가된 타겟의 태그가 우선순위에 있는 경우 else if (!TargetManager.Instance.IsTargetValid(target)) { string[] priorities = GetTargetTagPriority(); @@ -276,7 +280,7 @@ private void HandleTargetAdded(string tag, Transform newTarget) { if (priorities[i] == tag) { - // ±׺ 켱 Ÿ + // 현재 태그보다 높은 우선순위면 즉시 타겟 변경 if (i < System.Array.IndexOf(priorities, targetTag)) { SearchForNewTarget(); @@ -287,48 +291,48 @@ private void HandleTargetAdded(string tag, Transform newTarget) } } - // Ÿ ŵǾ ȣǴ ڵ鷯 + // 타겟이 제거되었을 때 호출되는 핸들러 private void HandleTargetRemoved(string tag, Transform removedTarget) { - // Ÿ ŵ Ÿ Ÿ ã + // 현재 타겟이 제거된 타겟인 경우 새 타겟 찾기 if (target == removedTarget) { SearchForNewTarget(); } - // Ǵ Ÿ ±׿ ±̰, ش ± Ʈ ̻ + // 또는 현재 타겟의 태그와 같은 태그이고, 해당 태그의 오브젝트가 더 이상 없는 경우 else if (tag == targetTag && TargetManager.Instance.GetTargetCountForTag(tag) == 0) { - // 켱 ±׷ Ÿ ã + // 다음 우선순위 태그로 타겟 찾기 SearchForNewTarget(); } } - // SearchForNewTarget ޼ + // SearchForNewTarget 메서드 수정 private void SearchForNewTarget() { - // ߺ ˻ + // 중복 검색 방지 if (isSearchingForTarget) return; isSearchingForTarget = true; - // ˻ ð + // 마지막 검색 시간 갱신 lastTargetSearchTime = Time.time; Transform newTarget = null; - // ⺻ ˻ õ + // 기본 검색 범위로 시도 float searchRadius = targetSearchRadius; - // TargetManager 켱 Ÿ ã + // TargetManager를 통해 우선순위별로 타겟 찾기 if (TargetManager.Instance != null) { - // Ÿ ± 켱 + // 프리팹의 설정된 타겟 태그 우선순위 사용 newTarget = TargetManager.Instance.FindTargetByPriority( GetTargetTagPriority(), transform.position, searchRadius ); - // ã ߴٸ ˻ 2 ÷ õ + // 찾지 못했다면 검색 범위를 2배로 늘려서 재시도 if (newTarget == null) { searchRadius *= 2; @@ -339,7 +343,7 @@ private void SearchForNewTarget() ); } - // ׷ ã ߴٸ ü ˻ ( ) + // 그래도 찾지 못했다면 전체 씬에서 검색 (제한 없음) if (newTarget == null) { newTarget = TargetManager.Instance.FindTargetByPriority( @@ -349,37 +353,37 @@ private void SearchForNewTarget() ); } - // ã Ÿ ± (߿ ) + // 찾은 타겟의 태그 저장 (나중에 참조용) if (newTarget != null) { targetTag = newTarget.tag; } - // Ÿ ã ߴٸ, ˻ ð մ + // 여전히 타겟을 찾지 못했다면, 다음 검색 시간을 앞당김 else { lastTargetSearchTime = Time.time - (targetUpdateInterval * 0.8f); } } - // Ÿ ã + // 타겟을 찾았으면 설정 if (newTarget != null) { SetTarget(newTarget); if (debugMode) { - Debug.Log($" {gameObject.name}() Ÿ ã: {newTarget.name} (±: {newTarget.tag})"); + Debug.Log($"적 {gameObject.name}이(가) 새 타겟 찾음: {newTarget.name} (태그: {newTarget.tag})"); } } else if (debugMode) { - Debug.LogWarning($" {gameObject.name}() Ÿ ã ߽ϴ! ˻մϴ."); + Debug.LogWarning($"적 {gameObject.name}이(가) 타겟을 찾지 못했습니다! 더 빠르게 재검색합니다."); } isSearchingForTarget = false; } private void OnDisable() { - // TargetManager ̺Ʈ + // TargetManager 이벤트 구독 해제 if (TargetManager.Instance != null) { TargetManager.Instance.OnTargetAdded -= HandleTargetAdded; @@ -387,7 +391,7 @@ private void OnDisable() } } - // Enemy Ŭ OnMoveWithDirectionUpdate ڷƾ + // Enemy 클래스의 OnMoveWithDirectionUpdate 코루틴 수정 private IEnumerator OnMoveWithDirectionUpdate() { int stuckCounter = 0; @@ -395,75 +399,64 @@ private IEnumerator OnMoveWithDirectionUpdate() while (true) { - // Ÿ ų ȿ , Ÿ ã + // 타겟이 없거나 유효하지 않은 경우, 더 적극적으로 새 타겟 찾기 if (target == null || (TargetManager.Instance != null && !TargetManager.Instance.IsTargetValid(target))) { - // Ÿ ã õ - SearchForNewTarget(targetSearchRadius * 2); // ˻ + // 즉시 새 타겟 찾기 시도 + SearchForNewTarget(targetSearchRadius * 2); // 더 넓은 범위로 검색 - // ׷ Ÿ ٸ + // 그래도 타겟이 없다면 if (target == null) { - // ϰ Ͽ ڸ ɵ + // 방향을 랜덤하게 변경하여 제자리 맴돌기 방지 Vector2 randomDirection = Random.insideUnitCircle.normalized; Vector3 tempDestination = transform.position + new Vector3(randomDirection.x, randomDirection.y, 0) * 3f; - if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled) - { - NavMeshHit hit; - if (NavMesh.SamplePosition(tempDestination, out hit, 5f, NavMesh.AllAreas)) - { - navMeshAgent.SetDestination(hit.position); - } - } + TrySetDestination(tempDestination); - Debug.Log("Ÿ ã ̵մϴ."); + Debug.Log("타겟을 찾지 못해 랜덤 이동합니다."); yield return new WaitForSeconds(1f); continue; } } - // Ÿ NavMeshAgent ̵ + // 타겟이 있으면 NavMeshAgent로 이동 if (target != null && navMeshAgent != null && navMeshAgent.isActiveAndEnabled) { - navMeshAgent.SetDestination(target.position); + TrySetDestination(target.position); - // ̵ ⿡ Ʈ ȯ + // 이동 방향에 따라 스프라이트 방향 전환 if (directionFlipper != null) { Vector3 moveDirection = navMeshAgent.velocity; if (moveDirection.sqrMagnitude > 0.01f) { - // ̵ ȯ + // 이동 방향을 기준으로 방향 전환 directionFlipper.SetFacingDirection(transform.position + moveDirection); } } - // ڸ Ȯ + // 제자리에 갇혔는지 확인 if (Vector3.Distance(transform.position, lastPosition) < 0.05f) { stuckCounter++; - // ð ڸ - if (stuckCounter > 30) // 1 ڸ + // 일정 시간동안 제자리에 갇혔으면 + if (stuckCounter > 30) // 약 1초 동안 제자리에 있으면 { stuckCounter = 0; - // Ÿ ˻ ( ) + // 새 타겟 검색 강제 실행 (더 넓은 범위) SearchForNewTarget(targetSearchRadius * 3); - // ׷ Ÿ ̵ + // 그래도 타겟이 없으면 랜덤 이동 if (target == null) { Vector2 randomDirection = Random.insideUnitCircle.normalized; Vector3 tempDestination = transform.position + new Vector3(randomDirection.x, randomDirection.y, 0) * 5f; - NavMeshHit hit; - if (NavMesh.SamplePosition(tempDestination, out hit, 5f, NavMesh.AllAreas)) - { - navMeshAgent.SetDestination(hit.position); - } + TrySetDestination(tempDestination); - Debug.Log("ڸ ̵մϴ."); + Debug.Log("제자리에 갇혀 랜덤으로 이동합니다."); yield return new WaitForSeconds(1f); } } @@ -475,28 +468,30 @@ private IEnumerator OnMoveWithDirectionUpdate() lastPosition = transform.position; - // ǥ ߴ Ȯ + // 목표에 도달했는지 확인 float distanceToTarget = Vector3.Distance(transform.position, target.position); if (distanceToTarget < 0.5f) { - // ResourceObject + // ResourceObject인 경우 ResourceObject resource = target.GetComponent(); if (resource != null) { - // ҽ ı Ÿ ˻ ( ) - yield return new WaitForSeconds(0.5f); // + // 리소스 파괴 후 즉시 다음 타겟 검색 (더 넓은 범위) + yield return new WaitForSeconds(0.5f); // 잠시 대기 SearchForNewTarget(targetSearchRadius * 2); continue; } else { - - yield break; + target = null; + SearchForNewTarget(targetSearchRadius * 2); + yield return new WaitForSeconds(0.25f); + continue; } } } - // ̼ҸƮ ġ ڵ鷯 Z ġ + // 이소메트릭 위치 핸들러가 없는 경우 수동으로 Z 위치 조정 if (isometricPosition == null && useIsometricPosition) { Vector3 position = transform.position; @@ -508,71 +503,103 @@ private IEnumerator OnMoveWithDirectionUpdate() } } - // Ű ޴ Ÿ ã ޼ + // 범위를 매개변수로 받는 새 타겟 찾기 메서드 private void SearchForNewTarget(float searchRadius = -1) { - // ߺ ˻ + // 중복 검색 방지 if (isSearchingForTarget) return; isSearchingForTarget = true; - // ⺻ ˻ + // 기본 검색 범위 사용 여부 float actualRadius = searchRadius > 0 ? searchRadius : targetSearchRadius; - // ˻ ð + // 마지막 검색 시간 갱신 lastTargetSearchTime = Time.time; Transform newTarget = null; - // TargetManager 켱 Ÿ ã + // TargetManager를 통해 우선순위별로 타겟 찾기 if (TargetManager.Instance != null) { - // Ÿ ± 켱 + // 프리팹의 설정된 타겟 태그 우선순위 사용 newTarget = TargetManager.Instance.FindTargetByPriority( GetTargetTagPriority(), transform.position, actualRadius ); - // ã Ÿ ± (߿ ) + // 찾은 타겟의 태그 저장 (나중에 참조용) if (newTarget != null) { targetTag = newTarget.tag; - Debug.Log($" Ÿ ã: {newTarget.name} (±: {targetTag}, Ÿ: {Vector3.Distance(transform.position, newTarget.position)})"); + Debug.Log($"새 타겟 찾음: {newTarget.name} (태그: {targetTag}, 거리: {Vector3.Distance(transform.position, newTarget.position)})"); } else { - Debug.LogWarning($"Ÿ ã ߽ϴ. ˻ : {actualRadius}"); + Debug.LogWarning($"타겟을 찾지 못했습니다. 검색 범위: {actualRadius}"); } } - // Ÿ ã + // 타겟을 찾았으면 설정 if (newTarget != null) { SetTarget(newTarget); - // NavMeshAgent ߰ + // NavMeshAgent 리셋 추가 if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled) { - navMeshAgent.ResetPath(); - navMeshAgent.SetDestination(newTarget.position); + TrySetDestination(newTarget.position); } } isSearchingForTarget = false; } + private bool TrySetDestination(Vector3 destination) + { + if (navMeshAgent == null || !navMeshAgent.isActiveAndEnabled) + { + return false; + } + + if (!navMeshAgent.isOnNavMesh) + { + NavMeshHit currentHit; + if (!NavMesh.SamplePosition(transform.position, out currentHit, 5f, NavMesh.AllAreas)) + { + if (debugMode) + { + Debug.LogWarning($"{name}: NavMesh 위에 있지 않아 목적지를 설정할 수 없습니다."); + } + return false; + } + + navMeshAgent.Warp(currentHit.position); + } + + NavMeshHit destinationHit; + Vector3 finalDestination = destination; + if (NavMesh.SamplePosition(destination, out destinationHit, 3f, NavMesh.AllAreas)) + { + finalDestination = destinationHit.position; + } + + navMeshAgent.ResetPath(); + return navMeshAgent.SetDestination(finalDestination); + } + public void OnDie(EnemyDestroyType type) { if (enemySpawner == null) { Debug.LogError("EnemySpawner is not assigned! Check the Setup method."); - return; // NullReferenceException + return; // NullReferenceException 방지 } - // ÷̾ ġ + // 플레이어 경험치 참조 가져오기 PlayerExperience playerExperience = FindObjectOfType(); - // KILL ġ ο + // KILL일 경우 경험치 부여 if (type == EnemyDestroyType.Kill && playerExperience != null) { playerExperience.AddExperienceForEnemy(type, expValue); @@ -580,4 +607,4 @@ public void OnDie(EnemyDestroyType type) enemySpawner.DestroyEnemy(type, this, gold); } -} \ No newline at end of file +} diff --git a/Assets/Scripts/Enemy.cs.meta b/Assets/_Project/Scripts/Legacy/Enemy.cs.meta similarity index 100% rename from Assets/Scripts/Enemy.cs.meta rename to Assets/_Project/Scripts/Legacy/Enemy.cs.meta diff --git a/Assets/Scripts/EnemyAttack.cs b/Assets/_Project/Scripts/Legacy/EnemyAttack.cs similarity index 55% rename from Assets/Scripts/EnemyAttack.cs rename to Assets/_Project/Scripts/Legacy/EnemyAttack.cs index 7a7bdd3..ea380d5 100644 --- a/Assets/Scripts/EnemyAttack.cs +++ b/Assets/_Project/Scripts/Legacy/EnemyAttack.cs @@ -8,89 +8,89 @@ public enum AttackType { None, Melee, Ranged } public class EnemyAttack : MonoBehaviour { [Header("Attack Settings")] - [SerializeField] private AttackType attackType = AttackType.Melee; // - [SerializeField] private float attackRange = 1.5f; // - [SerializeField] private float attackRate = 1.0f; // ʴ Ƚ - [SerializeField] private float attackDamage = 10f; // - [SerializeField] private LayerMask targetLayers; // ̾ + [SerializeField] private AttackType attackType = AttackType.Melee; // 공격 유형 + [SerializeField] private float attackRange = 1.5f; // 공격 범위 + [SerializeField] private float attackRate = 1.0f; // 초당 공격 횟수 + [SerializeField] private float attackDamage = 10f; // 공격 데미지 + [SerializeField] private LayerMask targetLayers; // 대상 레이어 [Header("Ranged Attack Settings")] - [SerializeField] private GameObject projectilePrefab; // ߻ü (Ÿ ݿ) - [SerializeField] private Transform attackPoint; // ߻ ġ + [SerializeField] private GameObject projectilePrefab; // 발사체 프리팹 (원거리 공격용) + [SerializeField] private Transform attackPoint; // 발사 위치 [Header("Effects")] - [SerializeField] private GameObject attackEffect; // ȿ - [SerializeField] private AudioClip attackSound; // Ҹ + [SerializeField] private GameObject attackEffect; // 공격 효과 + [SerializeField] private AudioClip attackSound; // 공격 소리 [Header("Isometric Settings")] - [SerializeField] private bool useIsometricPosition = true; // ̼ҸƮ ġ - - // ӵ ȿ - private float originalAttackRate; // ӵ - private bool isAttackSlowed = false; // ӵ - private float attackSlowTimer = 0f; // ӵ Ÿ̸ - private float currentAttackSlowAmount = 0f; // ӵ - - private float attackTimer = 0f; // Ÿ̸ - private Enemy enemy; // Enemy Ʈ - private Transform currentTarget; // - private AudioSource audioSource; // ҽ - private IsometricPositionHandler isometricPosition; // ̼ҸƮ ġ ڵ鷯 - private bool isInitialized = false; // ʱȭ Ȯο - - // Awake: ʱȭ + [SerializeField] private bool useIsometricPosition = true; // 이소메트릭 위치 사용 여부 + + // 공격 속도 감소 효과 관련 변수 + private float originalAttackRate; // 원래 공격 속도 + private bool isAttackSlowed = false; // 공격 속도 감소 상태 + private float attackSlowTimer = 0f; // 공격 속도 감소 타이머 + private float currentAttackSlowAmount = 0f; // 현재 적용된 공격 속도 감소 비율 + + private float attackTimer = 0f; // 공격 타이머 + private Enemy enemy; // Enemy 컴포넌트 참조 + private Transform currentTarget; // 현재 공격 대상 + private AudioSource audioSource; // 오디오 소스 + private IsometricPositionHandler isometricPosition; // 이소메트릭 위치 핸들러 + private bool isInitialized = false; // 초기화 여부 확인용 + + // Awake: 초기화 private void Awake() { enemy = GetComponent(); - // ҽ Ǵ ʿ + // 오디오 소스 가져오기 또는 필요시 생성 audioSource = GetComponent(); if (audioSource == null && attackSound != null) { audioSource = gameObject.AddComponent(); } - originalAttackRate = attackRate; // ӵ + originalAttackRate = attackRate; // 원래 공격 속도 저장 - // ڽ ġ + // 공격 지점이 없으면 자신의 위치 사용 if (attackPoint == null) { attackPoint = transform; } - // ̼ҸƮ ġ ڵ鷯 Ȯ + // 이소메트릭 위치 핸들러 확인 if (useIsometricPosition) { isometricPosition = GetComponent(); } } - // Start: ʱȭ Ÿ + // Start: 초기화 및 타겟 설정 private void Start() { isInitialized = true; - // Enemy Ʈ Ÿ õ + // Enemy 컴포넌트에서 현재 타겟을 가져오기 시도 if (enemy != null && enemy.CurrentTarget != null) { currentTarget = enemy.CurrentTarget; } } - // Update: ó + // Update: 공격 로직 처리 private void Update() { if (!isInitialized) return; - // Ÿ Ȯ õ + // 타겟 확인 및 공격 시도 CheckTargetAndAttack(); - // ӵ ȿ Ÿ̸ Ʈ + // 공격 속도 감소 효과 타이머 업데이트 if (isAttackSlowed) { attackSlowTimer -= Time.deltaTime; - // Ÿ̸Ӱ ӵ + // 타이머가 끝나면 공격 속도 복구 if (attackSlowTimer <= 0) { ResetAttackRate(); @@ -98,41 +98,41 @@ private void Update() } } - // Ÿ Ȯ õ + // 타겟 확인 및 공격 시도 private void CheckTargetAndAttack() { - // Enemy ũƮ Ÿ (׻ Enemy Ÿ ) + // Enemy 스크립트의 현재 타겟 사용 (항상 Enemy에서 타겟을 관리) if (enemy != null && enemy.CurrentTarget != null) { currentTarget = enemy.CurrentTarget; } - // Ÿ ų ȿ Ȯ + // 타겟이 없거나 유효하지 않은지 확인 if (currentTarget == null || (TargetManager.Instance != null && !TargetManager.Instance.IsTargetValid(currentTarget))) { - return; // ȿ Ÿ + return; // 유효한 타겟이 없으면 종료 } - // Ÿٰ Ÿ + // 타겟과의 거리 계산 float distanceToTarget = Vector3.Distance(transform.position, currentTarget.position); - // + // 공격 범위 내에 있으면 공격 if (distanceToTarget <= attackRange) { - // Ÿ̸ Ʈ + // 공격 타이머 업데이트 attackTimer += Time.deltaTime; - // ֱ⿡ ϸ + // 공격 주기에 도달하면 공격 if (attackTimer >= 1f / attackRate) { - // + // 공격 실행 Attack(currentTarget); attackTimer = 0f; } } } - // + // 공격 실행 private void Attack(Transform target) { if (target == null) return; @@ -152,20 +152,20 @@ private void Attack(Transform target) } } - // + // 근접 공격 private void MeleeAttack(Transform target) { if (target == null) return; - // ȿ + // 공격 효과 재생 if (attackEffect != null) { Vector3 effectPosition = attackPoint.position; - // ̼ҸƮ ġ + // 이소메트릭 위치 조정 if (isometricPosition != null) { - // Ʈ IsometricPositionHandler ߰ + // 이펙트 생성 시 IsometricPositionHandler 추가 GameObject effect = Instantiate(attackEffect, effectPosition, Quaternion.identity); if (effect.GetComponent() == null) { @@ -174,7 +174,7 @@ private void MeleeAttack(Transform target) } else if (useIsometricPosition) { - // z ġ + // 수동으로 z 위치 조정 effectPosition.z = effectPosition.y; Instantiate(attackEffect, effectPosition, Quaternion.identity); } @@ -184,133 +184,142 @@ private void MeleeAttack(Transform target) } } - // Ҹ + // 공격 소리 재생 if (attackSound != null && audioSource != null) { audioSource.PlayOneShot(attackSound); } - // õ (پ Ÿ ) + // 데미지 적용 시도 (다양한 타겟 대응) bool damageApplied = false; - // ResourceObject Ʈ Ȯ + // ResourceObject 컴포넌트 확인 ResourceObject resource = target.GetComponent(); if (resource != null) { resource.TakeDamage(attackDamage); - Debug.Log($"{gameObject.name}() {resource.ResourceName} {attackDamage} "); + Debug.Log($"{gameObject.name}이(가) {resource.ResourceName}에 {attackDamage}의 데미지를 입힘"); damageApplied = true; } - // EnemyHP Ʈ Ȯ + // EnemyHP 컴포넌트 확인 if (!damageApplied) { EnemyHP enemyHP = target.GetComponent(); if (enemyHP != null) { enemyHP.TakeDamage(attackDamage); - Debug.Log($"{gameObject.name}() {target.name} {attackDamage} (EnemyHP)"); + Debug.Log($"{gameObject.name}이(가) {target.name}에 {attackDamage}의 데미지를 입힘 (EnemyHP)"); damageApplied = true; } } - // IDamageable ̽ Ȯ (ٸ Ÿ ) + // IDamageable 인터페이스 확인 (다른 타입의 대상) if (!damageApplied) { var damageable = target.GetComponent(); if (damageable != null) { damageable.TakeDamage((int)attackDamage); - Debug.Log($"{gameObject.name}() {target.name} {attackDamage} (IDamageable)"); + Debug.Log($"{gameObject.name}이(가) {target.name}에 {attackDamage}의 데미지를 입힘 (IDamageable)"); damageApplied = true; } } if (!damageApplied) { - Debug.LogWarning($"{target.name} ִ Ʈ ϴ."); + Debug.LogWarning($"{target.name}에는 데미지를 받을 수 있는 컴포넌트가 없습니다."); } } - // Ÿ + // 원거리 공격 private void RangedAttack(Transform target) { if (target == null) return; - // ߻ü + // 발사체 프리팹이 없으면 리턴 if (projectilePrefab == null) { - Debug.LogWarning("߻ü ʾҽϴ."); + Debug.LogWarning("발사체 프리팹이 설정되지 않았습니다."); return; } - // Ҹ + // 공격 소리 재생 if (attackSound != null && audioSource != null) { audioSource.PlayOneShot(attackSound); } - // ߻ ġ + // 발사 위치 계산 Vector3 spawnPosition = attackPoint.position; if (useIsometricPosition && isometricPosition == null) { spawnPosition.z = spawnPosition.y; } - // ߻ü + // 발사체 생성 GameObject projectile = Instantiate(projectilePrefab, spawnPosition, Quaternion.identity); - // ߻ü ProjectileBase ӹ޾Ҵ Ȯ + ProjectileEnemy enemyProjectile = projectile.GetComponent(); + if (enemyProjectile != null) + { + enemyProjectile.Setup(target, attackDamage); + return; + } + ProjectileBase projectileBase = projectile.GetComponent(); if (projectileBase != null) { - // ߻ü ʱȭ (, ) projectileBase.Setup(target, attackDamage); + return; } - else + + ProjectileBook projectileBook = projectile.GetComponent(); + if (projectileBook != null) { - // ٸ Ÿ ߻ü ó (ʿ ) - Debug.LogWarning("߻ü ProjectileBase Ʈ ϴ."); - Destroy(projectile); + projectileBook.Setup(target, attackDamage); + return; } + + Debug.LogWarning($"{projectilePrefab.name}에 지원되는 projectile Setup 컴포넌트가 없습니다."); } - // ӵ ȿ + // 공격 속도 감소 효과 적용 public void ApplyAttackSlow(float slowAmount, float duration) { - // Ӻ ̰ų, ȿ 쿡 + // 현재 적용된 감속보다 더 강한 감속이거나, 감속 효과가 곧 끝날 경우에만 적용 if (slowAmount > currentAttackSlowAmount || attackSlowTimer < 0.5f) { - // ȿ ó Ǹ ӵ + // 감속 효과가 처음 적용되면 원래 속도 저장 if (!isAttackSlowed) { originalAttackRate = attackRate; } - // ο ȿ ( ӵ = ֱ ) + // 새로운 감속 효과 적용 (공격 속도 감소 = 공격 주기 증가) currentAttackSlowAmount = slowAmount; attackRate = originalAttackRate * (1 - slowAmount); attackSlowTimer = duration; isAttackSlowed = true; - Debug.Log($"{gameObject.name} ӵ {slowAmount * 100}% (ӽð: {duration})"); + Debug.Log($"{gameObject.name}의 공격 속도 {slowAmount * 100}% 감소 (지속시간: {duration}초)"); } } - // ӵ + // 공격 속도 원래대로 복구 public void ResetAttackRate() { attackRate = originalAttackRate; isAttackSlowed = false; currentAttackSlowAmount = 0f; - Debug.Log($"{gameObject.name} ӵ "); + Debug.Log($"{gameObject.name}의 공격 속도 복구"); } - // Ϳ ðȭ + // 에디터에서 공격 범위 시각화 private void OnDrawGizmosSelected() { Gizmos.color = Color.red; Gizmos.DrawWireSphere(transform.position, attackRange); } -} \ No newline at end of file +} diff --git a/Assets/Scripts/EnemyAttack.cs.meta b/Assets/_Project/Scripts/Legacy/EnemyAttack.cs.meta similarity index 100% rename from Assets/Scripts/EnemyAttack.cs.meta rename to Assets/_Project/Scripts/Legacy/EnemyAttack.cs.meta diff --git a/Assets/Scripts/EnemyDirectionFlipper.cs b/Assets/_Project/Scripts/Legacy/EnemyDirectionFlipper.cs similarity index 100% rename from Assets/Scripts/EnemyDirectionFlipper.cs rename to Assets/_Project/Scripts/Legacy/EnemyDirectionFlipper.cs diff --git a/Assets/Scripts/EnemyDirectionFlipper.cs.meta b/Assets/_Project/Scripts/Legacy/EnemyDirectionFlipper.cs.meta similarity index 100% rename from Assets/Scripts/EnemyDirectionFlipper.cs.meta rename to Assets/_Project/Scripts/Legacy/EnemyDirectionFlipper.cs.meta diff --git a/Assets/Scripts/EnemyHP.cs b/Assets/_Project/Scripts/Legacy/EnemyHP.cs similarity index 100% rename from Assets/Scripts/EnemyHP.cs rename to Assets/_Project/Scripts/Legacy/EnemyHP.cs diff --git a/Assets/Scripts/EnemyHP.cs.meta b/Assets/_Project/Scripts/Legacy/EnemyHP.cs.meta similarity index 100% rename from Assets/Scripts/EnemyHP.cs.meta rename to Assets/_Project/Scripts/Legacy/EnemyHP.cs.meta diff --git a/Assets/Scripts/EnemyHPViewer.cs b/Assets/_Project/Scripts/Legacy/EnemyHPViewer.cs similarity index 100% rename from Assets/Scripts/EnemyHPViewer.cs rename to Assets/_Project/Scripts/Legacy/EnemyHPViewer.cs diff --git a/Assets/Scripts/EnemyHPViewer.cs.meta b/Assets/_Project/Scripts/Legacy/EnemyHPViewer.cs.meta similarity index 100% rename from Assets/Scripts/EnemyHPViewer.cs.meta rename to Assets/_Project/Scripts/Legacy/EnemyHPViewer.cs.meta diff --git a/Assets/_Project/Scripts/Legacy/EnemyJumpController.cs b/Assets/_Project/Scripts/Legacy/EnemyJumpController.cs new file mode 100644 index 0000000..39de349 --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/EnemyJumpController.cs @@ -0,0 +1,240 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.AI; + +public class EnemyJumpController : MonoBehaviour +{ + [Header("Jump Settings")] + [SerializeField] private float jumpHeight = 1.5f; // 점프 높이 + [SerializeField] private float jumpDuration = 0.7f; // 점프 지속 시간 + [SerializeField] private float jumpCooldown = 2.0f; // 점프 쿨다운 + [SerializeField] private AnimationCurve jumpCurve = AnimationCurve.EaseInOut(0, 0, 1, 1); // 점프 곡선 + + [Header("Jump Triggers")] + [SerializeField] private bool randomJumping = true; // 랜덤 점프 활성화 + [SerializeField] private float randomJumpChance = 0.1f; // 랜덤 점프 확률(0-1) + [SerializeField] private bool jumpOnObstacle = true; // 장애물에 닿으면 점프 여부 + + [Header("Effects")] + [SerializeField] private GameObject jumpEffect; // 점프 이펙트 + [SerializeField] private AudioClip jumpSound; // 점프 소리 + + // 참조 컴포넌트 + private Movement2D movement2D; + private NavMeshAgent navMeshAgent; + private Rigidbody2D rb; + private AudioSource audioSource; + private SpriteRenderer spriteRenderer; + private Enemy enemy; + + // 내부 변수 + private float jumpTimer = 0f; + private float cooldownTimer = 0f; + private bool isJumping = false; + private Vector3 jumpStartPosition; + private Vector3 jumpTargetPosition; + private float originalZ; + private Vector3 originalScale; + + private void Awake() + { + // 필요한 컴포넌트 참조 가져오기 + movement2D = GetComponent(); + navMeshAgent = GetComponent(); + rb = GetComponent(); + audioSource = GetComponent(); + spriteRenderer = GetComponent(); + enemy = GetComponent(); + + if (audioSource == null && jumpSound != null) + { + audioSource = gameObject.AddComponent(); + } + + originalScale = transform.localScale; + } + + private void Start() + { + // 쿨다운 타이머 초기화 + cooldownTimer = jumpCooldown; + originalZ = transform.position.z; + } + + private void Update() + { + // 쿨다운 타이머 업데이트 + if (cooldownTimer > 0) + { + cooldownTimer -= Time.deltaTime; + } + + // 점프 중이면 점프 업데이트 + if (isJumping) + { + UpdateJump(); + return; + } + + // 쿨다운이 끝나면 점프 가능 + if (cooldownTimer <= 0) + { + // 랜덤 점프가 활성화되었으면 확률에 따라 점프 + if (randomJumping && Random.value < randomJumpChance * Time.deltaTime) + { + StartJump(); + } + + // 장애물 감지 및 점프 (선택적으로 구현) + if (jumpOnObstacle && IsObstacleAhead()) + { + StartJump(); + } + } + } + + // 장애물 감지 메서드 + private bool IsObstacleAhead() + { + if (enemy != null && enemy.CurrentTarget != null) + { + Vector3 direction = (enemy.CurrentTarget.position - transform.position).normalized; + + // 적의 이동 방향으로 레이캐스트 + RaycastHit2D hit = Physics2D.Raycast( + transform.position, + direction, + 1.0f, + LayerMask.GetMask("Obstacle") + ); + + return hit.collider != null; + } + + return false; + } + + // 점프 시작 + public void StartJump() + { + if (isJumping || cooldownTimer > 0) + return; + + isJumping = true; + jumpTimer = 0f; + jumpStartPosition = transform.position; + + // NavMeshAgent가 있으면 일시 정지 + if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled) + { + navMeshAgent.isStopped = true; + } + + // 점프 목표 위치 설정 (현재 방향으로 약간 앞으로) + Vector3 direction = Vector3.zero; + + if (enemy != null && enemy.CurrentTarget != null) + { + direction = (enemy.CurrentTarget.position - transform.position).normalized; + } + else + { + // Movement2D에서 방향을 얻을 수 없으므로 NavMeshAgent 또는 현재 이동 방향 사용 + if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled && navMeshAgent.velocity.sqrMagnitude > 0.1f) + { + direction = navMeshAgent.velocity.normalized; + } + else + { + // 방향이 없으면 앞쪽으로 점프 + direction = transform.right; + } + } + + // 목표 위치 설정 (현재 위치에서 진행 방향으로 약간 더 앞으로) + jumpTargetPosition = transform.position + direction * (jumpHeight * 0.7f); + + // 이펙트 및 사운드 재생 + if (jumpEffect != null) + { + Instantiate(jumpEffect, transform.position, Quaternion.identity); + } + + if (jumpSound != null && audioSource != null) + { + audioSource.PlayOneShot(jumpSound); + } + + // 점프 코루틴 시작 + StartCoroutine(JumpAnimation()); + } + + // 점프 업데이트 + private void UpdateJump() + { + jumpTimer += Time.deltaTime; + + if (jumpTimer >= jumpDuration) + { + // 점프 종료 + EndJump(); + } + } + + // 점프 애니메이션 코루틴 + private IEnumerator JumpAnimation() + { + float elapsedTime = 0f; + + while (elapsedTime < jumpDuration) + { + float normalizedTime = elapsedTime / jumpDuration; + float curveValue = jumpCurve.Evaluate(normalizedTime); + + // 위치 보간 (가로, 세로 방향은 선형 보간, 높이는 커브를 따름) + Vector3 newPosition = Vector3.Lerp(jumpStartPosition, jumpTargetPosition, normalizedTime); + + // Z 위치 조정 (점프 높이) + newPosition.z = originalZ + jumpHeight * curveValue; + + // 새 위치 적용 + transform.position = newPosition; + + // 점프에 따른 스케일 약간 조정 (선택적) + transform.localScale = new Vector3( + originalScale.x, + originalScale.y * (1 + 0.1f * curveValue), // Y방향으로 약간 늘어남 + originalScale.z + ); + + elapsedTime += Time.deltaTime; + yield return null; + } + + // 최종 위치 및 스케일 조정 + transform.position = new Vector3( + jumpTargetPosition.x, + jumpTargetPosition.y, + originalZ // 원래 z 위치로 복귀 + ); + + transform.localScale = originalScale; + + EndJump(); + } + + // 점프 종료 + private void EndJump() + { + isJumping = false; + jumpTimer = 0f; + cooldownTimer = jumpCooldown; + + // NavMeshAgent 재개 + if (navMeshAgent != null && navMeshAgent.isActiveAndEnabled) + { + navMeshAgent.isStopped = false; + } + } +} \ No newline at end of file diff --git a/Assets/_Project/Scripts/Legacy/EnemyJumpController.cs.meta b/Assets/_Project/Scripts/Legacy/EnemyJumpController.cs.meta new file mode 100644 index 0000000..9d20e15 --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/EnemyJumpController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 046e5eb2ec9e2f84a827b6ae91eb69ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EnemySpawner.cs b/Assets/_Project/Scripts/Legacy/EnemySpawner.cs similarity index 55% rename from Assets/Scripts/EnemySpawner.cs rename to Assets/_Project/Scripts/Legacy/EnemySpawner.cs index 4cfeb9f..d250d0c 100644 --- a/Assets/Scripts/EnemySpawner.cs +++ b/Assets/_Project/Scripts/Legacy/EnemySpawner.cs @@ -5,7 +5,7 @@ public class EnemySpawner : MonoBehaviour { - [Header("⺻ ")] + [Header("기본 설정")] [SerializeField] private Tilemap tilemap; [SerializeField] @@ -13,35 +13,51 @@ public class EnemySpawner : MonoBehaviour [SerializeField] private Transform canvasTransform; [SerializeField] - private string defaultTargetTag = "Resource"; // ⺻ Ÿ ± + private string defaultTargetTag = "Resource"; // 기본 타겟 태그 - [Header("ҽ ")] + [Header("리소스 참조")] [SerializeField] private PlayerGold playerGold; - [Header("")] + [Header("디버그")] [SerializeField] private bool debugMode = false; private Wave currentWave; private int currentEnemyCount; private List enemyList; + private Coroutine spawnRoutine; private Vector3 offset = new Vector3(0.5f, 0.5f, 0); private List possibleSpawnPoints = new List(); - // / ̺Ʈ + // 적 스폰/제거 이벤트 public delegate void EnemyEvent(Transform enemy); public event EnemyEvent OnEnemySpawned; public event EnemyEvent OnEnemyDestroyed; - public List EnemyList => enemyList; - public int CurrentEnemyCount => currentEnemyCount; + public List EnemyList + { + get + { + PruneDestroyedEnemies(); + return enemyList; + } + } + + public int CurrentEnemyCount + { + get + { + PruneDestroyedEnemies(); + return currentEnemyCount; + } + } private void Awake() { enemyList = new List(); - // Ÿϸ Ǿ ġ + // 타일맵이 설정되어 있으면 가능한 스폰 위치 계산 if (tilemap != null) { CalculatePossibleSpawnPoints(); @@ -50,10 +66,10 @@ private void Awake() private void Start() { - // TargetManager ʱȭ Ȯ + // TargetManager 초기화 확인 if (TargetManager.Instance == null) { - Debug.LogWarning("TargetManager ʱȭ ʾҽϴ. մϴ."); + Debug.LogWarning("TargetManager가 초기화되지 않았습니다. 생성합니다."); GameObject targetManagerObj = new GameObject("TargetManager"); targetManagerObj.AddComponent(); } @@ -83,7 +99,7 @@ private void CalculatePossibleSpawnPoints() if (debugMode) { - Debug.Log($" Ʈ Ϸ: {possibleSpawnPoints.Count}"); + Debug.Log($"가능한 스폰 포인트 계산 완료: {possibleSpawnPoints.Count}개"); } } @@ -107,38 +123,55 @@ public Vector3 GetSpawnPosition(Transform specificSpawnPoint = null) return transform.position; } - // ׷ + // 적 그룹 생성 private IEnumerator SpawnEnemyGroups() { - // ̺ ׷ ó + if (currentWave.enemyGroups == null) + { + spawnRoutine = null; + yield break; + } + + // 웨이브의 각 적 그룹 처리 foreach (var enemyGroup in currentWave.enemyGroups) { - // ׷ + // 이 그룹의 적 생성 시작 yield return StartCoroutine(SpawnEnemyGroup(enemyGroup)); } + + spawnRoutine = null; } private IEnumerator SpawnEnemyGroup(EnemyGroup enemyGroup) { - // ġ - Vector3 spawnPosition = enemyGroup.spawnPoint != null - ? enemyGroup.spawnPoint.position - : transform.position; + if (enemyGroup.enemyPrefab == null) + { + Debug.LogWarning("EnemySpawner: enemyPrefab이 없는 EnemyGroup을 건너뜁니다."); + yield break; + } + + if (enemyGroup.count <= 0) + { + yield break; + } + + // 스폰 위치 결정 + Vector3 spawnPosition = GetSpawnPosition(enemyGroup.spawnPoint); for (int i = 0; i < enemyGroup.count; i++) { - // ⺻ ġ - GameObject clone = Instantiate(enemyGroup.enemyPrefab, transform.position, Quaternion.identity, transform); + // 실제 스폰 위치에 적 생성 + GameObject clone = Instantiate(enemyGroup.enemyPrefab, spawnPosition, Quaternion.identity, transform); Enemy enemy = clone.GetComponent(); if (enemy == null) { - Debug.LogError($" {enemyGroup.enemyPrefab.name} Enemy Ʈ ϴ!"); + Debug.LogError($"프리팹 {enemyGroup.enemyPrefab.name}에 Enemy 컴포넌트가 없습니다!"); Destroy(clone); continue; } - // + // 랜덤 오프셋 설정 Vector3 randomOffset = new Vector3( Random.Range(-1f, 1f), Random.Range(-1f, 1f), @@ -146,58 +179,60 @@ private IEnumerator SpawnEnemyGroup(EnemyGroup enemyGroup) ); enemy.SetSpawnOffset(randomOffset); - // Ʈ + // 스폰 포인트 설정 enemy.SetCustomSpawnPoint(enemyGroup.spawnPoint); - // Ͽ Ÿ ã + // 적의 고유 설정을 사용하여 타겟 찾기 Transform target = null; + Vector3 targetSearchOrigin = spawnPosition + randomOffset; - // TargetManager ڽ Ÿ 켱 Ÿ ã + // TargetManager를 통해 프리팹 자신의 타겟 우선순위로 타겟 찾기 if (TargetManager.Instance != null) { target = TargetManager.Instance.FindTargetByPriority( enemy.GetTargetTagPriority(), - spawnPosition, + targetSearchOrigin, enemy.GetTargetSearchRadius() ); } - // Ÿ ã dzʶٱ + // 타겟을 못 찾으면 건너뛰기 if (target == null) { - Debug.LogWarning($" {enemy.name} Ÿ ã ϴ. ŵմϴ."); + Debug.LogWarning($"적 {enemy.name}을 위한 타겟을 찾을 수 없습니다. 스킵합니다."); Destroy(clone); continue; } - // ʱȭ + // 적 초기화 enemy.Setup(this, target); enemyList.Add(enemy); currentEnemyCount++; - // HP ̴ + // HP 슬라이더 생성 SpawnEnemyHPSlider(clone); - // ̺Ʈ ߻ + // 이벤트 발생 OnEnemySpawned?.Invoke(enemy.transform); yield return new WaitForSeconds(enemyGroup.spawnTime); } } - // Ư Ÿ Ҵϴ Լ + // 특정 적에 대해 타겟을 재할당하는 함수 public Transform ReassignTargetForEnemy(Enemy enemy, string targetTag = null) { if (enemy == null) return null; + if (TargetManager.Instance == null) return null; - // ü Ÿ 켱 + // 적의 자체 타겟 우선순위 사용 Transform newTarget = TargetManager.Instance.FindTargetByPriority( enemy.GetTargetTagPriority(), enemy.transform.position, enemy.GetTargetSearchRadius() ); - // Ÿ + // 새 타겟 설정 if (newTarget != null) { enemy.SetTarget(newTarget); @@ -211,9 +246,11 @@ public Transform ReassignTargetForEnemy(Enemy enemy, string targetTag = null) return newTarget; } - // Ÿ Ҵϴ Լ + // 모든 적에 대해 타겟을 재할당하는 함수 public void ReassignTargetsForAllEnemies() { + PruneDestroyedEnemies(); + foreach (Enemy enemy in enemyList) { if (enemy != null) @@ -230,44 +267,97 @@ public void ReassignTargetsForAllEnemies() public void DestroyEnemy(EnemyDestroyType type, Enemy enemy, int gold) { + if (enemy == null) + { + return; + } + if (type == EnemyDestroyType.Kill) { - playerGold.CurrentGold += gold; + if (playerGold != null) + { + playerGold.CurrentGold += gold; + } } - currentEnemyCount--; - enemyList.Remove(enemy); + bool wasTracked = enemyList != null && enemyList.Remove(enemy); + if (wasTracked) + { + currentEnemyCount = Mathf.Max(0, currentEnemyCount - 1); + } + else if (debugMode) + { + Debug.LogWarning($"EnemySpawner: 추적 중이 아닌 적 제거 요청: {enemy.name}"); + } - // ̺Ʈ ߻ - OnEnemyDestroyed?.Invoke(enemy.transform); + // 이벤트 발생 + Transform enemyTransform = enemy.transform; + OnEnemyDestroyed?.Invoke(enemyTransform); Destroy(enemy.gameObject); } private void SpawnEnemyHPSlider(GameObject enemy) { + if (enemyHPSliderPrefab == null || canvasTransform == null) + { + return; + } + GameObject sliderclone = Instantiate(enemyHPSliderPrefab); sliderclone.transform.SetParent(canvasTransform, false); sliderclone.transform.localScale = Vector3.one; - sliderclone.GetComponent().Setup(enemy.transform); - sliderclone.GetComponent().Setup(enemy.GetComponent()); + + SliderPositionAutoSetter positionAutoSetter = sliderclone.GetComponent(); + if (positionAutoSetter != null) + { + positionAutoSetter.Setup(enemy.transform); + } + + EnemyHPViewer hpViewer = sliderclone.GetComponent(); + EnemyHP enemyHP = enemy.GetComponent(); + if (hpViewer != null && enemyHP != null) + { + hpViewer.Setup(enemyHP); + } } public void StartWave(Wave wave) { currentWave = wave; + PruneDestroyedEnemies(); - // ̺ - currentEnemyCount = 0; - foreach (var enemyGroup in wave.enemyGroups) + if (spawnRoutine != null) { - // ȿ ˻ - if (enemyGroup.enemyPrefab != null) - { - currentEnemyCount += enemyGroup.count; - } + StopCoroutine(spawnRoutine); + spawnRoutine = null; } - StartCoroutine("SpawnEnemyGroups"); + spawnRoutine = StartCoroutine(SpawnEnemyGroups()); + } + + private void PruneDestroyedEnemies() + { + if (enemyList == null) + { + enemyList = new List(); + currentEnemyCount = 0; + return; + } + + int removedCount = enemyList.RemoveAll(enemy => enemy == null); + if (removedCount > 0 || currentEnemyCount != enemyList.Count) + { + currentEnemyCount = enemyList.Count; + } + } + + private void OnDisable() + { + if (spawnRoutine != null) + { + StopCoroutine(spawnRoutine); + spawnRoutine = null; + } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/EnemySpawner.cs.meta b/Assets/_Project/Scripts/Legacy/EnemySpawner.cs.meta similarity index 100% rename from Assets/Scripts/EnemySpawner.cs.meta rename to Assets/_Project/Scripts/Legacy/EnemySpawner.cs.meta diff --git a/Assets/Scripts/IDamageable.cs b/Assets/_Project/Scripts/Legacy/IDamageable.cs similarity index 100% rename from Assets/Scripts/IDamageable.cs rename to Assets/_Project/Scripts/Legacy/IDamageable.cs diff --git a/Assets/Scripts/IDamageable.cs.meta b/Assets/_Project/Scripts/Legacy/IDamageable.cs.meta similarity index 100% rename from Assets/Scripts/IDamageable.cs.meta rename to Assets/_Project/Scripts/Legacy/IDamageable.cs.meta diff --git a/Assets/Scripts/IsometricPositionHandler.cs b/Assets/_Project/Scripts/Legacy/IsometricPositionHandler.cs similarity index 100% rename from Assets/Scripts/IsometricPositionHandler.cs rename to Assets/_Project/Scripts/Legacy/IsometricPositionHandler.cs diff --git a/Assets/Scripts/IsometricPositionHandler.cs.meta b/Assets/_Project/Scripts/Legacy/IsometricPositionHandler.cs.meta similarity index 100% rename from Assets/Scripts/IsometricPositionHandler.cs.meta rename to Assets/_Project/Scripts/Legacy/IsometricPositionHandler.cs.meta diff --git a/Assets/Scripts/LevelSpriteChanger.cs b/Assets/_Project/Scripts/Legacy/LevelSpriteChanger.cs similarity index 100% rename from Assets/Scripts/LevelSpriteChanger.cs rename to Assets/_Project/Scripts/Legacy/LevelSpriteChanger.cs diff --git a/Assets/Scripts/LevelSpriteChanger.cs.meta b/Assets/_Project/Scripts/Legacy/LevelSpriteChanger.cs.meta similarity index 100% rename from Assets/Scripts/LevelSpriteChanger.cs.meta rename to Assets/_Project/Scripts/Legacy/LevelSpriteChanger.cs.meta diff --git a/Assets/Scripts/MicrophoneSystem.cs b/Assets/_Project/Scripts/Legacy/MicrophoneSystem.cs similarity index 100% rename from Assets/Scripts/MicrophoneSystem.cs rename to Assets/_Project/Scripts/Legacy/MicrophoneSystem.cs diff --git a/Assets/Scripts/MicrophoneSystem.cs.meta b/Assets/_Project/Scripts/Legacy/MicrophoneSystem.cs.meta similarity index 100% rename from Assets/Scripts/MicrophoneSystem.cs.meta rename to Assets/_Project/Scripts/Legacy/MicrophoneSystem.cs.meta diff --git a/Assets/_Project/Scripts/Legacy/Movement2D.cs b/Assets/_Project/Scripts/Legacy/Movement2D.cs new file mode 100644 index 0000000..eb90b5d --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/Movement2D.cs @@ -0,0 +1,109 @@ +using UnityEngine; +using UnityEngine.AI; + +public class Movement2D : MonoBehaviour +{ + [SerializeField] + private float moveSpeed = 1.0f; + [SerializeField] + private Vector3 moveDirection = Vector3.zero; + + private float originalMoveSpeed; + private bool isSlowed = false; + private float slowTimer = 0f; + private float currentSlowAmount = 0f; + + // NavMeshAgent 참조 추가 + private NavMeshAgent navMeshAgent; + private bool useNavMesh = false; + + public float MoveSpeed => moveSpeed; + + private void Awake() + { + // 초기 이동 속도 저장 + originalMoveSpeed = moveSpeed; + + // NavMeshAgent 확인 + navMeshAgent = GetComponent(); + useNavMesh = navMeshAgent != null; + + // NavMeshAgent가 있으면 초기 속도 동기화 + if (useNavMesh) + { + originalMoveSpeed = navMeshAgent.speed; + moveSpeed = originalMoveSpeed; + } + } + + void Update() + { + // NavMeshAgent가 없을 경우에만 직접 이동 + if (!useNavMesh) + { + transform.position += moveDirection * moveSpeed * Time.deltaTime; + } + + // 감속 효과가 적용 중이라면 타이머 업데이트 + if (isSlowed) + { + slowTimer -= Time.deltaTime; + // 타이머가 끝나면 이동 속도 복구 + if (slowTimer <= 0) + { + ResetMoveSpeed(); + } + } + } + + public void MoveTo(Vector3 direction) + { + moveDirection = direction; + } + + // 이동 속도 감소 효과 적용 + public void ApplySlow(float slowAmount, float duration) + { + // 현재 적용된 감속보다 더 강한 감속이거나, 감속 효과가 곧 끝날 경우에만 적용 + if (slowAmount > currentSlowAmount || slowTimer < 0.5f) + { + // 감속 효과가 처음 적용되면 원래 속도 저장 + if (!isSlowed) + { + originalMoveSpeed = useNavMesh ? navMeshAgent.speed : moveSpeed; + } + + // 새로운 감속 효과 적용 + currentSlowAmount = slowAmount; + moveSpeed = originalMoveSpeed * (1 - slowAmount); + + // NavMeshAgent가 있으면 속도 적용 + if (useNavMesh && navMeshAgent.isActiveAndEnabled) + { + navMeshAgent.speed = moveSpeed; + } + + slowTimer = duration; + isSlowed = true; + + Debug.Log($"{gameObject.name}의 이동 속도 {slowAmount * 100}% 감소 (지속시간: {duration}초)"); + } + } + + // 이동 속도 원래대로 복구 + public void ResetMoveSpeed() + { + moveSpeed = originalMoveSpeed; + + // NavMeshAgent가 있으면 속도 복구 + if (useNavMesh && navMeshAgent != null && navMeshAgent.isActiveAndEnabled) + { + navMeshAgent.speed = originalMoveSpeed; + } + + isSlowed = false; + currentSlowAmount = 0f; + + Debug.Log($"{gameObject.name}의 이동 속도 복구"); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Movement2D.cs.meta b/Assets/_Project/Scripts/Legacy/Movement2D.cs.meta similarity index 100% rename from Assets/Scripts/Movement2D.cs.meta rename to Assets/_Project/Scripts/Legacy/Movement2D.cs.meta diff --git a/Assets/Scripts/ObjectDetector.cs b/Assets/_Project/Scripts/Legacy/ObjectDetector.cs similarity index 100% rename from Assets/Scripts/ObjectDetector.cs rename to Assets/_Project/Scripts/Legacy/ObjectDetector.cs diff --git a/Assets/Scripts/ObjectDetector.cs.meta b/Assets/_Project/Scripts/Legacy/ObjectDetector.cs.meta similarity index 100% rename from Assets/Scripts/ObjectDetector.cs.meta rename to Assets/_Project/Scripts/Legacy/ObjectDetector.cs.meta diff --git a/Assets/Scripts/ObjectFollowMousePosition.cs b/Assets/_Project/Scripts/Legacy/ObjectFollowMousePosition.cs similarity index 100% rename from Assets/Scripts/ObjectFollowMousePosition.cs rename to Assets/_Project/Scripts/Legacy/ObjectFollowMousePosition.cs diff --git a/Assets/Scripts/ObjectFollowMousePosition.cs.meta b/Assets/_Project/Scripts/Legacy/ObjectFollowMousePosition.cs.meta similarity index 100% rename from Assets/Scripts/ObjectFollowMousePosition.cs.meta rename to Assets/_Project/Scripts/Legacy/ObjectFollowMousePosition.cs.meta diff --git a/Assets/Scripts/PanalToggler.cs b/Assets/_Project/Scripts/Legacy/PanalToggler.cs similarity index 100% rename from Assets/Scripts/PanalToggler.cs rename to Assets/_Project/Scripts/Legacy/PanalToggler.cs diff --git a/Assets/Scripts/PanalToggler.cs.meta b/Assets/_Project/Scripts/Legacy/PanalToggler.cs.meta similarity index 100% rename from Assets/Scripts/PanalToggler.cs.meta rename to Assets/_Project/Scripts/Legacy/PanalToggler.cs.meta diff --git a/Assets/Scripts/ParticleAutoDestroyer.cs b/Assets/_Project/Scripts/Legacy/ParticleAutoDestroyer.cs similarity index 100% rename from Assets/Scripts/ParticleAutoDestroyer.cs rename to Assets/_Project/Scripts/Legacy/ParticleAutoDestroyer.cs diff --git a/Assets/Scripts/ParticleAutoDestroyer.cs.meta b/Assets/_Project/Scripts/Legacy/ParticleAutoDestroyer.cs.meta similarity index 100% rename from Assets/Scripts/ParticleAutoDestroyer.cs.meta rename to Assets/_Project/Scripts/Legacy/ParticleAutoDestroyer.cs.meta diff --git a/Assets/Scripts/PlayerExperience.cs b/Assets/_Project/Scripts/Legacy/PlayerExperience.cs similarity index 52% rename from Assets/Scripts/PlayerExperience.cs rename to Assets/_Project/Scripts/Legacy/PlayerExperience.cs index 0d85f16..8f76dfa 100644 --- a/Assets/Scripts/PlayerExperience.cs +++ b/Assets/_Project/Scripts/Legacy/PlayerExperience.cs @@ -3,33 +3,33 @@ public class PlayerExperience : MonoBehaviour { - [SerializeField] private int currentExp = 0; // ġ - [SerializeField] private int[] expRequiredForLevel = { 0, 100, 250, 450, 700, 1000 }; // ʿ ġ (0 ε ) - [SerializeField] private float[] damageMultipliers = { 1.0f, 1.2f, 1.5f, 1.8f, 2.2f, 2.7f }; // ݷ (0 ε ) + [SerializeField] private int currentExp = 0; // 현재 경험치 + [SerializeField] private int[] expRequiredForLevel = { 0, 100, 250, 450, 700, 1000 }; // 각 레벨에 필요한 경험치 (0번 인덱스는 쓰지 않음) + [SerializeField] private float[] damageMultipliers = { 1.0f, 1.2f, 1.5f, 1.8f, 2.2f, 2.7f }; // 각 레벨별 공격력 배수 (0번 인덱스는 쓰지 않음) - private PlayerGold playerGold; // ÷̾ - private int level = 1; // - private int previousLevel = 1; // - private const int MAX_LEVEL = 6; // ִ + private PlayerGold playerGold; // 플레이어 골드 참조 + private int level = 1; // 현재 레벨 + private int previousLevel = 1; // 이전 레벨 추적 + private const int MAX_LEVEL = 6; // 최대 레벨 - // ̺Ʈ + // 레벨업 이벤트 [System.Serializable] public class LevelUpEvent : UnityEvent { } public LevelUpEvent onLevelUp = new LevelUpEvent(); - // Ƽ + // 레벨 프로퍼티 public int Level => level; - // ִ Ƽ + // 최대 레벨 프로퍼티 public int MaxLevel => MAX_LEVEL; - // ġ Ƽ + // 현재 경험치 프로퍼티 public int CurrentExp => currentExp; - // ʿ ġ Ƽ + // 현재 레벨에서 필요한 경험치 프로퍼티 public int ExpRequiredForCurrentLevel => level < MAX_LEVEL ? expRequiredForLevel[level] : 0; - // ݷ Ƽ + // 현재 공격력 배수 프로퍼티 public float CurrentDamageMultiplier => damageMultipliers[level]; private void Awake() @@ -37,41 +37,41 @@ private void Awake() playerGold = GetComponent(); if (playerGold == null) { - Debug.LogError("PlayerGold Ʈ ã ϴ."); + Debug.LogError("PlayerGold 컴포넌트를 찾을 수 없습니다."); } - // ߰ ʱȭ + // 추가 초기화 previousLevel = level; } private void Update() { - // Ǿ Ȯ + // 레벨이 변경되었는지 확인 if (level > previousLevel) { - // + // 레벨업 감지 int levelsGained = level - previousLevel; HandleLevelUp(levelsGained); previousLevel = level; } } - // ġ ȹ ޼ҵ + // 경험치 획득 메소드 public void AddExperience(int expAmount) { - // ̹ ִ ̸ ġ + // 이미 최대 레벨이면 경험치를 더하지 않음 if (level >= MAX_LEVEL) return; - // + // 현재 레벨 저장 int oldLevel = level; - // ġ ߰ + // 경험치 추가 currentExp += expAmount; - Debug.Log($"ġ ȹ: {expAmount}, ġ: {currentExp}"); + Debug.Log($"경험치 획득: {expAmount}, 총 경험치: {currentExp}"); - // üũ + // 레벨업 체크 CheckLevelUp(); - // ( ÿ ) + // 레벨업 감지 (여러 레벨 동시에 오를 경우 대비) if (level > oldLevel) { int levelsGained = level - oldLevel; @@ -79,34 +79,34 @@ public void AddExperience(int expAmount) } } - // óġ ġ ȹ + // 몬스터 처치 시 경험치 획득 public void AddExperienceForEnemy(EnemyDestroyType destroyType, int expValue) { - // Ͱ ġ ȹ X + // 몬스터가 목적지에 도달한 경우 경험치 획득 X if (destroyType == EnemyDestroyType.Arrive) return; - // ġ + // 지정된 경험치 값 사용 int expAmount = expValue; AddExperience(expAmount); } - // ̺ ġ + // 웨이브 종료 후 경험치 정산 public void AddExperienceForWaveCompletion(int enemiesKilled) { - // óġ Ͽ ʽ ġ ο - int expAmount = enemiesKilled * 5; // : 1 ߰ 5 ġ + // 처치한 적의 수에 비례하여 보너스 경험치 부여 + int expAmount = enemiesKilled * 5; // 예: 적 1마리당 추가 5 경험치 AddExperience(expAmount); - Debug.Log($"̺ Ϸ ʽ ġ: {expAmount} (óġ : {enemiesKilled})"); + Debug.Log($"웨이브 완료 보너스 경험치: {expAmount} (처치한 적: {enemiesKilled}마리)"); } - // üũ ޼ҵ + // 레벨업 체크 메소드 private void CheckLevelUp() { while (level < MAX_LEVEL && currentExp >= expRequiredForLevel[level]) { level++; - Debug.Log($" ! : {level}, ݷ : {CurrentDamageMultiplier}"); - // (: ణ ) + Debug.Log($"레벨 업! 현재 레벨: {level}, 공격력 배수: {CurrentDamageMultiplier}"); + // 레벨업 보상 (예: 약간의 골드 지급) if (playerGold != null) { playerGold.CurrentGold += level * 10; @@ -114,32 +114,32 @@ private void CheckLevelUp() } } - // ó + // 레벨업 처리 private void HandleLevelUp(int levelsGained) { - Debug.Log($" ! : {level} (+{levelsGained})"); + Debug.Log($"레벨 업! 현재 레벨: {level} (+{levelsGained})"); - // ̺Ʈ ߻ + // 레벨업 이벤트 발생 onLevelUp.Invoke(level); - // ˸ ǥ (UI) + // 레벨업 알림 표시 (UI) ShowLevelUpNotification(); } - // ݷ ޼ҵ - ȭ쿡 ȣ + // 공격력 계산 메소드 - 화살에서 호출 public float CalculateAttackDamage(float baseDamage) { return baseDamage * CurrentDamageMultiplier; } - // ˸ ǥ + // 레벨업 알림 표시 private void ShowLevelUpNotification() { - // ȿ (: ƼŬ, ) + // 레벨업 효과 (예: 파티클, 사운드 등) AudioSource audioSource = GetComponent(); if (audioSource != null) { - // (ִ ) + // 레벨업 사운드 재생 (있는 경우) AudioClip levelUpSound = Resources.Load("Sounds/LevelUp"); if (levelUpSound != null) { @@ -147,17 +147,11 @@ private void ShowLevelUpNotification() } } - // UI ˸ - UI Ŵ ִٸ ޽ + // 레벨업 UI 알림 - UI 매니저가 있다면 메시지 전달 TimeBasedUIManager uiManager = FindObjectOfType(); if (uiManager != null) { - // UI Ŵ ˸ ޼ҵ ʿ - System.Type type = uiManager.GetType(); - System.Reflection.MethodInfo method = type.GetMethod("ShowLevelUpNotification"); - if (method != null) - { - method.Invoke(uiManager, new object[] { level }); - } + uiManager.ShowLevelUpNotification(level); } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/PlayerExperience.cs.meta b/Assets/_Project/Scripts/Legacy/PlayerExperience.cs.meta similarity index 100% rename from Assets/Scripts/PlayerExperience.cs.meta rename to Assets/_Project/Scripts/Legacy/PlayerExperience.cs.meta diff --git a/Assets/Scripts/PlayerGold.cs b/Assets/_Project/Scripts/Legacy/PlayerGold.cs similarity index 100% rename from Assets/Scripts/PlayerGold.cs rename to Assets/_Project/Scripts/Legacy/PlayerGold.cs diff --git a/Assets/Scripts/PlayerGold.cs.meta b/Assets/_Project/Scripts/Legacy/PlayerGold.cs.meta similarity index 100% rename from Assets/Scripts/PlayerGold.cs.meta rename to Assets/_Project/Scripts/Legacy/PlayerGold.cs.meta diff --git a/Assets/Scripts/PlayerMovement.cs b/Assets/_Project/Scripts/Legacy/PlayerMovement.cs similarity index 100% rename from Assets/Scripts/PlayerMovement.cs rename to Assets/_Project/Scripts/Legacy/PlayerMovement.cs diff --git a/Assets/Scripts/PlayerMovement.cs.meta b/Assets/_Project/Scripts/Legacy/PlayerMovement.cs.meta similarity index 100% rename from Assets/Scripts/PlayerMovement.cs.meta rename to Assets/_Project/Scripts/Legacy/PlayerMovement.cs.meta diff --git a/Assets/Scripts/PlayerSingleton.cs b/Assets/_Project/Scripts/Legacy/PlayerSingleton.cs similarity index 100% rename from Assets/Scripts/PlayerSingleton.cs rename to Assets/_Project/Scripts/Legacy/PlayerSingleton.cs diff --git a/Assets/Scripts/PlayerSingleton.cs.meta b/Assets/_Project/Scripts/Legacy/PlayerSingleton.cs.meta similarity index 100% rename from Assets/Scripts/PlayerSingleton.cs.meta rename to Assets/_Project/Scripts/Legacy/PlayerSingleton.cs.meta diff --git a/Assets/Scripts/Projectile.meta b/Assets/_Project/Scripts/Legacy/Projectile.meta similarity index 100% rename from Assets/Scripts/Projectile.meta rename to Assets/_Project/Scripts/Legacy/Projectile.meta diff --git a/Assets/Scripts/Projectile/ProjectileAreaDamage.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileAreaDamage.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileAreaDamage.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileAreaDamage.cs diff --git a/Assets/Scripts/Projectile/ProjectileAreaDamage.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileAreaDamage.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileAreaDamage.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileAreaDamage.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileAttackSpeedDebuff.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileAttackSpeedDebuff.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileAttackSpeedDebuff.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileAttackSpeedDebuff.cs diff --git a/Assets/Scripts/Projectile/ProjectileAttackSpeedDebuff.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileAttackSpeedDebuff.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileAttackSpeedDebuff.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileAttackSpeedDebuff.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileBase.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileBase.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileBase.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileBase.cs diff --git a/Assets/Scripts/Projectile/ProjectileBase.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileBase.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileBase.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileBase.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileBook.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileBook.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileBook.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileBook.cs diff --git a/Assets/Scripts/Projectile/ProjectileBook.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileBook.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileBook.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileBook.cs.meta diff --git a/Assets/_Project/Scripts/Legacy/Projectile/ProjectileComboDebuff.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileComboDebuff.cs new file mode 100644 index 0000000..dd0afb6 --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileComboDebuff.cs @@ -0,0 +1,230 @@ +using UnityEngine; +public class ProjectileComboDebuff : ProjectileBase +{ + [SerializeField] private float effectRadius = 2f; + [SerializeField] private string enemyTag = "Enemy"; + [SerializeField] private float moveSpeed = 5f; + [Header("이동 속도 감소 효과")] + [SerializeField] private float moveSlowAmount = 0.3f; // 이동 속도 감소 비율 (0.3 = 30% 감소) + [SerializeField] private float moveSlowDuration = 4.0f; // 이동 속도 감소 지속 시간 + [Header("공격 속도 감소 효과")] + [SerializeField] private float attackSlowAmount = 0.25f; // 공격 속도 감소 비율 (0.25 = 25% 감소) + [SerializeField] private float attackSlowDuration = 3.0f; // 공격 속도 감소 지속 시간 + [Header("효과 시각화")] + [SerializeField] private GameObject debuffEffectPrefab; // 디버프 효과 시각화 프리팹 (선택적) + [Header("충돌 감지")] + [SerializeField] private bool useCollisionDetection = true; // 충돌 감지 사용 여부 + [SerializeField] private LayerMask enemyLayer; // 적 레이어 (충돌 감지용) + + // 이동 방향 변수 추가 + private Vector3 moveDirection; + // 발사체가 이미 충돌했는지 확인하는 플래그 + private bool hasHit = false; + + public override void Setup(Transform target, float damage, int maxCount = 1, int index = 0) + { + base.Setup(target, damage, maxCount, index); + + // 타겟 방향으로 초기 이동 방향 설정 + if (target != null) + { + moveDirection = (target.position - transform.position).normalized; + // 초기 방향에 따른 회전 설정 + RotateToMoveDirection(moveDirection); + } + + // 충돌 감지를 위해 콜라이더가 없는 경우 추가 + if (useCollisionDetection && GetComponent() == null) + { + CircleCollider2D collider = gameObject.AddComponent(); + collider.isTrigger = true; + collider.radius = 0.3f; // 적절한 크기로 조정 + } + } + + public override void Process() + { + // 타겟이 없거나 이미 충돌했으면 처리하지 않음 + if (target == null || hasHit) return; + + // 발사체가 타겟에 도달했는지 확인 + float distance = Vector3.Distance(transform.position, target.position); + if (distance < 0.1f) + { + // 효과 적용 + ApplyEffectInArea(transform.position); + // 발사체 파괴 + DestroyProjectile(); + } + else + { + // 충돌 감지를 사용하는 경우 이동 중 적과의 충돌 검사 + if (useCollisionDetection) + { + CheckCollisionDuringMovement(); + } + + // 타겟을 향해 이동 + MoveToTarget(); + } + } + + // 이동 중 충돌 체크 (레이캐스트 사용) + private void CheckCollisionDuringMovement() + { + RaycastHit2D hit = Physics2D.CircleCast( + transform.position, + 0.3f, // 충돌 체크 반경 + moveDirection, + moveSpeed * Time.deltaTime, + enemyLayer + ); + + if (hit.collider != null) + { + if (hit.collider.CompareTag(enemyTag)) + { + // 충돌 지점에 효과 적용 + ApplyEffectInArea(hit.point); + // 발사체 파괴 + DestroyProjectile(); + } + } + } + + // 트리거 충돌 이벤트 + private void OnTriggerEnter2D(Collider2D other) + { + if (!hasHit && other.CompareTag(enemyTag)) + { + // 충돌 지점에 효과 적용 + ApplyEffectInArea(transform.position); + // 발사체 파괴 + DestroyProjectile(); + } + } + + private void ApplyEffectInArea(Vector3 centerPosition) + { + // 효과 범위 내의 모든 콜라이더 감지 + Collider2D[] colliders = Physics2D.OverlapCircleAll(centerPosition, effectRadius); + foreach (Collider2D collider in colliders) + { + if (collider.CompareTag(enemyTag)) + { + GameObject enemy = collider.gameObject; + // 기본 데미지 적용 + EnemyHP enemyHP = enemy.GetComponent(); + if (enemyHP != null) + { + enemyHP.TakeDamage(damage); + } + // 이동 속도 감소 효과 적용 + Movement2D movement = enemy.GetComponent(); + if (movement != null) + { + movement.ApplySlow(moveSlowAmount, moveSlowDuration); + } + // 공격 속도 감소 효과 적용 + EnemyAttack enemyAttack = enemy.GetComponent(); + if (enemyAttack != null) + { + enemyAttack.ApplyAttackSlow(attackSlowAmount, attackSlowDuration); + } + // 디버프 효과 시각화 (선택적) + if (debuffEffectPrefab != null) + { + GameObject effectObj = Instantiate(debuffEffectPrefab, enemy.transform.position, Quaternion.identity); + effectObj.transform.SetParent(enemy.transform); + Destroy(effectObj, Mathf.Max(moveSlowDuration, attackSlowDuration)); + } + } + } + } + + private void MoveToTarget() + { + // 새로운 타겟 방향 계산 + Vector3 direction = (target.position - transform.position).normalized; + + // 방향이 변경되었다면 회전 업데이트 + if (Vector3.Dot(direction, moveDirection) < 0.99f) + { + moveDirection = direction; + RotateToMoveDirection(moveDirection); + } + + // 타겟 방향으로 이동 + transform.position += direction * moveSpeed * Time.deltaTime; + } + + // 이동 방향에 따라 스프라이트 회전 + private void RotateToMoveDirection(Vector3 direction) + { + // 이동 방향 벡터가 유효한지 확인 + if (direction.sqrMagnitude > 0.001f) + { + float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; + + // 왼쪽 방향일 때 180도 추가 보정 + if (direction.x < 0) + { + angle += 180f; + } + + transform.rotation = Quaternion.Euler(0f, 0f, angle); + } + } + + // 발사체 파괴 공통 메서드 + private void DestroyProjectile() + { + // 중복 파괴 방지를 위한 플래그 설정 + hasHit = true; + + // 타격 효과 생성 + if (hitEffect != null) + { + Instantiate(hitEffect, transform.position, Quaternion.identity); + } + + // 발사체 파괴 + Destroy(gameObject); + } + + // 에디터에서 범위 시각화 + private void OnDrawGizmosSelected() + { + // 효과 범위 시각화 + Gizmos.color = Color.yellow; + Gizmos.DrawWireSphere(transform.position, effectRadius); + + // 충돌 감지 범위 시각화 + if (useCollisionDetection) + { + Gizmos.color = Color.red; + Gizmos.DrawWireSphere(transform.position, 0.3f); + } + } + + // Update 메소드 오버라이드 - 부모 클래스의 타겟 null 체크를 우회 + protected override void Update() + { + // 발사체가 이미 적중했으면 더 이상 처리하지 않음 + if (hasHit) return; + + // 복합 디버프 발사체는 타겟이 있을 때만 처리 + if (target != null) + { + Process(); + } + + // Z 위치 업데이트 (이소메트릭 핸들러가 없는 경우) + if (updateZPosition && isometricPosition == null) + { + Vector3 position = transform.position; + position.z = position.y; + transform.position = position; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Projectile/ProjectileComboDebuff.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileComboDebuff.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileComboDebuff.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileComboDebuff.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileCubicHoming.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileCubicHoming.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileCubicHoming.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileCubicHoming.cs diff --git a/Assets/Scripts/Projectile/ProjectileCubicHoming.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileCubicHoming.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileCubicHoming.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileCubicHoming.cs.meta diff --git a/Assets/_Project/Scripts/Legacy/Projectile/ProjectileEnemy.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileEnemy.cs new file mode 100644 index 0000000..661a37f --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileEnemy.cs @@ -0,0 +1,226 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ProjectileEnemy : MonoBehaviour +{ + [Header("Projectile Settings")] + [SerializeField] private float speed = 10f; // 발사체 속도 + [SerializeField] private float maxLifetime = 5f; // 최대 지속 시간 + [SerializeField] private float rotationSpeed = 10f; // 회전 속도 + [SerializeField] private bool useHoming = true; // 유도 기능 사용 여부 + [SerializeField] private float homingStrength = 5f; // 유도 강도 + + [Header("Effects")] + [SerializeField] private GameObject hitEffect; // 타격 효과 + [SerializeField] private AudioClip hitSound; // 타격 소리 + [SerializeField] private GameObject trailEffect; // 궤적 효과 + + [Header("Isometric Settings")] + [SerializeField] private bool useIsometricPosition = true; // 이소메트릭 위치 사용 여부 + + // 내부 변수 + private Transform target; // 타겟 + private float damage; // 데미지 + private Rigidbody rb; // 리지드바디 + private AudioSource audioSource; // 오디오 소스 + private Vector3 lastTargetPosition; // 마지막 타겟 위치 + private IsometricPositionHandler isometricPosition; // 이소메트릭 위치 핸들러 + private bool hasHit = false; // 타격 여부 + + // 초기화 + private void Awake() + { + // 리지드바디 확인 또는 추가 + rb = GetComponent(); + if (rb == null) + { + rb = gameObject.AddComponent(); + rb.useGravity = false; + rb.drag = 0.5f; + } + + // 오디오 소스 확인 또는 추가 + audioSource = GetComponent(); + if (audioSource == null && hitSound != null) + { + audioSource = gameObject.AddComponent(); + } + + // 이소메트릭 위치 핸들러 확인 + if (useIsometricPosition) + { + isometricPosition = GetComponent(); + if (isometricPosition == null) + { + isometricPosition = gameObject.AddComponent(); + } + } + } + + // 발사체 설정 (외부에서 호출됨) + public void Setup(Transform targetTransform, float damageAmount) + { + target = targetTransform; + damage = damageAmount; + + if (target != null) + { + lastTargetPosition = target.position; + + // 초기 방향을 타겟 쪽으로 설정 + Vector3 direction = (lastTargetPosition - transform.position).normalized; + transform.forward = direction; + + // 초기 속도 적용 + rb.velocity = direction * speed; + } + + // 궤적 효과 활성화 + if (trailEffect != null) + { + GameObject trail = Instantiate(trailEffect, transform.position, Quaternion.identity); + trail.transform.SetParent(transform); + } + + // 최대 지속 시간 후 자동 파괴 + Destroy(gameObject, maxLifetime); + } + + // 매 프레임 실행 + private void Update() + { + if (hasHit) return; + + // 타겟 체크 및 추적 + UpdateTargetTracking(); + + // 이소메트릭 위치 업데이트 + if (useIsometricPosition && isometricPosition == null) + { + // 수동으로 z 위치 조정 + Vector3 position = transform.position; + position.z = position.y; + transform.position = position; + } + } + + // 타겟 추적 업데이트 + private void UpdateTargetTracking() + { + // 타겟이 유효한지 확인 + if (target == null || !target.gameObject.activeInHierarchy) + { + // 타겟이 없거나 비활성화된 경우 마지막 위치로 진행 + return; + } + + // 현재 타겟 위치 업데이트 + lastTargetPosition = target.position; + + // 유도 기능이 활성화된 경우 + if (useHoming) + { + // 타겟 방향 계산 + Vector3 directionToTarget = (lastTargetPosition - transform.position).normalized; + + // 현재 발사체의 속도 방향 + Vector3 currentDirection = rb.velocity.normalized; + + // 두 방향을 보간하여 새 방향 계산 + Vector3 newDirection = Vector3.Slerp(currentDirection, directionToTarget, Time.deltaTime * homingStrength); + + // 속도 업데이트 + rb.velocity = newDirection * speed; + + // 발사체 방향 설정 + if (rb.velocity != Vector3.zero) + { + transform.forward = Vector3.Slerp(transform.forward, rb.velocity.normalized, Time.deltaTime * rotationSpeed); + } + } + } + + // 충돌 감지 + private void OnTriggerEnter(Collider other) + { + HandleCollision(other.transform); + } + + private void OnCollisionEnter(Collision collision) + { + HandleCollision(collision.transform); + } + + // 충돌 처리 + private void HandleCollision(Transform hitTransform) + { + // 이미 타격한 경우 무시 + if (hasHit) return; + + // 자신을 발사한 적과 충돌하지 않도록 확인 (필요시 구현) + + // 타격 처리 + hasHit = true; + + // 데미지 적용 시도 + bool damageApplied = false; + + // ResourceObject 컴포넌트 확인 + ResourceObject resource = hitTransform.GetComponent(); + if (resource != null) + { + resource.TakeDamage(damage); + Debug.Log($"발사체가 {resource.ResourceName}에 {damage}의 데미지를 입힘"); + damageApplied = true; + } + + // EnemyHP 컴포넌트 확인 + if (!damageApplied) + { + EnemyHP enemyHP = hitTransform.GetComponent(); + if (enemyHP != null) + { + enemyHP.TakeDamage(damage); + Debug.Log($"발사체가 {hitTransform.name}에 {damage}의 데미지를 입힘 (EnemyHP)"); + damageApplied = true; + } + } + + // IDamageable 인터페이스 확인 + if (!damageApplied) + { + var damageable = hitTransform.GetComponent(); + if (damageable != null) + { + damageable.TakeDamage((int)damage); + Debug.Log($"발사체가 {hitTransform.name}에 {damage}의, 데미지를 입힘 (IDamageable)"); + damageApplied = true; + } + } + + // 타격 효과 생성 + if (hitEffect != null) + { + GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity); + + // 이소메트릭 효과 처리 + if (useIsometricPosition) + { + if (effect.GetComponent() == null) + { + effect.AddComponent(); + } + } + } + + // 타격 소리 재생 + if (hitSound != null && audioSource != null) + { + AudioSource.PlayClipAtPoint(hitSound, transform.position); + } + + // 발사체 파괴 + Destroy(gameObject); + } +} \ No newline at end of file diff --git a/Assets/_Project/Scripts/Legacy/Projectile/ProjectileEnemy.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileEnemy.cs.meta new file mode 100644 index 0000000..8a0434c --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileEnemy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d74a7ed3edc3384f90a6bb2215c45ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Projectile/ProjectileHoming.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileHoming.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileHoming.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileHoming.cs diff --git a/Assets/Scripts/Projectile/ProjectileHoming.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileHoming.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileHoming.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileHoming.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileQuadraticHoming.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileQuadraticHoming.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileQuadraticHoming.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileQuadraticHoming.cs diff --git a/Assets/Scripts/Projectile/ProjectileQuadraticHoming.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileQuadraticHoming.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileQuadraticHoming.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileQuadraticHoming.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileSlowDebuff.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileSlowDebuff.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileSlowDebuff.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileSlowDebuff.cs diff --git a/Assets/Scripts/Projectile/ProjectileSlowDebuff.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileSlowDebuff.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileSlowDebuff.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileSlowDebuff.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileSpriteController.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileSpriteController.cs similarity index 100% rename from Assets/Scripts/Projectile/ProjectileSpriteController.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileSpriteController.cs diff --git a/Assets/Scripts/Projectile/ProjectileSpriteController.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileSpriteController.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileSpriteController.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileSpriteController.cs.meta diff --git a/Assets/Scripts/Projectile/ProjectileStraight.cs b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileStraight.cs similarity index 60% rename from Assets/Scripts/Projectile/ProjectileStraight.cs rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileStraight.cs index bfa4a01..678b02e 100644 --- a/Assets/Scripts/Projectile/ProjectileStraight.cs +++ b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileStraight.cs @@ -2,36 +2,47 @@ public class ProjectileStraight : ProjectileBase { - [SerializeField] private float moveSpeed = 8f; // ߻ü ̵ ӵ - private Vector3 moveDirection; // ߻ü ̵ + [SerializeField] private float moveSpeed = 8f; // 발사체 이동 속도 + private Vector3 moveDirection; // 발사체 이동 방향 + private bool flipDirection; public override void Setup(Transform target, float damage, int maxCount = 1, int index = 0) { base.Setup(target, damage, maxCount, index); - // Ÿ ߻ + // 타겟 방향으로 발사 if (target != null) { moveDirection = (target.position - transform.position).normalized; } else { - moveDirection = transform.right; // ⺻ + moveDirection = transform.right; // 기본적으로 오른쪽 방향 } - // ̵ ⿡ Ʈ ȸ + if (flipDirection) + { + moveDirection.x *= -1f; + } + + // 이동 방향에 따라 스프라이트 회전 RotateToMoveDirection(); } - // ̵ ⿡ Ʈ ȸ + public void SetFlipDirection(bool flipped) + { + flipDirection = flipped; + } + + // 이동 방향에 따라 스프라이트 회전 private void RotateToMoveDirection() { - // ̵ Ͱ ȿ Ȯ + // 이동 방향 벡터가 유효한지 확인 if (moveDirection.sqrMagnitude > 0.001f) { float angle = Mathf.Atan2(moveDirection.y, moveDirection.x) * Mathf.Rad2Deg; - // 180 ߰ + // 왼쪽 방향일 때 180도 추가 보정 if (moveDirection.x < 0) { angle += 180f; @@ -43,17 +54,17 @@ private void RotateToMoveDirection() public override void Process() { - // ̵ ̵ + // 이동 방향으로 계속 이동 transform.position += moveDirection * moveSpeed * Time.deltaTime; } - // Update ޼ҵ ̵ - θ Ŭ Ÿ null üũ ȸ + // Update 메소드 오버라이드 - 부모 클래스의 타겟 null 체크를 우회 protected override void Update() { - // ߻ü Ÿ  ̵ؾ + // 직선 발사체는 타겟이 없어도 계속 이동해야 함 Process(); - // Z ġ Ʈ (̼ҸƮ ڵ鷯 ) + // Z 위치 업데이트 (이소메트릭 핸들러가 없는 경우) if (updateZPosition && isometricPosition == null) { Vector3 position = transform.position; @@ -66,10 +77,10 @@ private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Enemy")) { - // Ʈ Ʈ + // 히트 이펙트 생성 CreateHitEffect(transform.position); - // + // 데미지 적용 EnemyHP enemyHP = collision.GetComponent(); if (enemyHP != null) { @@ -79,4 +90,4 @@ private void OnTriggerEnter2D(Collider2D collision) Destroy(gameObject); } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/Projectile/ProjectileStraight.cs.meta b/Assets/_Project/Scripts/Legacy/Projectile/ProjectileStraight.cs.meta similarity index 100% rename from Assets/Scripts/Projectile/ProjectileStraight.cs.meta rename to Assets/_Project/Scripts/Legacy/Projectile/ProjectileStraight.cs.meta diff --git a/Assets/Scripts/ResourceFactory.cs b/Assets/_Project/Scripts/Legacy/ResourceFactory.cs similarity index 100% rename from Assets/Scripts/ResourceFactory.cs rename to Assets/_Project/Scripts/Legacy/ResourceFactory.cs diff --git a/Assets/Scripts/ResourceFactory.cs.meta b/Assets/_Project/Scripts/Legacy/ResourceFactory.cs.meta similarity index 100% rename from Assets/Scripts/ResourceFactory.cs.meta rename to Assets/_Project/Scripts/Legacy/ResourceFactory.cs.meta diff --git a/Assets/Scripts/ResourceManager.cs b/Assets/_Project/Scripts/Legacy/ResourceManager.cs similarity index 55% rename from Assets/Scripts/ResourceManager.cs rename to Assets/_Project/Scripts/Legacy/ResourceManager.cs index eb8c5d3..93ff9ea 100644 --- a/Assets/Scripts/ResourceManager.cs +++ b/Assets/_Project/Scripts/Legacy/ResourceManager.cs @@ -1,23 +1,25 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.Events; public class ResourceManager : MonoBehaviour { private List allResources = new List(); - private List initialResources = new List(); // ʱ ҽ - private float initialTotalMaxHP = 0f; // ʱ ִ ü հ + private List initialResources = new List(); // 초기 리소스 목록 저장 + private readonly Dictionary resourceDestroyedHandlers = new Dictionary(); + private float initialTotalMaxHP = 0f; // 초기 최대 체력 합계 - // ı ҽ ϴ Ŭ + // 파괴된 리소스 정보를 저장하는 클래스 [System.Serializable] private class DestroyedResourceData { - public GameObject prefab; // ҽ - public Vector3 position; // ġ - public Quaternion rotation; // ȸ - public string resourceName; // ҽ ̸ - public float maxHP; // ִ ü - public string objectName; // Ʈ ̸ ( ̸ Ȱ) + public GameObject prefab; // 리소스 프리팹 + public Vector3 position; // 위치 + public Quaternion rotation; // 회전 + public string resourceName; // 리소스 이름 + public float maxHP; // 최대 체력 + public string objectName; // 오브젝트 이름 (프리팹 이름에 활용) public DestroyedResourceData(GameObject prefab, Vector3 position, Quaternion rotation, string resourceName, float maxHP, string objectName) { @@ -30,24 +32,24 @@ public DestroyedResourceData(GameObject prefab, Vector3 position, Quaternion rot } } - // ı ҽ + // 파괴된 리소스 데이터 목록 private List destroyedResources = new List(); - [SerializeField] private bool debugMode = false; // α - [SerializeField] private List resourcePrefabs; // ҽ Ʈ - [SerializeField] private GameObject defaultResourcePrefab; // ⺻ ҽ ( ) + [SerializeField] private bool debugMode = false; // 디버그 로그 출력 여부 + [SerializeField] private List resourcePrefabs; // 리소스 오브젝트 프리팹 목록 + [SerializeField] private GameObject defaultResourcePrefab; // 기본 리소스 프리팹 (복구 실패 시 사용) - // ҽ ʱ (ʱȭ ܰ迡 ) + // 리소스 초기 저장 데이터 (초기화 단계에서 설정) private Dictionary initialResourceData = new Dictionary(); - // ȭ Ʈ ü ü (0~1, 1̸ Ʈ Ǯü) + // 모든 재화 오브젝트의 총 체력 대비 남은 체력 비율 (0~1, 1이면 모든 오브젝트가 풀체력) public float TotalHealthRatio { get { float totalCurrentHP = 0f; - // ü¸ ǽð + // 현재 체력만 실시간 계산 foreach (ResourceObject resource in allResources) { if (resource != null) @@ -56,32 +58,32 @@ public float TotalHealthRatio } } - // ʱ ִ ü (0 ) + // 초기 최대 체력으로 나누기 (0으로 나누기 방지) return initialTotalMaxHP > 0 ? totalCurrentHP / initialTotalMaxHP : 1f; } } - // սǵ (0~1, 1̸ Ʈ ı) + // 손실도 (0~1, 1이면 모든 오브젝트가 파괴됨) public float DamageRatio => 1f - TotalHealthRatio; private void Awake() { - // ResourceObject ã + // 씬의 모든 ResourceObject 찾기 RefreshResourceList(); - // ʱ ִ ü ʱ ҽ + // 초기 최대 체력 계산 및 초기 리소스 목록 저장 CalculateInitialMaxHP(); - // ʱ ҽ () + // 초기 리소스 데이터 복사 (복구용) CacheInitialResourceData(); } private void Start() { - // ResourceObject ı ̺Ʈ + // ResourceObject에 파괴 이벤트 등록 RegisterResourceEvents(); - // TimeSystem ̺Ʈ + // TimeSystem 이벤트 구독 TimeSystem timeSystem = FindObjectOfType(); if (timeSystem != null) { @@ -89,56 +91,58 @@ private void Start() if (debugMode) { - Debug.Log("ResourceManager: TimeSystem onMorningStart ̺Ʈ "); + Debug.Log("ResourceManager: TimeSystem의 onMorningStart 이벤트에 구독됨"); } } else if (debugMode) { - Debug.LogWarning("ResourceManager: TimeSystem ã ϴ."); + Debug.LogWarning("ResourceManager: TimeSystem을 찾을 수 없습니다."); } if (debugMode) { - Debug.Log($"ResourceManager: ʱ ִ ü հ = {initialTotalMaxHP}"); - Debug.Log($"ResourceManager: ʱ ҽ = {initialResources.Count}"); - Debug.Log($"ResourceManager: ijõ ҽ = {initialResourceData.Count}"); + Debug.Log($"ResourceManager: 초기 최대 체력 합계 = {initialTotalMaxHP}"); + Debug.Log($"ResourceManager: 초기 리소스 개수 = {initialResources.Count}"); + Debug.Log($"ResourceManager: 캐시된 리소스 프리팹 개수 = {initialResourceData.Count}"); } } private void OnDestroy() { - // TimeSystem ̺Ʈ + // TimeSystem 이벤트 구독 해제 TimeSystem timeSystem = FindObjectOfType(); if (timeSystem != null) { timeSystem.onMorningStart.RemoveListener(OnMorningStart); } + + UnsubscribeAllResourceDestroyedHandlers(); } - // ʱ ҽ ij () + // 초기 리소스 데이터 캐싱 (복구용) private void CacheInitialResourceData() { initialResourceData.Clear(); - // ִ ҽ Ʈ + // 씬에 있는 모든 리소스 오브젝트의 프리팹 정보 저장 foreach (ResourceObject resource in initialResources) { if (resource != null) { string objectName = resource.gameObject.name.Replace("(Clone)", "").Trim(); - // ̹ ʴ 쿡 ߰ + // 이미 존재하지 않는 경우에만 추가 if (!initialResourceData.ContainsKey(resource.ResourceName)) { - // Ͽ ã + // 먼저 프리팹 목록에서 찾기 GameObject prefab = FindPrefabByName(objectName); - // ã ߴٸ ҽ Ʈ ü ø + // 찾지 못했다면 리소스 오브젝트 자체를 템플릿으로 저장 if (prefab == null) { if (debugMode) { - Debug.LogWarning($"ResourceManager: '{objectName}' ã Ʈ ü ø մϴ."); + Debug.LogWarning($"ResourceManager: '{objectName}' 프리팹을 찾을 수 없어 오브젝트 자체를 템플릿으로 사용합니다."); } prefab = resource.gameObject; } @@ -147,48 +151,79 @@ private void CacheInitialResourceData() if (debugMode) { - Debug.Log($"ResourceManager: '{resource.ResourceName}' ҽ ij̵, : {objectName}"); + Debug.Log($"ResourceManager: '{resource.ResourceName}' 리소스 데이터 캐싱됨, 프리팹: {objectName}"); } } } } } - // ҽ ̺Ʈ + // 리소스 이벤트 등록 private void RegisterResourceEvents() { foreach (ResourceObject resource in allResources) { - if (resource != null) + SubscribeToResourceDestroyed(resource); + } + } + + private void SubscribeToResourceDestroyed(ResourceObject resource) + { + if (resource == null || resourceDestroyedHandlers.ContainsKey(resource)) + { + return; + } + + UnityAction handler = () => OnResourceDestroyed(resource); + resourceDestroyedHandlers.Add(resource, handler); + resource.onDestroyed.AddListener(handler); + } + + private void UnsubscribeFromResourceDestroyed(ResourceObject resource) + { + if (resource == null || !resourceDestroyedHandlers.TryGetValue(resource, out UnityAction handler)) + { + return; + } + + resource.onDestroyed.RemoveListener(handler); + resourceDestroyedHandlers.Remove(resource); + } + + private void UnsubscribeAllResourceDestroyedHandlers() + { + foreach (KeyValuePair pair in resourceDestroyedHandlers) + { + if (pair.Key != null) { - // ٽ (ߺ ) - resource.onDestroyed.RemoveListener(() => OnResourceDestroyed(resource)); - resource.onDestroyed.AddListener(() => OnResourceDestroyed(resource)); + pair.Key.onDestroyed.RemoveListener(pair.Value); } } + + resourceDestroyedHandlers.Clear(); } - // ҽ ı ̺Ʈ ڵ鷯 + // 리소스 파괴 이벤트 핸들러 private void OnResourceDestroyed(ResourceObject resource) { if (resource == null) return; - // ı ҽ + // 파괴된 리소스 정보 저장 string objectName = resource.gameObject.name.Replace("(Clone)", "").Trim(); GameObject prefab = FindPrefabByName(objectName); - // ã ߴٸ ʱ Ϳ ã + // 프리팹을 찾지 못했다면 초기 데이터에서 찾기 if (prefab == null && initialResourceData.ContainsKey(resource.ResourceName)) { prefab = initialResourceData[resource.ResourceName]; if (debugMode) { - Debug.Log($"ResourceManager: '{objectName}' ã ijõ Ϳ ã: {resource.ResourceName}"); + Debug.Log($"ResourceManager: '{objectName}' 프리팹을 찾지 못했지만 캐시된 데이터에서 찾음: {resource.ResourceName}"); } } - // + // 정보 저장 DestroyedResourceData data = new DestroyedResourceData( prefab, resource.transform.position, @@ -202,46 +237,46 @@ private void OnResourceDestroyed(ResourceObject resource) if (debugMode) { - Debug.Log($"ResourceManager: ҽ '{resource.ResourceName}' ı ( ҽ: {destroyedResources.Count})"); + Debug.Log($"ResourceManager: 리소스 '{resource.ResourceName}' 파괴 정보 저장됨 (복구 대기 리소스: {destroyedResources.Count}개)"); } - // Ʈ ҽ + // 리스트에서 리소스 제거 RemoveResource(resource); } - // ħ ȣǴ ޼ҵ + // 아침 시작 시 호출되는 메소드 private void OnMorningStart() { if (debugMode) { - Debug.Log("ResourceManager: ħ , ı ҽ "); + Debug.Log("ResourceManager: 아침 시작, 파괴된 리소스 복구 시작"); } StartCoroutine(RestoreDestroyedResources()); } - // ı ҽ ڷƾ + // 파괴된 리소스 복구 코루틴 private IEnumerator RestoreDestroyedResources() { - // ҽ + // 복구할 리소스가 없으면 종료 if (destroyedResources.Count == 0) { if (debugMode) { - Debug.Log("ResourceManager: ҽ ϴ."); + Debug.Log("ResourceManager: 복구할 리소스가 없습니다."); } yield break; } if (debugMode) { - Debug.Log($"ResourceManager: {destroyedResources.Count} ҽ "); + Debug.Log($"ResourceManager: {destroyedResources.Count}개의 리소스 복구 시작"); } - // ణ (ٸ ý غ ð) + // 약간의 지연 후 복구 시작 (다른 시스템이 준비될 시간) yield return new WaitForSeconds(0.5f); - // ı ҽ + // 모든 파괴된 리소스 복구 List resourcesToRestore = new List(destroyedResources); int successCount = 0; @@ -249,7 +284,7 @@ private IEnumerator RestoreDestroyedResources() { GameObject newObject = null; - // õ + // 프리팹으로 복구 시도 if (data.prefab != null) { newObject = Instantiate(data.prefab, data.position, data.rotation); @@ -257,15 +292,15 @@ private IEnumerator RestoreDestroyedResources() if (debugMode) { - Debug.Log($"ResourceManager: ҽ '{data.resourceName}' "); + Debug.Log($"ResourceManager: 리소스 '{data.resourceName}' 원래 프리팹으로 복구됨"); } } - // ã ߴٸ ҽ 迭 ̸ ٽ ã + // 프리팹을 찾지 못했다면 리소스 프리팹 배열에서 이름으로 다시 찾기 else { GameObject matchingPrefab = null; - // ҽ ̸ ã + // 리소스 이름으로 프리팹 찾기 foreach (GameObject prefab in resourcePrefabs) { if (prefab != null) @@ -279,7 +314,7 @@ private IEnumerator RestoreDestroyedResources() } } - // ã + // 찾은 프리팹으로 복구 if (matchingPrefab != null) { newObject = Instantiate(matchingPrefab, data.position, data.rotation); @@ -287,27 +322,19 @@ private IEnumerator RestoreDestroyedResources() if (debugMode) { - Debug.Log($"ResourceManager: ҽ '{data.resourceName}' ̸ ġ "); + Debug.Log($"ResourceManager: 리소스 '{data.resourceName}' 이름 일치 프리팹으로 복구됨"); } } - // ⺻ õ + // 기본 프리팹으로 복구 시도 else if (defaultResourcePrefab != null) { newObject = Instantiate(defaultResourcePrefab, data.position, data.rotation); - // ⺻ + // 기본 정보 설정 ResourceObject resourceObj = newObject.GetComponent(); if (resourceObj != null) { - // Ƽ - System.Type type = typeof(ResourceObject); - System.Reflection.PropertyInfo propName = type.GetProperty("ResourceName"); - if (propName != null && propName.CanWrite) - { - propName.SetValue(resourceObj, data.resourceName); - } - - // ü ޼ҵ ȣ + resourceObj.SetResourceName(data.resourceName); resourceObj.SetMaxHealth(data.maxHP); } @@ -315,19 +342,19 @@ private IEnumerator RestoreDestroyedResources() if (debugMode) { - Debug.Log($"ResourceManager: ҽ '{data.resourceName}' ⺻ "); + Debug.Log($"ResourceManager: 리소스 '{data.resourceName}' 기본 프리팹으로 복구됨"); } } else { if (debugMode) { - Debug.LogWarning($"ResourceManager: ҽ '{data.resourceName}' ( , ⺻ յ )"); + Debug.LogWarning($"ResourceManager: 리소스 '{data.resourceName}' 복구 실패 (프리팹 없음, 기본 프리팹도 없음)"); } } } - // Ʈ ҽ + // 생성된 오브젝트가 있으면 리소스 등록 if (newObject != null) { ResourceObject resourceComponent = newObject.GetComponent(); @@ -337,21 +364,21 @@ private IEnumerator RestoreDestroyedResources() } } - // Ʈ ̿ ణ + // 각 오브젝트 생성 사이에 약간의 지연 yield return new WaitForSeconds(0.1f); } - // ҽ + // 복구된 리소스 목록 비우기 destroyedResources.Clear(); if (debugMode) { - Debug.Log($"ResourceManager: ҽ Ϸ ({successCount}/{resourcesToRestore.Count} )"); + Debug.Log($"ResourceManager: 리소스 복구 완료 ({successCount}/{resourcesToRestore.Count} 성공)"); LogResourceStatus(); } } - // ҽ ã (̸ ) + // 리소스 프리팹 찾기 (이름 기준) private GameObject FindPrefabByName(string name) { if (string.IsNullOrEmpty(name)) return null; @@ -367,13 +394,13 @@ private GameObject FindPrefabByName(string name) return null; } - // ʱ ִ ü - ȣ + // 초기 최대 체력 계산 - 씬 시작 시 한 번만 호출 private void CalculateInitialMaxHP() { initialTotalMaxHP = 0f; initialResources.Clear(); - // ҽ ִ ü ջ ʱ ҽ + // 모든 리소스의 최대 체력 합산 및 초기 리소스 목록 저장 foreach (ResourceObject resource in allResources) { if (resource != null) @@ -385,38 +412,38 @@ private void CalculateInitialMaxHP() if (debugMode) { - Debug.Log($"ResourceManager: ʱ ִ ü Ϸ = {initialTotalMaxHP}"); + Debug.Log($"ResourceManager: 초기 최대 체력 계산 완료 = {initialTotalMaxHP}"); } } public void RefreshResourceList() { + UnsubscribeAllResourceDestroyedHandlers(); allResources.Clear(); allResources.AddRange(FindObjectsOfType()); + RegisterResourceEvents(); if (debugMode) { - Debug.Log($"ResourceManager: {allResources.Count} ȭ Ʈ ߰"); + Debug.Log($"ResourceManager: {allResources.Count}개의 재화 오브젝트 발견"); } } - // ڿ ߰ + // 새 자원 추가 public void AddResource(ResourceObject resource) { if (resource != null && !allResources.Contains(resource)) { allResources.Add(resource); - // ı ̺Ʈ - resource.onDestroyed.RemoveListener(() => OnResourceDestroyed(resource)); - resource.onDestroyed.AddListener(() => OnResourceDestroyed(resource)); + SubscribeToResourceDestroyed(resource); if (debugMode) { - Debug.Log($"ResourceManager: ȭ Ʈ '{resource.ResourceName}' ߰"); + Debug.Log($"ResourceManager: 재화 오브젝트 '{resource.ResourceName}' 추가"); } - // ʱȭ Ŀ ߰ ҽ ʱ ִ ü¿ - // ʿ Ʒ ڵ ּ Ͽ ʱ ִ ü Ʈ + // 초기화 이후에 추가된 리소스는 초기 최대 체력에 영향을 주지 않음 + // 필요시 아래 코드 주석 해제하여 동적으로 초기 최대 체력 업데이트 가능 /* if (!initialResources.Contains(resource)) { @@ -425,29 +452,30 @@ public void AddResource(ResourceObject resource) if (debugMode) { - Debug.Log($"ResourceManager: ʱ ִ ü Ʈ = {initialTotalMaxHP} (+{resource.MaxHP})"); + Debug.Log($"ResourceManager: 초기 최대 체력 업데이트 = {initialTotalMaxHP} (+{resource.MaxHP})"); } } */ } } - // ڿ + // 자원 제거 public void RemoveResource(ResourceObject resource) { if (resource != null && allResources.Contains(resource)) { + UnsubscribeFromResourceDestroyed(resource); allResources.Remove(resource); if (debugMode) { - Debug.Log($"ResourceManager: ȭ Ʈ '{resource.ResourceName}' ŵ, : {allResources.Count}"); - Debug.Log($"ResourceManager: ü = {TotalHealthRatio:P2}"); + Debug.Log($"ResourceManager: 재화 오브젝트 '{resource.ResourceName}' 제거됨, 남은 개수: {allResources.Count}"); + Debug.Log($"ResourceManager: 현재 체력 비율 = {TotalHealthRatio:P2}"); } } } - // ʱ (ʿ ȣ) + // 초기 상태 리셋 (필요시 호출) public void ResetInitialState() { RefreshResourceList(); @@ -456,23 +484,23 @@ public void ResetInitialState() if (debugMode) { - Debug.Log("ResourceManager: ʱ µ"); + Debug.Log("ResourceManager: 초기 상태 리셋됨"); } } - // ü ȭ Ʈ + // 전체 재화 오브젝트 개수 가져오기 public int GetTotalResourceCount() { return allResources.Count; } - // ʱ ȭ Ʈ + // 초기 재화 오브젝트 개수 가져오기 public int GetInitialResourceCount() { return initialResources.Count; } - // ջ ȭ Ʈ + // 현재 손상된 재화 오브젝트 개수 가져오기 public int GetDamagedResourceCount() { int count = 0; @@ -486,7 +514,7 @@ public int GetDamagedResourceCount() return count; } - // ı ȭ Ʈ (Ʈ ŵ 0ü Ʈ) + // 파괴된 재화 오브젝트 개수 가져오기 (리스트에서 제거되지 않은 0체력 오브젝트) public int GetDestroyedResourceCount() { int count = 0; @@ -500,13 +528,13 @@ public int GetDestroyedResourceCount() return count; } - // ı ҽ + // 복구 대기 중인 파괴된 리소스 개수 가져오기 public int GetPendingRestoreCount() { return destroyedResources.Count; } - // ʱ ҽ ı (0~1) + // 초기 리소스 중 파괴된 비율 (0~1) public float GetDestroyedRatio() { int initialCount = initialResources.Count; @@ -524,20 +552,20 @@ public float GetDestroyedRatio() return (float)destroyedCount / initialCount; } - // ü ȭ Ʈ α + // 전체 재화 오브젝트 상태 로그 출력 public void LogResourceStatus() { - Debug.Log($"=== ȭ Ʈ ==="); - Debug.Log($"ʱ ִ ü: {initialTotalMaxHP}"); - Debug.Log($"ʱ : {initialResources.Count}"); - Debug.Log($" : {allResources.Count}"); - Debug.Log($" : {destroyedResources.Count}"); - Debug.Log($" ü : {TotalHealthRatio:P2}"); - Debug.Log($"սǵ: {DamageRatio:P2}"); - Debug.Log($"ջ : {GetDamagedResourceCount()}"); - Debug.Log($"ı : {GetDestroyedResourceCount()}"); - - Debug.Log($"--- ҽ ---"); + Debug.Log($"=== 재화 오브젝트 상태 ==="); + Debug.Log($"초기 최대 체력: {initialTotalMaxHP}"); + Debug.Log($"초기 개수: {initialResources.Count}"); + Debug.Log($"현재 개수: {allResources.Count}"); + Debug.Log($"복구 대기 중인 개수: {destroyedResources.Count}"); + Debug.Log($"총 체력 비율: {TotalHealthRatio:P2}"); + Debug.Log($"손실도: {DamageRatio:P2}"); + Debug.Log($"손상된 개수: {GetDamagedResourceCount()}"); + Debug.Log($"파괴된 개수: {GetDestroyedResourceCount()}"); + + Debug.Log($"--- 현재 리소스 상태 ---"); foreach (ResourceObject resource in allResources) { if (resource != null) @@ -546,4 +574,4 @@ public void LogResourceStatus() } } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/ResourceManager.cs.meta b/Assets/_Project/Scripts/Legacy/ResourceManager.cs.meta similarity index 100% rename from Assets/Scripts/ResourceManager.cs.meta rename to Assets/_Project/Scripts/Legacy/ResourceManager.cs.meta diff --git a/Assets/Scripts/ResourceManagerUpdater.cs b/Assets/_Project/Scripts/Legacy/ResourceManagerUpdater.cs similarity index 100% rename from Assets/Scripts/ResourceManagerUpdater.cs rename to Assets/_Project/Scripts/Legacy/ResourceManagerUpdater.cs diff --git a/Assets/Scripts/ResourceManagerUpdater.cs.meta b/Assets/_Project/Scripts/Legacy/ResourceManagerUpdater.cs.meta similarity index 100% rename from Assets/Scripts/ResourceManagerUpdater.cs.meta rename to Assets/_Project/Scripts/Legacy/ResourceManagerUpdater.cs.meta diff --git a/Assets/Scripts/ResourceObject.cs b/Assets/_Project/Scripts/Legacy/ResourceObject.cs similarity index 52% rename from Assets/Scripts/ResourceObject.cs rename to Assets/_Project/Scripts/Legacy/ResourceObject.cs index 51e37c5..e4a89d2 100644 --- a/Assets/Scripts/ResourceObject.cs +++ b/Assets/_Project/Scripts/Legacy/ResourceObject.cs @@ -5,46 +5,51 @@ public class ResourceObject : MonoBehaviour { - [SerializeField] private float maxHP = 100f; // ִ ü - [SerializeField] private string resourceName = "Goods"; // ȭ Ʈ ̸ - [SerializeField] private GameObject destroyEffect; // ı Ʈ - [SerializeField] private bool isInvincible = false; // () + [SerializeField] private float maxHP = 100f; // 최대 체력 + [SerializeField] private string resourceName = "Goods"; // 재화 오브젝트 이름 + [SerializeField] private GameObject destroyEffect; // 파괴 시 이펙트 + [SerializeField] private bool isInvincible = false; // 무적 여부 (선택적) [Header("Isometric Settings")] - [SerializeField] private bool updateZPosition = true; // ̼ҸƮ Z ġ Ʈ + [SerializeField] private bool updateZPosition = true; // 이소메트릭 Z 위치 업데이트 여부 [Header("Events")] - public UnityEvent onDamaged; // ̺Ʈ - public UnityEvent onDestroyed; // ı ̺Ʈ + public UnityEvent onDamaged; // 데미지 받을 때 이벤트 + public UnityEvent onDestroyed; // 파괴될 때 이벤트 - private float currentHP; // ü - private SpriteRenderer spriteRenderer; // Ʈ - private PlayerGold playerGold; // ÷̾ - private IsometricPositionHandler isometricPosition; // ̼ҸƮ ġ ڵ鷯 + private float currentHP; // 현재 체력 + private SpriteRenderer spriteRenderer; // 스프라이트 렌더러 + private PlayerGold playerGold; // 플레이어 골드 참조 + private IsometricPositionHandler isometricPosition; // 이소메트릭 위치 핸들러 - // ִ ü Ƽ + // 최대 체력 프로퍼티 public float MaxHP => maxHP; - // ü Ƽ + // 현재 체력 프로퍼티 public float CurrentHP => currentHP; - // ü Ƽ (0~1) + // 체력 비율 프로퍼티 (0~1) public float HealthRatio => currentHP / maxHP; - // ̸ Ƽ + // 이름 프로퍼티 public string ResourceName => resourceName; - // Awake: ʱȭ + public void SetResourceName(string newResourceName) + { + resourceName = string.IsNullOrWhiteSpace(newResourceName) ? "Goods" : newResourceName; + } + + // Awake: 초기화 private void Awake() { currentHP = maxHP; spriteRenderer = GetComponent(); - // ÷̾ HP ã + // 플레이어 골드 및 HP 참조 찾기 playerGold = FindObjectOfType(); - // ̼ҸƮ ġ ڵ鷯 ų + // 이소메트릭 위치 핸들러 가져오거나 생성 isometricPosition = GetComponent(); if (isometricPosition == null && updateZPosition) { @@ -52,28 +57,28 @@ private void Awake() } } - // Start: ߰ ʱȭ + // Start: 추가 초기화 private void Start() { - // ǥ UI ʱȭ ʿ ⿡ ߰ + // 상태 표시 UI 초기화 등 필요시 여기에 추가 if (updateZPosition && isometricPosition == null) { - // Z ġ + // Z 위치 수동 조정 UpdateZPosition(); } } - // Update: Z ġ Ʈ + // Update: Z 위치 업데이트 private void Update() { if (updateZPosition && isometricPosition == null) { - // Z ġ + // Z 위치 수동 조정 UpdateZPosition(); } } - // Z ġ Ʈ (̼ҸƮ ) + // Z 위치 수동 업데이트 (이소메트릭 뷰) private void UpdateZPosition() { Vector3 position = transform.position; @@ -81,100 +86,100 @@ private void UpdateZPosition() transform.position = position; } - // ó ޼ҵ + // 데미지 처리 메소드 public void TakeDamage(float damage) { - // ¸ + // 무적 상태면 데미지 무시 if (isInvincible) return; - // + // 데미지 적용 currentHP = Mathf.Max(0, currentHP - damage); - // ޾ ̺Ʈ ߻ + // 데미지 받았을 때 이벤트 발생 onDamaged?.Invoke(); - // ȿ ǥ + // 데미지 효과 표시 StartCoroutine(DamageEffect()); - Debug.Log($"{resourceName}() {damage} . ü: {currentHP}/{maxHP}"); + Debug.Log($"{resourceName}이(가) {damage}의 데미지를 받음. 남은 체력: {currentHP}/{maxHP}"); - // ü 0 Ǹ ı + // 체력이 0이 되면 파괴 if (currentHP <= 0) { DestroyResource(); } } - // ȿ ڷƾ ( ȿ) + // 데미지 효과 코루틴 (깜빡임 효과) private IEnumerator DamageEffect() { if (spriteRenderer == null) yield break; - // + // 원래 색상 저장 Color originalColor = spriteRenderer.color; - // + // 빨간색으로 변경 spriteRenderer.color = Color.red; - // + // 잠시 대기 yield return new WaitForSeconds(0.1f); - // + // 원래 색상으로 복구 spriteRenderer.color = originalColor; } - // ȭ Ʈ ı ޼ҵ + // 재화 오브젝트 파괴 메소드 private void DestroyResource() { - // ı ̺Ʈ ߻ + // 파괴 이벤트 발생 onDestroyed?.Invoke(); - // ı Ʈ + // 파괴 이펙트 생성 if (destroyEffect != null) { - // Ʈ Z ġ + // 이펙트 생성 시 Z 위치 조정 Vector3 effectPosition = transform.position; GameObject effect = Instantiate(destroyEffect, effectPosition, Quaternion.identity); - // Ʈ ̼ҸƮ ġ ڵ鷯 ߰ + // 이펙트에 이소메트릭 위치 핸들러 추가 if (effect.GetComponent() == null) { effect.AddComponent(); } } - // Ʈ ı + // 오브젝트 파괴 Destroy(gameObject); } - // ġ ޼ҵ (ʿ) + // 치료 메소드 (필요시) public void Heal(float amount) { currentHP = Mathf.Min(maxHP, currentHP + amount); - Debug.Log($"{resourceName}() {amount}ŭ ȸ. ü: {currentHP}/{maxHP}"); + Debug.Log($"{resourceName}이(가) {amount}만큼 회복됨. 현재 체력: {currentHP}/{maxHP}"); } - // ü ޼ҵ + // 체력 설정 메소드 public void SetHealth(float health) { currentHP = Mathf.Clamp(health, 0, maxHP); - // ü 0̸ ı + // 체력이 0이면 파괴 if (currentHP <= 0) { DestroyResource(); } } - // ִ ü ޼ҵ + // 최대 체력 설정 메소드 public void SetMaxHealth(float newMaxHP) { - float ratio = currentHP / maxHP; // ü + float ratio = currentHP / maxHP; // 현재 체력 비율 유지 maxHP = newMaxHP; currentHP = maxHP * ratio; } - // ġ ޼ҵ (̼ҸƮ Z ڵ ) + // 위치 설정 메소드 (이소메트릭 Z 자동 조정) public void SetPosition(Vector3 newPosition) { if (isometricPosition != null) @@ -187,4 +192,4 @@ public void SetPosition(Vector3 newPosition) transform.position = newPosition; } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/ResourceObject.cs.meta b/Assets/_Project/Scripts/Legacy/ResourceObject.cs.meta similarity index 100% rename from Assets/Scripts/ResourceObject.cs.meta rename to Assets/_Project/Scripts/Legacy/ResourceObject.cs.meta diff --git a/Assets/Scripts/ResourceObjectEditor.cs b/Assets/_Project/Scripts/Legacy/ResourceObjectEditor.cs similarity index 100% rename from Assets/Scripts/ResourceObjectEditor.cs rename to Assets/_Project/Scripts/Legacy/ResourceObjectEditor.cs diff --git a/Assets/Scripts/ResourceObjectEditor.cs.meta b/Assets/_Project/Scripts/Legacy/ResourceObjectEditor.cs.meta similarity index 100% rename from Assets/Scripts/ResourceObjectEditor.cs.meta rename to Assets/_Project/Scripts/Legacy/ResourceObjectEditor.cs.meta diff --git a/Assets/Scripts/SliderPositionAutoSetter.cs b/Assets/_Project/Scripts/Legacy/SliderPositionAutoSetter.cs similarity index 100% rename from Assets/Scripts/SliderPositionAutoSetter.cs rename to Assets/_Project/Scripts/Legacy/SliderPositionAutoSetter.cs diff --git a/Assets/Scripts/SliderPositionAutoSetter.cs.meta b/Assets/_Project/Scripts/Legacy/SliderPositionAutoSetter.cs.meta similarity index 100% rename from Assets/Scripts/SliderPositionAutoSetter.cs.meta rename to Assets/_Project/Scripts/Legacy/SliderPositionAutoSetter.cs.meta diff --git a/Assets/Scripts/SpriteSwitcher.cs b/Assets/_Project/Scripts/Legacy/SpriteSwitcher.cs similarity index 100% rename from Assets/Scripts/SpriteSwitcher.cs rename to Assets/_Project/Scripts/Legacy/SpriteSwitcher.cs diff --git a/Assets/Scripts/SpriteSwitcher.cs.meta b/Assets/_Project/Scripts/Legacy/SpriteSwitcher.cs.meta similarity index 100% rename from Assets/Scripts/SpriteSwitcher.cs.meta rename to Assets/_Project/Scripts/Legacy/SpriteSwitcher.cs.meta diff --git a/Assets/Scripts/SystemTextViewer.cs b/Assets/_Project/Scripts/Legacy/SystemTextViewer.cs similarity index 100% rename from Assets/Scripts/SystemTextViewer.cs rename to Assets/_Project/Scripts/Legacy/SystemTextViewer.cs diff --git a/Assets/Scripts/SystemTextViewer.cs.meta b/Assets/_Project/Scripts/Legacy/SystemTextViewer.cs.meta similarity index 100% rename from Assets/Scripts/SystemTextViewer.cs.meta rename to Assets/_Project/Scripts/Legacy/SystemTextViewer.cs.meta diff --git a/Assets/Scripts/TMPAlpha.cs b/Assets/_Project/Scripts/Legacy/TMPAlpha.cs similarity index 100% rename from Assets/Scripts/TMPAlpha.cs rename to Assets/_Project/Scripts/Legacy/TMPAlpha.cs diff --git a/Assets/Scripts/TMPAlpha.cs.meta b/Assets/_Project/Scripts/Legacy/TMPAlpha.cs.meta similarity index 100% rename from Assets/Scripts/TMPAlpha.cs.meta rename to Assets/_Project/Scripts/Legacy/TMPAlpha.cs.meta diff --git a/Assets/Scripts/TargetManager.cs b/Assets/_Project/Scripts/Legacy/TargetManager.cs similarity index 100% rename from Assets/Scripts/TargetManager.cs rename to Assets/_Project/Scripts/Legacy/TargetManager.cs diff --git a/Assets/Scripts/TargetManager.cs.meta b/Assets/_Project/Scripts/Legacy/TargetManager.cs.meta similarity index 100% rename from Assets/Scripts/TargetManager.cs.meta rename to Assets/_Project/Scripts/Legacy/TargetManager.cs.meta diff --git a/Assets/Scripts/TargetObject.cs b/Assets/_Project/Scripts/Legacy/TargetObject.cs similarity index 100% rename from Assets/Scripts/TargetObject.cs rename to Assets/_Project/Scripts/Legacy/TargetObject.cs diff --git a/Assets/Scripts/TargetObject.cs.meta b/Assets/_Project/Scripts/Legacy/TargetObject.cs.meta similarity index 100% rename from Assets/Scripts/TargetObject.cs.meta rename to Assets/_Project/Scripts/Legacy/TargetObject.cs.meta diff --git a/Assets/Scripts/TextTMPViewer.cs b/Assets/_Project/Scripts/Legacy/TextTMPViewer.cs similarity index 100% rename from Assets/Scripts/TextTMPViewer.cs rename to Assets/_Project/Scripts/Legacy/TextTMPViewer.cs diff --git a/Assets/Scripts/TextTMPViewer.cs.meta b/Assets/_Project/Scripts/Legacy/TextTMPViewer.cs.meta similarity index 100% rename from Assets/Scripts/TextTMPViewer.cs.meta rename to Assets/_Project/Scripts/Legacy/TextTMPViewer.cs.meta diff --git a/Assets/Scripts/Tile.cs b/Assets/_Project/Scripts/Legacy/Tile.cs similarity index 100% rename from Assets/Scripts/Tile.cs rename to Assets/_Project/Scripts/Legacy/Tile.cs diff --git a/Assets/Scripts/Tile.cs.meta b/Assets/_Project/Scripts/Legacy/Tile.cs.meta similarity index 100% rename from Assets/Scripts/Tile.cs.meta rename to Assets/_Project/Scripts/Legacy/Tile.cs.meta diff --git a/Assets/Scripts/TimeBasedUIManager.cs b/Assets/_Project/Scripts/Legacy/TimeBasedUIManager.cs similarity index 100% rename from Assets/Scripts/TimeBasedUIManager.cs rename to Assets/_Project/Scripts/Legacy/TimeBasedUIManager.cs diff --git a/Assets/Scripts/TimeBasedUIManager.cs.meta b/Assets/_Project/Scripts/Legacy/TimeBasedUIManager.cs.meta similarity index 100% rename from Assets/Scripts/TimeBasedUIManager.cs.meta rename to Assets/_Project/Scripts/Legacy/TimeBasedUIManager.cs.meta diff --git a/Assets/Scripts/TimeSystem.cs b/Assets/_Project/Scripts/Legacy/TimeSystem.cs similarity index 62% rename from Assets/Scripts/TimeSystem.cs rename to Assets/_Project/Scripts/Legacy/TimeSystem.cs index 6a5d4da..2b4f154 100644 --- a/Assets/Scripts/TimeSystem.cs +++ b/Assets/_Project/Scripts/Legacy/TimeSystem.cs @@ -11,65 +11,65 @@ public class TimeSystem : MonoBehaviour { [Header("Time Settings")] [SerializeField] private TimeOfDay currentTimeOfDay = TimeOfDay.Morning; - [SerializeField] private float morningTransitionDuration = 1.5f; // ħ ȯ ȿ ӽð - [SerializeField] private float eveningTransitionDuration = 1.5f; // ȯ ȿ ӽð + [SerializeField] private float morningTransitionDuration = 1.5f; // 아침 전환 효과 지속시간 + [SerializeField] private float eveningTransitionDuration = 1.5f; // 저녁 전환 효과 지속시간 [Header("Visual Effects")] - [SerializeField] private GameObject morningVisualEffect; // ħ ȯ ðȿ - [SerializeField] private GameObject eveningVisualEffect; // ȯ ðȿ + [SerializeField] private GameObject morningVisualEffect; // 아침 전환 시각효과 + [SerializeField] private GameObject eveningVisualEffect; // 저녁 전환 시각효과 [Header("Color Settings")] - [SerializeField] private bool useColorTransition = true; // ȯ - [SerializeField] private Color morningBackgroundColor = Color.cyan; // ħ - [SerializeField] private Color eveningBackgroundColor = Color.black; // - [SerializeField] private Color morningTilemapColor = Color.white; // ħ Ÿϸ - [SerializeField] private Color eveningTilemapColor = new Color(0.5f, 0.5f, 0.5f, 1f); // Ÿϸ - [SerializeField] private List tilemaps = new List(); // Ÿϸ Ʈ - [SerializeField] private float colorTransitionSpeed = 1.0f; // ȯ ӵ + [SerializeField] private bool useColorTransition = true; // 색상 전환 사용 여부 + [SerializeField] private Color morningBackgroundColor = Color.cyan; // 아침 배경색 + [SerializeField] private Color eveningBackgroundColor = Color.black; // 저녁 배경색 + [SerializeField] private Color morningTilemapColor = Color.white; // 아침 타일맵 색상 + [SerializeField] private Color eveningTilemapColor = new Color(0.5f, 0.5f, 0.5f, 1f); // 저녁 타일맵 색상 + [SerializeField] private List tilemaps = new List(); // 색상을 변경할 타일맵 리스트 + [SerializeField] private float colorTransitionSpeed = 1.0f; // 색상 전환 속도 [Header("UI References")] - [SerializeField] private GameObject morningOnlyUI; // ħ ǥõǴ UI - [SerializeField] private GameObject eveningOnlyUI; // ῡ ǥõǴ UI - [SerializeField] private GameObject panelStage; // ̺ ǥõ г + [SerializeField] private GameObject morningOnlyUI; // 아침에만 표시되는 UI + [SerializeField] private GameObject eveningOnlyUI; // 저녁에만 표시되는 UI + [SerializeField] private GameObject panelStage; // 웨이브 종료 후 표시될 스테이지 패널 [Header("System References")] - [SerializeField] private WaveSystem waveSystem; // ̺ ý - [SerializeField] private PlayerGold playerGold; // ÷̾ - [SerializeField] private PlayerExperience playerExperience; // ÷̾ ġ - [SerializeField] private MicrophoneSystem microphoneSystem; // յ ũ ý - [SerializeField] private DayCounterSystem dayCounterSystem; // ϼ ý - [SerializeField] private WaveResultSystem waveResultSystem; // ̺ ý + [SerializeField] private WaveSystem waveSystem; // 웨이브 시스템 참조 + [SerializeField] private PlayerGold playerGold; // 플레이어 골드 참조 + [SerializeField] private PlayerExperience playerExperience; // 플레이어 경험치 참조 + [SerializeField] private MicrophoneSystem microphoneSystem; // 통합된 마이크 시스템 + [SerializeField] private DayCounterSystem dayCounterSystem; // 일수 관리 시스템 참조 + [SerializeField] private WaveResultSystem waveResultSystem; // 웨이브 결과 시스템 참조 [Header("Layer Settings")] - [SerializeField] private bool useLayerBasedActivation = true; // ̾ Ȱȭ/Ȱȭ - [SerializeField] private string morningOnlyLayerName = "MorningOnly"; // ħ ̾ ̸ - [SerializeField] private string eveningOnlyLayerName = "EveningOnly"; // ̾ ̸ - [SerializeField] private string resourceLayerName = "Resource"; // ڿ ̾ ̸ - [SerializeField] private string towerLayerName = "Tower"; // Ÿ ̾ ̸ + [SerializeField] private bool useLayerBasedActivation = true; // 레이어 기반 활성화/비활성화 사용 여부 + [SerializeField] private string morningOnlyLayerName = "MorningOnly"; // 아침 전용 레이어 이름 + [SerializeField] private string eveningOnlyLayerName = "EveningOnly"; // 저녁 전용 레이어 이름 + [SerializeField] private string resourceLayerName = "Resource"; // 자원 레이어 이름 + [SerializeField] private string towerLayerName = "Tower"; // 타워 레이어 이름 // Events public UnityEvent onMorningStart; public UnityEvent onEveningStart; - // ð Ƽ + // 현재 시간 프로퍼티 public TimeOfDay CurrentTime => currentTimeOfDay; - // ð ȯ + // 시간 전환 중인지 여부 private bool isTransitioning = false; - // ̾ ε ij + // 레이어 인덱스 캐싱 private int morningLayer; private int eveningLayer; private int resourceLayer; private int towerLayer; - // ȯ ڷƾ + // 색상 전환 코루틴 참조 private Coroutine colorTransitionCoroutine; private Camera mainCameraCache; private void Awake() { - // ý Ʈ ã + // 시스템 컴포넌트 찾기 if (waveSystem == null) waveSystem = FindObjectOfType(); if (playerGold == null) playerGold = FindObjectOfType(); if (playerExperience == null) playerExperience = FindObjectOfType(); @@ -77,43 +77,43 @@ private void Awake() if (dayCounterSystem == null) dayCounterSystem = FindObjectOfType(); if (waveResultSystem == null) waveResultSystem = FindObjectOfType(); - // ī޶ ij + // 메인 카메라 캐싱 mainCameraCache = Camera.main; - // Ÿϸ ڵ ã (Ʈ ִ ) + // 타일맵 자동 찾기 (리스트가 비어있는 경우) if (tilemaps.Count == 0) { Tilemap[] foundTilemaps = FindObjectsOfType(); if (foundTilemaps.Length > 0) { tilemaps.AddRange(foundTilemaps); - Debug.Log($"{foundTilemaps.Length} Ÿϸ ڵ ãҽϴ."); + Debug.Log($"{foundTilemaps.Length}개의 타일맵을 자동으로 찾았습니다."); } } - // ̾ ε ij + // 레이어 인덱스 캐싱 morningLayer = LayerMask.NameToLayer(morningOnlyLayerName); eveningLayer = LayerMask.NameToLayer(eveningOnlyLayerName); resourceLayer = LayerMask.NameToLayer(resourceLayerName); towerLayer = LayerMask.NameToLayer(towerLayerName); - // ̾ ϴ Ȯ + // 레이어가 존재하는지 확인 if (morningLayer == -1) - Debug.LogError($"{morningOnlyLayerName} ̾ ʽϴ. Unity ̾ ּ."); + Debug.LogError($"{morningOnlyLayerName} 레이어가 존재하지 않습니다. Unity에서 레이어를 생성해주세요."); if (eveningLayer == -1) - Debug.LogError($"{eveningOnlyLayerName} ̾ ʽϴ. Unity ̾ ּ."); + Debug.LogError($"{eveningOnlyLayerName} 레이어가 존재하지 않습니다. Unity에서 레이어를 생성해주세요."); if (resourceLayer == -1) - Debug.LogError($"{resourceLayerName} ̾ ʽϴ. Unity ̾ ּ."); + Debug.LogError($"{resourceLayerName} 레이어가 존재하지 않습니다. Unity에서 레이어를 생성해주세요."); if (towerLayer == -1) - Debug.LogError($"{towerLayerName} ̾ ʽϴ. Unity ̾ ּ."); + Debug.LogError($"{towerLayerName} 레이어가 존재하지 않습니다. Unity에서 레이어를 생성해주세요."); - // ʱ ð UI + // 초기 시간 설정에 따른 UI 설정 UpdateUIBasedOnTime(currentTimeOfDay); - // ʱ + // 초기 색상 설정 if (useColorTransition) { ApplyTimeBasedColors(currentTimeOfDay); @@ -122,7 +122,7 @@ private void Awake() private void Start() { - // ̺ ý ̺Ʈ + // 웨이브 시스템 이벤트 구독 if (waveSystem != null) { waveSystem.OnWaveStart += HandleWaveStart; @@ -130,7 +130,7 @@ private void Start() waveSystem.OnAllWavesCompleted += HandleAllWavesCompleted; } - // ʱ ð ̸ + // 초기 시간이 저녁이면 게임 시작 시 저녁 모드로 설정 if (currentTimeOfDay == TimeOfDay.Evening) { SetEveningMode(false); @@ -143,7 +143,7 @@ private void Start() private void OnDestroy() { - // ̺Ʈ + // 이벤트 구독 해제 if (waveSystem != null) { waveSystem.OnWaveStart -= HandleWaveStart; @@ -151,213 +151,213 @@ private void OnDestroy() waveSystem.OnAllWavesCompleted -= HandleAllWavesCompleted; } - // ڷƾ + // 코루틴 중지 if (colorTransitionCoroutine != null) { StopCoroutine(colorTransitionCoroutine); } } - #region ̺ ̺Ʈ ڵ鷯 + #region 웨이브 이벤트 핸들러 - // ̺ ó + // 웨이브 시작 처리 private void HandleWaveStart(int waveNumber, string waveName) { - // ȯ + // 저녁으로 전환 StartCoroutine(TransitionToEvening()); } - // ̺ ó + // 웨이브 종료 처리 private void HandleWaveEnd(int waveNumber, string waveName) { - // ħ ȯ + // 아침으로 전환 StartCoroutine(TransitionToMorning()); - // ̺ г ǥ + // 웨이브 종료 패널 표시 if (panelStage != null) { panelStage.SetActive(true); } - // ̺ ¸/й Ȯ ϼ ó + // 웨이브 승리/패배 확인 후 일수 증가 처리 StartCoroutine(HandleDayCounterAfterWaveResult()); } - // ̺ Ȯ ϼ ó ڷƾ + // 웨이브 결과 확인 후 일수 증가 처리 코루틴 private IEnumerator HandleDayCounterAfterWaveResult() { - // ̺ ó (¸/й ð ʿ ) + // 웨이브 결과 처리 대기 (승리/패배 판정에 시간이 필요할 수 있음) yield return new WaitForSeconds(1f); - // ϼ ó (ù ° ̺갡 ƴ ) + // 일수 증가 처리 (첫 번째 웨이브가 아닌 경우) if (waveSystem != null && waveSystem.CurrentWave > 1 && dayCounterSystem != null) { - // ϼ + // 일수 증가 dayCounterSystem.IncrementDay(); } } - // ̺ Ϸ ó + // 모든 웨이브 완료 처리 private void HandleAllWavesCompleted() { - // ̺ Ϸ Ư ó - // ex) Ŭ ȭ Ǵ - Debug.Log(" ̺ Ϸ! Ŭ Ǵ "); + // 모든 웨이브 완료 시 특별 처리 + // ex) 게임 클리어 화면 또는 다음 스테이지 등 + Debug.Log("모든 웨이브 완료됨! 게임 클리어 또는 다음 스테이지로 진행"); } #endregion - #region ð ȯ + #region 시간 전환 관리 - // ȯϴ ڷƾ + // 저녁으로 전환하는 코루틴 public IEnumerator TransitionToEvening() { if (isTransitioning || currentTimeOfDay == TimeOfDay.Evening) yield break; isTransitioning = true; - // ȯ ȿ ǥ + // 전환 효과 표시 if (eveningVisualEffect != null) { eveningVisualEffect.SetActive(true); } - // ȯ ( Ÿϸ ) + // 색상 전환 시작 (배경색과 타일맵 색상) if (useColorTransition) { StartColorTransition(TimeOfDay.Evening); } - // ȯ + // 전환 지연 yield return new WaitForSeconds(eveningTransitionDuration); - // ȯ ȿ + // 전환 효과 종료 if (eveningVisualEffect != null) { eveningVisualEffect.SetActive(false); } - // + // 저녁 모드 설정 SetEveningMode(); isTransitioning = false; } - // ħ ȯϴ ڷƾ + // 아침으로 전환하는 코루틴 public IEnumerator TransitionToMorning() { if (isTransitioning || currentTimeOfDay == TimeOfDay.Morning) yield break; isTransitioning = true; - // ȯ ȿ ǥ + // 전환 효과 표시 if (morningVisualEffect != null) { morningVisualEffect.SetActive(true); } - // ȯ ( Ÿϸ ) + // 색상 전환 시작 (배경색과 타일맵 색상) if (useColorTransition) { StartColorTransition(TimeOfDay.Morning); } - // ȯ + // 전환 지연 yield return new WaitForSeconds(morningTransitionDuration); - // ȯ ȿ + // 전환 효과 종료 if (morningVisualEffect != null) { morningVisualEffect.SetActive(false); } - // ħ + // 아침 모드 설정 SetMorningMode(); isTransitioning = false; } - // + // 저녁 모드 설정 public void SetEveningMode(bool withEvents = true) { currentTimeOfDay = TimeOfDay.Evening; - // UI Ʈ + // UI 업데이트 UpdateUIBasedOnTime(TimeOfDay.Evening); - // ̾ Ȱȭ/Ȱȭ Ʈ + // 레이어 기반 활성화/비활성화 업데이트 if (useLayerBasedActivation) { UpdateLayersBasedOnTime(TimeOfDay.Evening); } - // ÷ Ʈ + // 게임플레이 요소 업데이트 UpdateGameplayForEvening(); - // ִϸ̼ ٷ + // 애니메이션 없이 바로 색상 적용 if (useColorTransition && !isTransitioning) { ApplyTimeBasedColors(TimeOfDay.Evening); } - // ̺Ʈ ߻ + // 이벤트 발생 if (withEvents) { onEveningStart?.Invoke(); } - Debug.Log(" ȯ: "); + Debug.Log("저녁으로 전환됨: 전투 시작"); } - // ħ + // 아침 모드 설정 public void SetMorningMode(bool withEvents = true) { currentTimeOfDay = TimeOfDay.Morning; - // UI Ʈ + // UI 업데이트 UpdateUIBasedOnTime(TimeOfDay.Morning); - // ̾ Ȱȭ/Ȱȭ Ʈ + // 레이어 기반 활성화/비활성화 업데이트 if (useLayerBasedActivation) { UpdateLayersBasedOnTime(TimeOfDay.Morning); } - // ÷ Ʈ + // 게임플레이 요소 업데이트 UpdateGameplayForMorning(); - // ִϸ̼ ٷ + // 애니메이션 없이 바로 색상 적용 if (useColorTransition && !isTransitioning) { ApplyTimeBasedColors(TimeOfDay.Morning); } - // ̺Ʈ ߻ + // 이벤트 발생 if (withEvents) { onMorningStart?.Invoke(); } - Debug.Log("ħ ȯ: غ ܰ"); + Debug.Log("아침으로 전환됨: 준비 단계"); } #endregion - #region ȯ + #region 색상 전환 관리 - // ȯ + // 색상 전환 시작 private void StartColorTransition(TimeOfDay targetTime) { if (mainCameraCache == null) mainCameraCache = Camera.main; if (mainCameraCache == null) return; - // ڷƾ + // 기존 코루틴 중지 if (colorTransitionCoroutine != null) { StopCoroutine(colorTransitionCoroutine); } - // ڷƾ + // 새 코루틴 시작 colorTransitionCoroutine = StartCoroutine( SwapColor( targetTime == TimeOfDay.Morning ? eveningBackgroundColor : morningBackgroundColor, @@ -368,7 +368,7 @@ private void StartColorTransition(TimeOfDay targetTime) ); } - // ȯ ڷƾ ( Ÿϸ) + // 색상 전환 코루틴 (배경 및 타일맵) private IEnumerator SwapColor(Color startBg, Color endBg, Color startTile, Color endTile) { float t = 0; @@ -378,13 +378,13 @@ private IEnumerator SwapColor(Color startBg, Color endBg, Color startTile, Color { t += Time.deltaTime / (duration * colorTransitionSpeed); - // + // 배경색 변경 if (mainCameraCache != null) { mainCameraCache.backgroundColor = Color.Lerp(startBg, endBg, t); } - // Ÿϸ + // 모든 타일맵의 색상 변경 foreach (var tilemap in tilemaps) { if (tilemap != null) @@ -396,7 +396,7 @@ private IEnumerator SwapColor(Color startBg, Color endBg, Color startTile, Color yield return null; } - // + // 최종 색상 적용 if (mainCameraCache != null) { mainCameraCache.backgroundColor = endBg; @@ -413,19 +413,19 @@ private IEnumerator SwapColor(Color startBg, Color endBg, Color startTile, Color colorTransitionCoroutine = null; } - // ð (ִϸ̼ ) + // 시간에 따른 색상 즉시 적용 (애니메이션 없이) private void ApplyTimeBasedColors(TimeOfDay time) { if (mainCameraCache == null) mainCameraCache = Camera.main; if (mainCameraCache == null) return; - // + // 배경색 설정 if (mainCameraCache != null) { mainCameraCache.backgroundColor = time == TimeOfDay.Morning ? morningBackgroundColor : eveningBackgroundColor; } - // Ÿϸ + // 타일맵 색상 설정 Color tileColor = time == TimeOfDay.Morning ? morningTilemapColor : eveningTilemapColor; foreach (var tilemap in tilemaps) { @@ -438,12 +438,12 @@ private void ApplyTimeBasedColors(TimeOfDay time) #endregion - #region UI ÷ Ʈ + #region UI 및 게임플레이 업데이트 - // ð UI Ʈ + // 시간에 따른 UI 업데이트 private void UpdateUIBasedOnTime(TimeOfDay time) { - // ð UI ǥ/ + // 시간에 따른 UI 표시/숨김 if (morningOnlyUI != null) { morningOnlyUI.SetActive(time == TimeOfDay.Morning); @@ -455,12 +455,12 @@ private void UpdateUIBasedOnTime(TimeOfDay time) } } - // ̾ Ʈ Ȱȭ/Ȱȭ Ʈ + // 레이어 기반 오브젝트 활성화/비활성화 업데이트 private void UpdateLayersBasedOnTime(TimeOfDay time) { if (morningLayer < 0 || eveningLayer < 0) { - Debug.LogWarning("MorningOnly Ǵ EveningOnly ̾ ʽϴ."); + Debug.LogWarning("MorningOnly 또는 EveningOnly 레이어가 존재하지 않습니다."); return; } @@ -476,87 +476,87 @@ private void UpdateLayersBasedOnTime(TimeOfDay time) } } - // ħ ÷ Ʈ + // 아침 모드의 게임플레이 업데이트 private void UpdateGameplayForMorning() { - // ̾ ڿ Ʈ 巡 ȸ Ȱȭ + // 레이어 기반 자원 오브젝트 드래그 및 회전 활성화 SetResourceObjectsByLayerDraggable(true); - // ̾ Ÿ Ȱȭ + // 레이어 기반 타워 공격 비활성화 SetTowerAttackEnabledByLayer(false); - // Ÿ /Ǹ Ȱȭ + // 타워 구매/판매 기능 활성화 SetTowerTradeEnabled(true); - // Ÿ ׷̵ Ȱȭ + // 타워 업그레이드 활성화 SetTowerUpgradeEnabledByLayer(true); - // ÷̾ (MicrophoneSystem ) + // 플레이어 관련 설정 (MicrophoneSystem 사용) HandlePlayerSettings(true, false); - // ũ ý Ȱȭ + // 마이크 시스템 활성화 상태 설정 if (microphoneSystem != null) { - // ũ ý ü ̺Ʈ ó (OnMorningStart) + // 마이크 시스템 자체는 이벤트를 통해 처리됨 (OnMorningStart에서) microphoneSystem.SetPlayerActivationEnabled(false); } - // Ƿε (̺ ) + // 피로도 리셋 (웨이브 종료 후) if (playerGold != null) { playerGold.ResetFatigue(); } } - // ÷ Ʈ + // 저녁 모드의 게임플레이 업데이트 private void UpdateGameplayForEvening() { - // ̾ ڿ Ʈ 巡 ȸ Ȱȭ + // 레이어 기반 자원 오브젝트 드래그 및 회전 비활성화 SetResourceObjectsByLayerDraggable(false); - // ̾ Ÿ Ȱȭ + // 레이어 기반 타워 공격 활성화 SetTowerAttackEnabledByLayer(true); - // Ÿ /Ǹ Ȱȭ + // 타워 구매/판매 기능 비활성화 SetTowerTradeEnabled(false); - // Ÿ ׷̵ Ȱȭ + // 타워 업그레이드 활성화 SetTowerUpgradeEnabledByLayer(true); - // ÷̾ (MicrophoneSystem ) + // 플레이어 관련 설정 (MicrophoneSystem 사용) HandlePlayerSettings(false, true); - // ũ ý Ȱȭ + // 마이크 시스템 활성화 상태 설정 if (microphoneSystem != null) { - // ũ ý ü ̺Ʈ ó (OnEveningStart) + // 마이크 시스템 자체는 이벤트를 통해 처리됨 (OnEveningStart에서) microphoneSystem.SetPlayerActivationEnabled(true); } } #endregion - #region Ʈ Ʈ + #region 게임 오브젝트 및 컴포넌트 관리 - // ð ̾ Ʈ Ȱȭ/Ȱȭ + // 시간에 따른 레이어 기반 오브젝트 활성화/비활성화 private void ActivateLayerObjects(int layerToActivate, int layerToDeactivate) { if (!useLayerBasedActivation) return; - // ã ϴ Ȯ + // 찾기 전에 존재하는지 확인 if (layerToActivate < 0 || layerToDeactivate < 0) { - Debug.LogWarning(" ̾ ϳ ̻ ʽϴ."); + Debug.LogWarning("지정된 레이어 중 하나 이상이 존재하지 않습니다."); return; } - // Ȱȭ ̾ Ʈ ã + // 활성화할 레이어의 오브젝트 찾기 GameObject[] objectsToActivate = FindObjectsOfType().Where(obj => obj.layer == layerToActivate).ToArray(); - // Ȱȭ ̾ Ʈ ã + // 비활성화할 레이어의 오브젝트 찾기 GameObject[] objectsToDeactivate = FindObjectsOfType().Where(obj => obj.layer == layerToDeactivate).ToArray(); - // Ȱȭ/Ȱȭ ó + // 활성화/비활성화 처리 foreach (GameObject obj in objectsToActivate) { obj.SetActive(true); @@ -567,47 +567,47 @@ private void ActivateLayerObjects(int layerToActivate, int layerToDeactivate) obj.SetActive(false); } - Debug.Log($"̾ {LayerMask.LayerToName(layerToActivate)} Ȱȭ, ̾ {LayerMask.LayerToName(layerToDeactivate)} Ȱȭ Ϸ"); + Debug.Log($"레이어 {LayerMask.LayerToName(layerToActivate)} 활성화, 레이어 {LayerMask.LayerToName(layerToDeactivate)} 비활성화 완료"); } - // ī޶ Ʈ + // 카메라 설정 업데이트 private void UpdateCameraSettings(TimeOfDay timeOfDay) { Camera mainCamera = Camera.main; if (mainCamera == null) return; - // ⺻ ø ũ ( ̾) + // 기본 컬링 마스크 (모든 레이어) int defaultCullingMask = -1; if (morningLayer < 0 || eveningLayer < 0) return; - // ð ̾ + // 시간에 따라 적절한 레이어 설정 if (timeOfDay == TimeOfDay.Morning) { - // ħ: MorningOnly ̾ ǥ, EveningOnly ̾ + // 아침: MorningOnly 레이어는 표시, EveningOnly 레이어는 숨김 mainCamera.cullingMask = defaultCullingMask; mainCamera.cullingMask |= (1 << morningLayer); mainCamera.cullingMask &= ~(1 << eveningLayer); } else { - // : EveningOnly ̾ ǥ, MorningOnly ̾ + // 저녁: EveningOnly 레이어는 표시, MorningOnly 레이어는 숨김 mainCamera.cullingMask = defaultCullingMask; mainCamera.cullingMask |= (1 << eveningLayer); mainCamera.cullingMask &= ~(1 << morningLayer); } } - // ̾ ڿ Ʈ 巡 + // 레이어 기반 자원 오브젝트 드래그 가능 여부 설정 private void SetResourceObjectsByLayerDraggable(bool draggable) { if (resourceLayer < 0) { - Debug.LogWarning($"{resourceLayerName} ̾ ʽϴ."); + Debug.LogWarning($"{resourceLayerName} 레이어가 존재하지 않습니다."); return; } - // Resource ̾ ִ Ʈ ã + // Resource 레이어에 있는 오브젝트 찾기 GameObject[] resourceObjects = FindObjectsOfType().Where(obj => obj.layer == resourceLayer).ToArray(); int count = 0; @@ -621,25 +621,25 @@ private void SetResourceObjectsByLayerDraggable(bool draggable) } } - Debug.Log($"̾ '{resourceLayerName}' ִ 巡 Ʈ {count} {(draggable ? "Ȱȭ" : "Ȱȭ")}߽ϴ."); + Debug.Log($"레이어 '{resourceLayerName}'에 있는 드래그 가능 오브젝트 {count}개를 {(draggable ? "활성화" : "비활성화")}했습니다."); } - // ̾ Ÿ Ȱȭ/Ȱȭ + // 레이어 기반 타워 공격 활성화/비활성화 private void SetTowerAttackEnabledByLayer(bool enabled) { if (towerLayer < 0) { - Debug.LogWarning($"{towerLayerName} ̾ ʽϴ."); + Debug.LogWarning($"{towerLayerName} 레이어가 존재하지 않습니다."); return; } - // Tower ̾ ִ Ʈ ã + // Tower 레이어에 있는 오브젝트 찾기 GameObject[] towerObjects = FindObjectsOfType().Where(obj => obj.layer == towerLayer).ToArray(); int count = 0; if (enabled) { - // Ȱȭ SearchTarget · ȯϴ Ư ʿϹǷ ó + // 활성화는 SearchTarget 상태로 전환하는 특별 로직이 필요하므로 직접 처리 foreach (GameObject obj in towerObjects) { TowerWeapon tower = obj.GetComponent(); @@ -652,7 +652,7 @@ private void SetTowerAttackEnabledByLayer(bool enabled) } else { - // Ȱȭ ڷƾ ó + // 비활성화는 코루틴 중지로 처리 foreach (GameObject obj in towerObjects) { TowerWeapon tower = obj.GetComponent(); @@ -664,19 +664,19 @@ private void SetTowerAttackEnabledByLayer(bool enabled) } } - Debug.Log($"̾ '{towerLayerName}' ִ Ÿ {count} {(enabled ? "Ȱȭ" : "Ȱȭ")}߽ϴ."); + Debug.Log($"레이어 '{towerLayerName}'에 있는 타워 공격 기능 {count}개를 {(enabled ? "활성화" : "비활성화")}했습니다."); } - // ̾ Ÿ ׷̵ Ȱȭ/Ȱȭ + // 레이어 기반 타워 업그레이드 기능 활성화/비활성화 private void SetTowerUpgradeEnabledByLayer(bool enabled) { if (towerLayer < 0) { - Debug.LogWarning($"{towerLayerName} ̾ ʽϴ."); + Debug.LogWarning($"{towerLayerName} 레이어가 존재하지 않습니다."); return; } - // Tower ̾ ִ Ʈ ã + // Tower 레이어에 있는 오브젝트 찾기 GameObject[] towerObjects = FindObjectsOfType().Where(obj => obj.layer == towerLayer).ToArray(); int count = 0; @@ -690,19 +690,19 @@ private void SetTowerUpgradeEnabledByLayer(bool enabled) } } - Debug.Log($"̾ '{towerLayerName}' ִ Ÿ ׷̵ {count} {(enabled ? "Ȱȭ" : "Ȱȭ")}߽ϴ."); + Debug.Log($"레이어 '{towerLayerName}'에 있는 타워 업그레이드 기능 {count}개를 {(enabled ? "활성화" : "비활성화")}했습니다."); } - // ̾ Ʈ Ȱȭ/Ȱȭ + // 레이어 기반 컴포넌트 활성화/비활성화 private void SetComponentsEnabledByLayer(int layer, bool enabled) where T : MonoBehaviour { if (layer < 0) { - Debug.LogWarning($" ̾ ʽϴ."); + Debug.LogWarning($"지정된 레이어가 존재하지 않습니다."); return; } - // Ư ̾ ִ Ʈ ã + // 특정 레이어에 있는 모든 게임 오브젝트 찾기 GameObject[] layerObjects = FindObjectsOfType().Where(obj => obj.layer == layer).ToArray(); int count = 0; @@ -716,56 +716,56 @@ private void SetComponentsEnabledByLayer(int layer, bool enabled) where T : M } } - Debug.Log($"̾ '{LayerMask.LayerToName(layer)}' ִ {typeof(T).Name} Ʈ {count} {(enabled ? "Ȱȭ" : "Ȱȭ")}߽ϴ."); + Debug.Log($"레이어 '{LayerMask.LayerToName(layer)}'에 있는 {typeof(T).Name} 컴포넌트 {count}개를 {(enabled ? "활성화" : "비활성화")}했습니다."); } - // Ÿ /Ǹ Ȱȭ/Ȱȭ + // 타워 구매/판매 기능 활성화/비활성화 private void SetTowerTradeEnabled(bool enabled) { TowerSpawner[] towerSpawners = FindObjectsOfType(); foreach (TowerSpawner spawner in towerSpawners) { - // TowerSpawner SetTradeEnabled ޼尡 ִ + // TowerSpawner에 SetTradeEnabled 메서드가 있는 경우 try { - // ÷̳ public ޼带 ȣ + // 리플렉션이나 public 메서드를 통해 호출할 수 있음 spawner.SetTradeEnabled(enabled); } catch { - // ޼尡 ٸ Ȱȭ/Ȱȭ ó + // 메서드가 없다면 활성화/비활성화로 처리 spawner.enabled = enabled; } } - // Ʈ (Ÿ Ŭ ó) Ȱȭ/Ȱȭ + // 오브젝트 디텍터(타워 클릭 처리) 활성화/비활성화 ObjectDetector[] detectors = FindObjectsOfType(); foreach (ObjectDetector detector in detectors) { detector.enabled = enabled; } - Debug.Log($"Ÿ ŷ {(enabled ? "Ȱȭ" : "Ȱȭ")}Ǿϴ."); + Debug.Log($"타워 거래 기능이 {(enabled ? "활성화" : "비활성화")}되었습니다."); } - // ÷̾ ó (MicrophoneSystem ) + // 플레이어 설정 처리 (MicrophoneSystem 사용) private void HandlePlayerSettings(bool activatePlayer, bool enableAttack) { - // ũ ý װ Ͽ ÷̾ + // 마이크 시스템이 있으면 그것을 사용하여 플레이어 관리 if (microphoneSystem != null) { if (activatePlayer) { - // ħ : ⺻ ġ (0,0,0) ÷̾ Ȱȭ + // 아침 모드: 기본 위치 (0,0,0)에 플레이어 활성화 microphoneSystem.ActivatePlayer(Vector3.zero); } else { - // : ÷̾ Ȱȭ (ũ Է Ȱȭ ) + // 저녁 모드: 플레이어 비활성화 (마이크 입력으로 활성화 대기) microphoneSystem.DeactivatePlayer(); } - // ÷̾ + // 플레이어 공격 기능 설정 if (microphoneSystem.PlayerObject != null) { PlayerMovement playerMovement = microphoneSystem.PlayerObject.GetComponent(); @@ -775,87 +775,40 @@ private void HandlePlayerSettings(bool activatePlayer, bool enableAttack) } } - Debug.Log($"ũ ý ÷̾ {(activatePlayer ? "Ȱȭ" : "Ȱȭ")}, {(enableAttack ? "Ȱȭ" : "Ȱȭ")}"); + Debug.Log($"마이크 시스템을 통해 플레이어 {(activatePlayer ? "활성화" : "비활성화")}, 공격 {(enableAttack ? "활성화" : "비활성화")}"); return; } - // ϴ ũ ý ( ȣȯ ) + // 이하는 마이크 시스템이 없는 경우 기존 방식 사용 (하위 호환성 유지) - // PlayerSingleton Ŭ ϴ Ȯ - System.Type playerSingletonType = System.Type.GetType("PlayerSingleton"); - bool playerSingletonExists = false; - object playerSingletonInstance = null; - - // ÷̾ ̱ Ȯ (÷ ) - if (playerSingletonType != null) + // 싱글턴 존재 시 처리 + if (PlayerSingleton.Exists && PlayerSingleton.Instance != null) { - // Exists Ӽ Ȯ - System.Reflection.PropertyInfo existsProperty = playerSingletonType.GetProperty("Exists", - System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - - if (existsProperty != null) - { - playerSingletonExists = (bool)existsProperty.GetValue(null); - - // Instance Ӽ Ȯ - if (playerSingletonExists) - { - System.Reflection.PropertyInfo instanceProperty = playerSingletonType.GetProperty("Instance", - System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - - if (instanceProperty != null) - { - playerSingletonInstance = instanceProperty.GetValue(null); - } - } - } - } - - // ̱ ó - if (playerSingletonExists && playerSingletonInstance != null) - { - // ÷̾ Ȱȭ/Ȱȭ - MonoBehaviour playerComponent = playerSingletonInstance as MonoBehaviour; - if (playerComponent != null) - { - playerComponent.gameObject.SetActive(activatePlayer); - - // SetAttackEnabled ޼ ȣ õ - System.Reflection.MethodInfo setAttackEnabledMethod = playerSingletonType.GetMethod("SetAttackEnabled"); - if (setAttackEnabledMethod != null) - { - setAttackEnabledMethod.Invoke(playerSingletonInstance, new object[] { enableAttack }); - } - - System.Reflection.MethodInfo setPlayerActiveMethod = playerSingletonType.GetMethod("SetPlayerActive"); - if (setPlayerActiveMethod != null) - { - setPlayerActiveMethod.Invoke(playerSingletonInstance, new object[] { activatePlayer }); - } - } + PlayerSingleton.Instance.SetAttackEnabled(enableAttack); + PlayerSingleton.Instance.SetPlayerActive(activatePlayer); - Debug.Log($"̱ ÷̾ {(activatePlayer ? "Ȱȭ" : "Ȱȭ")}, {(enableAttack ? "Ȱȭ" : "Ȱȭ")}"); + Debug.Log($"싱글턴 플레이어 {(activatePlayer ? "활성화" : "비활성화")}, 공격 {(enableAttack ? "활성화" : "비활성화")}"); return; } - // ̱ ó + // 싱글턴이 없는 경우 기존 방식으로 처리 PlayerMovement[] players = FindObjectsOfType(); foreach (PlayerMovement player in players) { - // ÷̾ Ȱȭ/Ȱȭ + // 플레이어 활성화/비활성화 player.gameObject.SetActive(activatePlayer); - // ÷̾ Ȱȭ/Ȱȭ + // 플레이어 공격 활성화/비활성화 player.SetAttackEnabled(enableAttack); } - Debug.Log($"÷̾ {(activatePlayer ? "Ȱȭ" : "Ȱȭ")}, {(enableAttack ? "Ȱȭ" : "Ȱȭ")}"); + Debug.Log($"플레이어 {(activatePlayer ? "활성화" : "비활성화")}, 공격 {(enableAttack ? "활성화" : "비활성화")}"); } #endregion - #region ߰ ޼ + #region 추가된 색상 관련 메서드 - // ī޶ + // 카메라 배경색 직접 설정 public void SetBackgroundColor(Color color) { if (mainCameraCache == null) mainCameraCache = Camera.main; @@ -865,7 +818,7 @@ public void SetBackgroundColor(Color color) } } - // Ÿϸ + // 타일맵 색상 직접 설정 public void SetTilemapColor(Color color) { foreach (var tilemap in tilemaps) @@ -877,13 +830,13 @@ public void SetTilemapColor(Color color) } } - // ħ/ + // 아침/저녁 배경색 설정 public void SetDayColors(Color dayBackground, Color nightBackground) { morningBackgroundColor = dayBackground; eveningBackgroundColor = nightBackground; - // ð ° + // 현재 시간에 맞게 색상 적용 if (currentTimeOfDay == TimeOfDay.Morning) { SetBackgroundColor(morningBackgroundColor); @@ -894,13 +847,13 @@ public void SetDayColors(Color dayBackground, Color nightBackground) } } - // ħ/ Ÿϸ + // 아침/저녁 타일맵 색상 설정 public void SetTilemapColors(Color dayTileColor, Color nightTileColor) { morningTilemapColor = dayTileColor; eveningTilemapColor = nightTileColor; - // ð ° + // 현재 시간에 맞게 색상 적용 if (currentTimeOfDay == TimeOfDay.Morning) { SetTilemapColor(morningTilemapColor); @@ -911,40 +864,40 @@ public void SetTilemapColors(Color dayTileColor, Color nightTileColor) } } - // Ÿϸ ߰ + // 타일맵 추가 public void AddTilemap(Tilemap tilemap) { if (tilemap != null && !tilemaps.Contains(tilemap)) { tilemaps.Add(tilemap); - // ð ´ + // 현재 시간에 맞는 색상 적용 tilemap.color = currentTimeOfDay == TimeOfDay.Morning ? morningTilemapColor : eveningTilemapColor; - Debug.Log($"Ÿϸ '{tilemap.name}'() Ͽ ߰Ǿϴ."); + Debug.Log($"타일맵 '{tilemap.name}'이(가) 색상 변경 목록에 추가되었습니다."); } } - // Ÿϸ + // 타일맵 제거 public void RemoveTilemap(Tilemap tilemap) { if (tilemap != null && tilemaps.Contains(tilemap)) { tilemaps.Remove(tilemap); - // + // 원래 색상으로 복원 tilemap.color = Color.white; - Debug.Log($"Ÿϸ '{tilemap.name}'() Ͽ ŵǾϴ."); + Debug.Log($"타일맵 '{tilemap.name}'이(가) 색상 변경 목록에서 제거되었습니다."); } } - // ȯ + // 색상 전환 사용 여부 설정 public void SetColorTransitionEnabled(bool enabled) { useColorTransition = enabled; - // ȯ ȰȭǸ ⺻ + // 색상 전환이 비활성화되면 모든 색상을 기본값으로 리셋 if (!enabled) { if (mainCameraCache == null) mainCameraCache = Camera.main; @@ -961,19 +914,19 @@ public void SetColorTransitionEnabled(bool enabled) } } - Debug.Log(" ȯ ȰȭǾϴ. ⺻ µǾϴ."); + Debug.Log("색상 전환 기능이 비활성화되었습니다. 모든 색상이 기본값으로 리셋되었습니다."); } else { - // ȯ ȰȭǸ ð ´ + // 색상 전환이 활성화되면 현재 시간에 맞는 색상 적용 ApplyTimeBasedColors(currentTimeOfDay); - Debug.Log(" ȯ ȰȭǾϴ. ð ´ Ǿϴ."); + Debug.Log("색상 전환 기능이 활성화되었습니다. 현재 시간에 맞는 색상이 적용되었습니다."); } } #endregion - // ׿ ð ȯ ޼ + // 디버그용 시간 전환 메서드 public void ToggleTimeOfDay() { if (currentTimeOfDay == TimeOfDay.Morning) @@ -985,4 +938,4 @@ public void ToggleTimeOfDay() StartCoroutine(TransitionToMorning()); } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/TimeSystem.cs.meta b/Assets/_Project/Scripts/Legacy/TimeSystem.cs.meta similarity index 100% rename from Assets/Scripts/TimeSystem.cs.meta rename to Assets/_Project/Scripts/Legacy/TimeSystem.cs.meta diff --git a/Assets/Scripts/TowerDataViewer.cs b/Assets/_Project/Scripts/Legacy/TowerDataViewer.cs similarity index 100% rename from Assets/Scripts/TowerDataViewer.cs rename to Assets/_Project/Scripts/Legacy/TowerDataViewer.cs diff --git a/Assets/Scripts/TowerDataViewer.cs.meta b/Assets/_Project/Scripts/Legacy/TowerDataViewer.cs.meta similarity index 100% rename from Assets/Scripts/TowerDataViewer.cs.meta rename to Assets/_Project/Scripts/Legacy/TowerDataViewer.cs.meta diff --git a/Assets/Scripts/TowerDragRotate.cs b/Assets/_Project/Scripts/Legacy/TowerDragRotate.cs similarity index 100% rename from Assets/Scripts/TowerDragRotate.cs rename to Assets/_Project/Scripts/Legacy/TowerDragRotate.cs diff --git a/Assets/Scripts/TowerDragRotate.cs.meta b/Assets/_Project/Scripts/Legacy/TowerDragRotate.cs.meta similarity index 100% rename from Assets/Scripts/TowerDragRotate.cs.meta rename to Assets/_Project/Scripts/Legacy/TowerDragRotate.cs.meta diff --git a/Assets/Scripts/TowerMovementFatigue.cs b/Assets/_Project/Scripts/Legacy/TowerMovementFatigue.cs similarity index 100% rename from Assets/Scripts/TowerMovementFatigue.cs rename to Assets/_Project/Scripts/Legacy/TowerMovementFatigue.cs diff --git a/Assets/Scripts/TowerMovementFatigue.cs.meta b/Assets/_Project/Scripts/Legacy/TowerMovementFatigue.cs.meta similarity index 100% rename from Assets/Scripts/TowerMovementFatigue.cs.meta rename to Assets/_Project/Scripts/Legacy/TowerMovementFatigue.cs.meta diff --git a/Assets/Scripts/TowerSelectionUI.cs b/Assets/_Project/Scripts/Legacy/TowerSelectionUI.cs similarity index 100% rename from Assets/Scripts/TowerSelectionUI.cs rename to Assets/_Project/Scripts/Legacy/TowerSelectionUI.cs diff --git a/Assets/Scripts/TowerSelectionUI.cs.meta b/Assets/_Project/Scripts/Legacy/TowerSelectionUI.cs.meta similarity index 100% rename from Assets/Scripts/TowerSelectionUI.cs.meta rename to Assets/_Project/Scripts/Legacy/TowerSelectionUI.cs.meta diff --git a/Assets/Scripts/TowerSpawner.cs b/Assets/_Project/Scripts/Legacy/TowerSpawner.cs similarity index 62% rename from Assets/Scripts/TowerSpawner.cs rename to Assets/_Project/Scripts/Legacy/TowerSpawner.cs index 0b5acb4..b273f99 100644 --- a/Assets/Scripts/TowerSpawner.cs +++ b/Assets/_Project/Scripts/Legacy/TowerSpawner.cs @@ -6,60 +6,60 @@ public class TowerSpawner : MonoBehaviour { [SerializeField] - private List towerTemplates;// Ÿ ø + private List towerTemplates;// 여러 종류의 타워 템플릿 [SerializeField] - private EnemySpawner enemySpawner; // ʿ ϴ Ʈ + private EnemySpawner enemySpawner; // 현재 맵에 존재하는 적 리스트 정보 [SerializeField] - private Grid grid; // Ÿϸ Grid Ʈ + private Grid grid; // 타일맵이 속한 Grid 컴포넌트 [SerializeField] - private PlayerGold playerGold; // ÷̾ /Ƿε + private PlayerGold playerGold; // 플레이어 골드/피로도 참조 [SerializeField] - private SystemTextViewer systemTextViewer; // ý ޽ + private SystemTextViewer systemTextViewer; // 시스템 메시지 뷰어 [SerializeField] - private Tilemap tilemap; // Ÿ ġ Ÿϸ + private Tilemap tilemap; // 타워 배치 가능한 타일맵 [Header("Tower Placement Settings")] [SerializeField] - private float fatiguePerTower = 10f; // Ÿ ϴ Ƿε + private float fatiguePerTower = 10f; // 타워 당 증가하는 피로도 [SerializeField] - private KeyCode flipKey = KeyCode.Q; // ¿ Ű + private KeyCode flipKey = KeyCode.Q; // 좌우반전 키 [SerializeField] - private float flipAnimationDuration = 0.2f; // ¿ ִϸ̼ ð + private float flipAnimationDuration = 0.2f; // 좌우반전 애니메이션 시간 [SerializeField] - private AudioClip flipSound; // ¿ ȿ + private AudioClip flipSound; // 좌우반전 효과음 [Header("Tower Movement Settings")] - [SerializeField] private float fatiguePerTowerMovement = 2f; // Ÿ ̵ ϴ Ƿε (⺻) + [SerializeField] private float fatiguePerTowerMovement = 2f; // 타워 이동 시 증가하는 피로도 (기본값) [Header("Time Settings")] - [SerializeField] private bool tradeEnabled = true; // Ÿ ŷ(/Ǹ) + [SerializeField] private bool tradeEnabled = true; // 타워 거래(구매/판매) 가능 여부 - // ġ Ÿ ǥ( ǥ) + // 배치된 타워들을 월드 좌표(셀 좌표) 기준으로 관리 private Dictionary placedTowers = new Dictionary(); - // õ Ÿ ε (Ÿ ø Ʈ ε) + // 현재 선택된 타워 종류 인덱스 (타워 템플릿 리스트 내의 인덱스) private int selectedTowerIndex = 0; - // Ÿ ġ Ȱȭ + // 타워 배치 모드 활성화 여부 private bool isOnTowerButton = false; private GameObject followTowerClone = null; - // ¿ + // 좌우반전 상태 private bool isFlipped = false; private bool isFlipping = false; private AudioSource audioSource; - // Ÿϸ + // 타일맵 가져오기 public Tilemap GetTilemap() => tilemap; private void Awake() { - // ҽ Ʈ /߰ + // 오디오 소스 컴포넌트 가져오기/추가 audioSource = GetComponent(); if (audioSource == null && flipSound != null) { @@ -69,24 +69,27 @@ private void Awake() private void Start() { - // PlayerGold Ȯ + // PlayerGold 참조 확인 if (playerGold == null) { playerGold = FindObjectOfType(); if (playerGold == null) { - Debug.LogError("PlayerGold Ʈ ã ϴ."); + Debug.LogError("PlayerGold 컴포넌트를 찾을 수 없습니다."); } } } - // Ÿ ϰ ġ 忡  + // 선택한 타워 종류를 설정하고 배치 모드에 들어감 public void SelectAndReadyTower(int index) { - // ŷ ȰȭǾ Ÿ Ұ + Debug.Log($"SelectAndReadyTower called with index: {index}"); + + // 거래가 비활성화되어 있으면 타워 선택 불가 if (!tradeEnabled) { - // ý ޽ + + // 시스템 메시지 출력 if (systemTextViewer != null) { systemTextViewer.PrintText(SystemType.Build); @@ -96,29 +99,29 @@ public void SelectAndReadyTower(int index) if (index < 0 || index >= towerTemplates.Count) { - Debug.LogError("߸ Ÿ ε"); + Debug.LogError("잘못된 타워 인덱스"); return; } selectedTowerIndex = index; - // ġ üũ + // 배치 모드 진입 전에 골드 체크 if (towerTemplates[selectedTowerIndex].weapons[0].cost > playerGold.CurrentGold) { systemTextViewer.PrintText(SystemType.Money); return; } - // ̸ Ÿ + // 기존 미리보기 타워 정리 ClearFollowTower(); isOnTowerButton = true; - isFlipped = false; // ¿ ʱȭ + isFlipped = false; // 좌우반전 상태 초기화 - // Ÿ followTowerPrefab Ͽ ̸ ġ ̸ + // 선택한 타워의 followTowerPrefab을 생성하여 미리 배치 미리보기 역할 followTowerClone = Instantiate(towerTemplates[selectedTowerIndex].followTowerPrefab); - // ʿϴٸ followTowerClone ġ Ÿ ⼭ + // 필요하다면 followTowerClone의 위치 및 기타 세팅을 여기서 진행 StartCoroutine(OnTowerCancelSystem()); } @@ -128,23 +131,23 @@ public void ReadyToSpawnTower() { return; } - // ּ ó ڵ... + // 주석 처리된 코드... } void Update() { if (isOnTowerButton && followTowerClone != null) { - // 콺 ġ + // 마우스 위치 가져오기 Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); followTowerClone.transform.position = new Vector3(mousePosition.x, mousePosition.y, 0); - // ̼ҸƮ + // 이소메트릭 뷰 지원 Vector3 position = followTowerClone.transform.position; position.z = position.y; followTowerClone.transform.position = position; - // QŰ Է ˻ (¿) + // Q키 입력 검사 (좌우반전) if (Input.GetKeyDown(flipKey) && !isFlipping) { StartCoroutine(FlipPreviewTower()); @@ -152,51 +155,51 @@ void Update() } } - // ¿ ڷƾ + // 좌우반전 코루틴 private IEnumerator FlipPreviewTower() { if (followTowerClone == null) yield break; isFlipping = true; - // ȿ + // 효과음 재생 if (flipSound != null && audioSource != null) { audioSource.PlayOneShot(flipSound); } - // x + // 현재 x 스케일 값 float startScaleX = followTowerClone.transform.localScale.x; - float targetScaleX = -startScaleX; // ȣ + float targetScaleX = -startScaleX; // 부호 반전 float elapsedTime = 0f; - // ִϸ̼ + // 반전 애니메이션 while (elapsedTime < flipAnimationDuration) { elapsedTime += Time.deltaTime; float progress = elapsedTime / flipAnimationDuration; - // + // 스케일 보간 float currentScaleX = Mathf.Lerp(startScaleX, targetScaleX, progress); followTowerClone.transform.localScale = new Vector3(currentScaleX, followTowerClone.transform.localScale.y, followTowerClone.transform.localScale.z); yield return null; } - // + // 최종 스케일 설정 followTowerClone.transform.localScale = new Vector3(targetScaleX, followTowerClone.transform.localScale.y, followTowerClone.transform.localScale.z); - // + // 반전 상태 토글 isFlipped = !isFlipped; isFlipping = false; } public void SpawnTower(Vector3Int cellPosition) { - // ŷ ȰȭǾ Ÿ Ұ + // 거래가 비활성화되어 있으면 타워 생성 불가 if (!tradeEnabled) { - // ý ޽ + // 시스템 메시지 출력 if (systemTextViewer != null) { systemTextViewer.PrintText(SystemType.Build); @@ -208,7 +211,7 @@ public void SpawnTower(Vector3Int cellPosition) { return; } - if (IsTileOccupied(cellPosition)) return; // ̹ Ÿ ϸ X + if (IsTileOccupied(cellPosition)) return; // 이미 타워가 존재하면 실행 X TowerTemplate selectedTower = towerTemplates[selectedTowerIndex]; @@ -218,24 +221,24 @@ public void SpawnTower(Vector3Int cellPosition) return; } - Vector3 towerPosition = tilemap.GetCellCenterWorld(cellPosition); // Ÿ ߽ ǥ + Vector3 towerPosition = tilemap.GetCellCenterWorld(cellPosition); // 타일 중심의 월드 좌표 - // Isometric 並 z ġ (y ϰ) + // Isometric 뷰를 위한 z 위치 조정 (y와 동일하게) towerPosition.z = towerPosition.y; - GameObject newTower = Instantiate(selectedTower.towerPrefab, towerPosition, Quaternion.identity); // Ÿ + GameObject newTower = Instantiate(selectedTower.towerPrefab, towerPosition, Quaternion.identity); // 타워 생성 - // ¿ + // 좌우반전 상태 적용 if (isFlipped) { - // Ʈ ͼ ¿ + // 스프라이트 렌더러 가져와서 좌우반전 적용 SpriteRenderer[] renderers = newTower.GetComponentsInChildren(); foreach (SpriteRenderer renderer in renderers) { renderer.flipX = true; } - // Ǵ Ͽ + // 또는 스케일을 사용하여 반전 Vector3 scale = newTower.transform.localScale; scale.x = -Mathf.Abs(scale.x); newTower.transform.localScale = scale; @@ -245,36 +248,35 @@ public void SpawnTower(Vector3Int cellPosition) if (towerWeapon != null) { - towerWeapon.Setup(selectedTower, enemySpawner, playerGold, towerPosition); // Setup ȣ + towerWeapon.Setup(selectedTower, enemySpawner, playerGold, this, towerPosition); // Setup 호출 - // ¿ (TowerWeapon ִ ) - if (isFlipped && towerWeapon.GetType().GetMethod("SetFlipped") != null) + if (isFlipped) { - towerWeapon.GetType().GetMethod("SetFlipped").Invoke(towerWeapon, new object[] { true }); + towerWeapon.SetFlipped(true); } } isOnTowerButton = false; - placedTowers[cellPosition] = newTower; // ǥ Ÿ - playerGold.CurrentGold -= selectedTower.weapons[0].cost; // + placedTowers[cellPosition] = newTower; // 셀 좌표와 타워 연결 + playerGold.CurrentGold -= selectedTower.weapons[0].cost; // 골드 감소 - // Ÿ ġ Ƿε - playerGold.IncreaseFatigue(); // Ƿε ޼ ȣ + // 타워 배치에 따른 피로도 증가 + playerGold.IncreaseFatigue(); // 피로도 증가 메서드 호출 - // ġ ҽ + // 배치 모드 종료 및 리소스 정리 EndPlacementMode(); Debug.Log($"Tower placed at {cellPosition}"); } - // Ÿ ġ + // 타워 배치 모드 종료 private void EndPlacementMode() { StopCoroutine("OnTowerCancelSystem"); ClearFollowTower(); } - // ̸ Ÿ + // 미리보기 타워 정리 private void ClearFollowTower() { if (followTowerClone != null) @@ -286,10 +288,10 @@ private void ClearFollowTower() public void RemoveTower(Vector3Int cellPosition) { - // ŷ ȰȭǾ Ÿ Ǹ Ұ + // 거래가 비활성화되어 있으면 타워 판매 불가 if (!tradeEnabled) { - // ý ޽ + // 시스템 메시지 출력 if (systemTextViewer != null) { systemTextViewer.PrintText(SystemType.Build); @@ -297,10 +299,10 @@ public void RemoveTower(Vector3Int cellPosition) return; } - if (placedTowers.TryGetValue(cellPosition, out GameObject tower)) // Ÿ ã + if (placedTowers.TryGetValue(cellPosition, out GameObject tower)) // 타워 찾기 { - Destroy(tower); // Ÿ Ʈ - placedTowers.Remove(cellPosition); // Ͽ + Destroy(tower); // 타워 오브젝트 제거 + placedTowers.Remove(cellPosition); // 관리 목록에서 제거 Debug.Log($"Tower removed from {cellPosition}"); } @@ -329,12 +331,12 @@ public bool IsTileOccupied(Vector3Int cellPosition) return placedTowers.ContainsKey(cellPosition); } - // Ÿ ŷ Ȱȭ/Ȱȭ ޼ҵ + // 타워 거래 활성화/비활성화 메소드 public void SetTradeEnabled(bool enabled) { tradeEnabled = enabled; - // ŷ Ȱȭ Ÿ ġ + // 거래 비활성화 시 타워 배치 모드 종료 if (!enabled) { isOnTowerButton = false; @@ -343,44 +345,44 @@ public void SetTradeEnabled(bool enabled) } } - // Ÿ ı ʰ Dictionary ϴ ޼ҵ + // 타워를 파괴하지 않고 Dictionary에서만 제거하는 메소드 public void RemoveTowerWithoutDestroy(Vector3Int cellPosition) { if (placedTowers.TryGetValue(cellPosition, out GameObject tower)) { placedTowers.Remove(cellPosition); - Debug.Log($"Ÿ Dictionary : {cellPosition}"); + Debug.Log($"타워를 Dictionary에서 제거: {cellPosition}"); } else { - Debug.Log($" ġ {cellPosition} Ÿ ϴ."); + Debug.Log($"지정된 위치 {cellPosition}에 타워가 없습니다."); } } - // Ÿ Dictionary ϴ ޼ҵ + // 기존 타워를 Dictionary에 등록하는 메소드 public void RegisterExistingTower(Vector3Int cellPosition, GameObject tower) { if (IsTileOccupied(cellPosition)) { - Debug.LogWarning($"̹ Ÿ ִ ġ {cellPosition} Ÿ ϴ."); + Debug.LogWarning($"이미 타워가 있는 위치 {cellPosition}에 타워를 등록할 수 없습니다."); return; } - // Dictionary + // Dictionary에 등록 placedTowers[cellPosition] = tower; - Debug.Log($" Ÿ ġ {cellPosition} "); + Debug.Log($"기존 타워를 새 위치 {cellPosition}에 등록"); } - // Ÿ ġ ⺻ Ƿε + // 타워 배치 시 기본 피로도 값 가져오기 public float GetBaseFatiguePerTower() { return fatiguePerTower; } - // Ÿ ̵ Ƿε + // 타워 이동에 대한 피로도 값 가져오기 public float GetMovementFatiguePerTower() { return fatiguePerTowerMovement; } -} \ No newline at end of file +} diff --git a/Assets/Scripts/TowerSpawner.cs.meta b/Assets/_Project/Scripts/Legacy/TowerSpawner.cs.meta similarity index 100% rename from Assets/Scripts/TowerSpawner.cs.meta rename to Assets/_Project/Scripts/Legacy/TowerSpawner.cs.meta diff --git a/Assets/Scripts/TowerTemplate.cs b/Assets/_Project/Scripts/Legacy/TowerTemplate.cs similarity index 100% rename from Assets/Scripts/TowerTemplate.cs rename to Assets/_Project/Scripts/Legacy/TowerTemplate.cs diff --git a/Assets/Scripts/TowerTemplate.cs.meta b/Assets/_Project/Scripts/Legacy/TowerTemplate.cs.meta similarity index 100% rename from Assets/Scripts/TowerTemplate.cs.meta rename to Assets/_Project/Scripts/Legacy/TowerTemplate.cs.meta diff --git a/Assets/_Project/Scripts/Legacy/TowerWeapon.cs b/Assets/_Project/Scripts/Legacy/TowerWeapon.cs new file mode 100644 index 0000000..e516854 --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/TowerWeapon.cs @@ -0,0 +1,488 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public enum WeaponState { SearchTarget = 0, AttackToTarget } //공격 대상 탐색 여부 + +public class TowerWeapon : MonoBehaviour +{ + [SerializeField] + private GameObject projectilePrefab; // 단일 발사체 프리팹 + [SerializeField] + private Transform spawnPoint; + + [Header("Time Settings")] + [SerializeField] private bool attackEnabled = true; // 공격 가능 여부 + + private TowerTemplate towerTemplate; + private int level = 0; + private WeaponState weaponState = WeaponState.SearchTarget; + private Transform attackTarget = null; + private SpriteRenderer spriteRenderer; + private PlayerGold playerGold; + private EnemySpawner enemySpawner; + private TowerSpawner towerSpawner; + private Tile ownerTile; + private IsometricPositionHandler isometricPosition; + private Coroutine stateRoutine; + + // 좌우반전 상태 관련 변수 + private bool isFlipped = false; + private SpriteRenderer[] childRenderers; + + public Sprite TowerSprite => HasValidWeaponData() ? towerTemplate.weapons[level].sprite : null; + public float Damage => HasValidWeaponData() ? towerTemplate.weapons[level].damage : 0f; + public float Rate => HasValidWeaponData() ? towerTemplate.weapons[level].rate : 0f; + public float Range => HasValidWeaponData() ? towerTemplate.weapons[level].range : 0f; + public int Level => level + 1; + public int MaxLevel => towerTemplate != null && towerTemplate.weapons != null ? towerTemplate.weapons.Count : 0; + + // 좌우반전 상태 프로퍼티 + public bool IsFlipped => isFlipped; + + private void Awake() + { + spriteRenderer = GetComponent(); + childRenderers = GetComponentsInChildren(); + isometricPosition = GetComponent(); + + // IsometricPositionHandler가 없으면 추가 + if (isometricPosition == null) + { + isometricPosition = gameObject.AddComponent(); + } + } + + private void SpawnProjectile() + { + // 공격이 비활성화되어 있으면 발사체 생성 불가 + if (!attackEnabled) return; + if (!HasValidWeaponData()) return; + if (!IsTargetAttackable()) + { + attackTarget = null; + return; + } + + if (projectilePrefab == null) + { + Debug.LogError("No projectile prefab assigned to tower"); + return; + } + + if (spawnPoint == null) + { + Debug.LogError($"TowerWeapon: {name}에 spawnPoint가 설정되지 않았습니다."); + return; + } + + Debug.Log($"Spawning projectile at {spawnPoint.position}"); + + // 발사 위치의 z 위치 조정 (이소메트릭 뷰) + Vector3 spawnPos = spawnPoint.position; + spawnPos.z = spawnPos.y; + + GameObject projectileObj = Instantiate(projectilePrefab, spawnPos, Quaternion.identity); + + // 발사체에 IsometricPositionHandler 추가 (없는 경우) + IsometricPositionHandler projectileIsometric = projectileObj.GetComponent(); + if (projectileIsometric == null) + { + projectileIsometric = projectileObj.AddComponent(); + } + + // ProjectileBase 컴포넌트 가져오기 + ProjectileBase projectileScript = projectileObj.GetComponent(); + + if (projectileScript == null) + { + Debug.LogError($"No ProjectileBase component found on prefab: {projectilePrefab.name}"); + Destroy(projectileObj); + return; + } + + // 좌우반전 상태 적용 + if (isFlipped) + { + SpriteRenderer projRenderer = projectileObj.GetComponent(); + if (projRenderer != null) + { + projRenderer.flipX = true; + } + else + { + // 스프라이트 렌더러가 없으면 스케일로 반전 + Vector3 scale = projectileObj.transform.localScale; + scale.x = -Mathf.Abs(scale.x); + projectileObj.transform.localScale = scale; + } + + // 발사 방향 반전 (필요시) + ProjectileStraight straightProjectile = projectileObj.GetComponent(); + if (straightProjectile != null) + { + straightProjectile.SetFlipDirection(isFlipped); + } + } + + // 발사체 설정 + projectileScript.Setup(attackTarget, towerTemplate.weapons[level].damage); + } + + public void Setup(TowerTemplate template, EnemySpawner enemySpawner, PlayerGold playerGold, TowerSpawner towerSpawner, Vector3 worldPosition) + { + towerTemplate = template; + Debug.Log("TowerWeapon Setup called!"); + this.enemySpawner = enemySpawner; + this.playerGold = playerGold; + this.towerSpawner = towerSpawner; + + if (!HasValidWeaponData()) + { + Debug.LogError($"TowerWeapon: {name}에 유효한 TowerTemplate/Weapon 데이터가 없습니다."); + return; + } + + // 이소메트릭 뷰에 맞게 z 위치 조정 + worldPosition.z = worldPosition.y; + transform.position = worldPosition; + + if (spriteRenderer != null) + { + spriteRenderer.sprite = towerTemplate.weapons[level].sprite; + } + + ChangeState(WeaponState.SearchTarget); + } + + public void Setup(TowerTemplate template, EnemySpawner enemySpawner, PlayerGold playerGold, Vector3 worldPosition) + { + Setup(template, enemySpawner, playerGold, null, worldPosition); + } + + // 좌우반전 설정 메소드 (외부에서 호출 가능) + public void SetFlipped(bool flipped) + { + isFlipped = flipped; + + // 모든 스프라이트 렌더러 반전 적용 + UpdateFlipState(); + } + + // 좌우반전 상태 토글 + public void ToggleFlip() + { + isFlipped = !isFlipped; + UpdateFlipState(); + } + + // 좌우반전 상태 업데이트 + private void UpdateFlipState() + { + // 기본 스프라이트 렌더러가 있으면 반전 + if (spriteRenderer != null) + { + spriteRenderer.flipX = isFlipped; + } + + // 모든 자식 스프라이트 렌더러도 반전 + foreach (SpriteRenderer renderer in childRenderers) + { + if (renderer != null && renderer != spriteRenderer) // 중복 방지 + { + renderer.flipX = isFlipped; + } + } + + // 스프라이트 렌더러가 없거나 추가 반전이 필요한 경우 스케일도 조정 + if (spriteRenderer == null || !spriteRenderer.flipX) + { + Vector3 scale = transform.localScale; + scale.x = isFlipped ? -Mathf.Abs(scale.x) : Mathf.Abs(scale.x); + transform.localScale = scale; + } + + // 스폰 포인트 위치 조정 (필요시) + if (spawnPoint != null) + { + // 스폰 포인트가 로컬 위치에 있는 경우, x 반전이 필요할 수 있음 + // 상황에 따라 다음 코드 활성화 + /* + Vector3 localPos = spawnPoint.localPosition; + localPos.x = isFlipped ? -Mathf.Abs(localPos.x) : Mathf.Abs(localPos.x); + spawnPoint.localPosition = localPos; + */ + } + } + + public void ChangeState(WeaponState newstate) + { + Debug.Log($"Changing state to {newstate}"); + StopStateRoutine(); + weaponState = newstate; + + if (!isActiveAndEnabled) + { + return; + } + + switch (weaponState) + { + case WeaponState.SearchTarget: + stateRoutine = StartCoroutine(SearchTarget()); + break; + case WeaponState.AttackToTarget: + stateRoutine = StartCoroutine(AttackToTarget()); + break; + } + } + + // Update is called once per frame + private void Update() + { + if (attackTarget != null) + { + // RotateToTarget(); // 기존 코드 + FlipToTarget(); // 새 코드 - 회전 대신 좌우반전 + } + + // 이소메트릭 뷰에 맞게 z 위치 조정 (매 프레임) + Vector3 position = transform.position; + position.z = position.y; + transform.position = position; + } + + // 기존 RotateToTarget 메서드를 FlipToTarget으로 대체 + private void FlipToTarget() + { + if (attackTarget == null) return; + + // 적의 위치와 타워의 위치를 비교하여 방향 결정 + float dx = attackTarget.position.x - transform.position.x; + + // dx가 음수면 적이 왼쪽에 있고, 양수면 오른쪽에 있음 + bool shouldFaceLeft = dx < 0; + + // 현재 타워가 왼쪽을 보고 있는지 확인 (flipX가 true면 왼쪽) + bool isCurrentlyFacingLeft = false; + + // 스프라이트 렌더러로 확인 + if (spriteRenderer != null) + { + isCurrentlyFacingLeft = spriteRenderer.flipX; + } + else + { + // 스프라이트 렌더러가 없을 경우 localScale.x로 확인 + isCurrentlyFacingLeft = transform.localScale.x < 0; + } + + // 방향이 다르면 반전 + if (shouldFaceLeft != isCurrentlyFacingLeft) + { + // 좌우반전 적용 + if (spriteRenderer != null) + { + spriteRenderer.flipX = shouldFaceLeft; + } + else + { + // 스프라이트 렌더러가 없는 경우 스케일 사용 + Vector3 scale = transform.localScale; + scale.x = shouldFaceLeft ? -Mathf.Abs(scale.x) : Mathf.Abs(scale.x); + transform.localScale = scale; + } + + // 자식 스프라이트 렌더러도 반전 + foreach (SpriteRenderer renderer in childRenderers) + { + if (renderer != null && renderer != spriteRenderer) + { + renderer.flipX = shouldFaceLeft; + } + } + + // isFlipped 변수 업데이트 + isFlipped = shouldFaceLeft; + } + + // 회전은 수행하지 않음 - 기존 코드 제거 + // transform.rotation = Quaternion.Euler(0, 0, degree); + } + + private IEnumerator SearchTarget() + { + while (true) + { + // 공격이 비활성화 되어 있으면 탐색만 하고 공격하지 않음 + if (!attackEnabled) + { + yield return new WaitForSeconds(0.5f); + continue; + } + + if (!HasValidWeaponData() || enemySpawner == null) + { + attackTarget = null; + yield return new WaitForSeconds(0.25f); + continue; + } + + attackTarget = null; + float closestDistSqr = Mathf.Infinity; + float range = towerTemplate.weapons[level].range; + float rangeSqr = range * range; + List enemies = enemySpawner.EnemyList; + + for (int i = 0; i < enemies.Count; i++) //모든 적 검사 + { + Enemy enemy = enemies[i]; + if (enemy == null) + { + continue; + } + + float distanceSqr = (enemy.transform.position - transform.position).sqrMagnitude; + if (distanceSqr <= rangeSqr && distanceSqr <= closestDistSqr) + { + closestDistSqr = distanceSqr; + attackTarget = enemy.transform; + } + } + + if (attackTarget != null && attackEnabled) + { + Debug.Log($"Target found: {attackTarget.name}"); + ChangeState(WeaponState.AttackToTarget); // 해당 타겟 공격 + } + + yield return null; + } + } + + private IEnumerator AttackToTarget() + { + while (true) + { + // 공격이 비활성화되어 있으면 탐색 상태로 돌아감 + if (!attackEnabled) + { + ChangeState(WeaponState.SearchTarget); + break; + } + + if (!HasValidWeaponData() || !IsTargetAttackable()) // target 있는지 확인 + { + attackTarget = null; + ChangeState(WeaponState.SearchTarget); + break; + } + + yield return new WaitForSeconds(Mathf.Max(0.05f, towerTemplate.weapons[level].rate)); + + if (!attackEnabled || !IsTargetAttackable()) + { + attackTarget = null; + ChangeState(WeaponState.SearchTarget); + break; + } + + SpawnProjectile(); // 발사체 생성 + } + } + + public bool Upgrade() + { + if (towerTemplate == null || towerTemplate.weapons == null || + level + 1 >= towerTemplate.weapons.Count || + playerGold == null || + playerGold.CurrentGold < towerTemplate.weapons[level + 1].cost) + { + return false; + } + level++; + if (spriteRenderer != null) + { + spriteRenderer.sprite = towerTemplate.weapons[level].sprite; + } + playerGold.CurrentGold -= towerTemplate.weapons[level].cost; + + // 업그레이드 후 좌우반전 상태 유지 + if (isFlipped) + { + UpdateFlipState(); + } + + return true; + } + + public void Sell() + { + if (playerGold != null && HasValidWeaponData()) + { + playerGold.CurrentGold += towerTemplate.weapons[level].sell; + } + + if (towerSpawner != null && towerSpawner.GetTilemap() != null) + { + Vector3Int cellposition = towerSpawner.GetTilemap().WorldToCell(transform.position); + towerSpawner.RemoveTower(cellposition); + return; + } + + Debug.LogWarning("TowerWeapon: TowerSpawner 참조가 없어 타워 오브젝트만 제거합니다."); + Destroy(gameObject); + } + + // 공격 활성화/비활성화 메소드 + public void SetAttackEnabled(bool enabled) + { + attackEnabled = enabled; + + if (enabled) + { + // 공격 활성화시 타겟 탐색 시작 + ChangeState(WeaponState.SearchTarget); + } + else + { + attackTarget = null; + StopStateRoutine(); + } + } + + private bool HasValidWeaponData() + { + return towerTemplate != null && + towerTemplate.weapons != null && + level >= 0 && + level < towerTemplate.weapons.Count; + } + + private bool IsTargetAttackable() + { + if (attackTarget == null || !HasValidWeaponData()) + { + return false; + } + + float range = towerTemplate.weapons[level].range; + return (attackTarget.position - transform.position).sqrMagnitude <= range * range; + } + + private void StopStateRoutine() + { + if (stateRoutine == null) + { + return; + } + + StopCoroutine(stateRoutine); + stateRoutine = null; + } + + private void OnDisable() + { + StopStateRoutine(); + } +} diff --git a/Assets/Scripts/TowerWeapon.cs.meta b/Assets/_Project/Scripts/Legacy/TowerWeapon.cs.meta similarity index 100% rename from Assets/Scripts/TowerWeapon.cs.meta rename to Assets/_Project/Scripts/Legacy/TowerWeapon.cs.meta diff --git a/Assets/Scripts/WaveResultSystem.cs b/Assets/_Project/Scripts/Legacy/WaveResultSystem.cs similarity index 56% rename from Assets/Scripts/WaveResultSystem.cs rename to Assets/_Project/Scripts/Legacy/WaveResultSystem.cs index 92a5e7b..61aae60 100644 --- a/Assets/Scripts/WaveResultSystem.cs +++ b/Assets/_Project/Scripts/Legacy/WaveResultSystem.cs @@ -4,28 +4,30 @@ using UnityEngine.Events; using TMPro; -// ̺ ¸/й ó ý +// 웨이브 승리/패배 조건 및 결과 처리 시스템 public class WaveResultSystem : MonoBehaviour { + private readonly Dictionary humanDestroyedHandlers = new Dictionary(); + [Header("Victory/Defeat Settings")] - [SerializeField] private float healthRatioDefeatThreshold = 0.4f; // й : ü Ӱ谪 (⺻ 40%) - [SerializeField] private float victoryRewardMultiplier = 1.5f; // ¸ + [SerializeField] private float healthRatioDefeatThreshold = 0.4f; // 패배 조건: 체력 비율 임계값 (기본 40%) + [SerializeField] private float victoryRewardMultiplier = 1.5f; // 승리 시 보상 배율 [Header("UI Elements")] - [SerializeField] private GameObject resultPanel; // г - [SerializeField] private TextMeshProUGUI resultTitle; // (¸/й) - [SerializeField] private TextMeshProUGUI resultDescription; // - [SerializeField] private TextMeshProUGUI rewardText; // ؽƮ + [SerializeField] private GameObject resultPanel; // 결과 패널 + [SerializeField] private TextMeshProUGUI resultTitle; // 결과 제목 (승리/패배) + [SerializeField] private TextMeshProUGUI resultDescription; // 결과 설명 + [SerializeField] private TextMeshProUGUI rewardText; // 보상 정보 텍스트 [Header("Sound Effects")] - [SerializeField] private AudioClip victorySound; // ¸ ȿ - [SerializeField] private AudioClip defeatSound; // й ȿ + [SerializeField] private AudioClip victorySound; // 승리 효과음 + [SerializeField] private AudioClip defeatSound; // 패배 효과음 - // ̺Ʈ + // 결과 이벤트 public UnityEvent onVictory = new UnityEvent(); public UnityEvent onDefeat = new UnityEvent(); - // ý + // 시스템 참조 private TimeSystem timeSystem; private WaveSystem waveSystem; private ResourceManager resourceManager; @@ -33,33 +35,33 @@ public class WaveResultSystem : MonoBehaviour private PlayerExperience playerExperience; private AudioSource audioSource; - // ̺ + // 웨이브 상태 추적 private bool isWaveActive = false; private bool isWaveCompleted = false; private bool isHumanDestroyed = false; private bool isHealthBelowThreshold = false; - // + // 보상 정보 저장 private int baseGoldReward = 0; private int baseExpReward = 0; private void Awake() { - // ý Ʈ ã + // 시스템 컴포넌트 찾기 timeSystem = FindObjectOfType(); waveSystem = FindObjectOfType(); resourceManager = FindObjectOfType(); playerGold = FindObjectOfType(); playerExperience = FindObjectOfType(); - // ҽ Ʈ /߰ + // 오디오 소스 컴포넌트 가져오기/추가 audioSource = GetComponent(); if (audioSource == null && (victorySound != null || defeatSound != null)) { audioSource = gameObject.AddComponent(); } - // UI ʱȭ + // UI 초기화 if (resultPanel != null) { resultPanel.SetActive(false); @@ -68,7 +70,7 @@ private void Awake() private void Start() { - // ̺Ʈ + // 이벤트 구독 if (timeSystem != null) { timeSystem.onEveningStart.AddListener(OnEveningStart); @@ -81,13 +83,13 @@ private void Start() waveSystem.OnWaveEnd += HandleWaveEnd; } - // ȭ Ʈ ı ̺Ʈ + // 재화 오브젝트 파괴 이벤트 구독 StartCoroutine(SubscribeToResourceObjects()); } private void OnDestroy() { - // ̺Ʈ + // 이벤트 구독 해제 if (timeSystem != null) { timeSystem.onEveningStart.RemoveListener(OnEveningStart); @@ -99,56 +101,81 @@ private void OnDestroy() waveSystem.OnWaveStart -= HandleWaveStart; waveSystem.OnWaveEnd -= HandleWaveEnd; } + + UnsubscribeFromHumanResources(); } - // Update: й üũ + // Update: 지속적으로 패배 조건 체크 private void Update() { if (isWaveActive && !isWaveCompleted) { - // й 1: ȭ Ʈ ü Ӱ谪 ̸ + // 패배 조건 1: 재화 오브젝트 체력 비율이 임계값 미만 if (resourceManager != null && resourceManager.TotalHealthRatio < healthRatioDefeatThreshold) { isHealthBelowThreshold = true; - HandleDefeat("ȭ Ʈ ջ ɰ"); + HandleDefeat("재화 오브젝트 손상 심각"); } - // й 2: ̹ üũ (Human ± Ʈ ı ̺Ʈ) + // 패배 조건 2: 이미 체크됨 (Human 태그 오브젝트 파괴 이벤트에서) } } - // ȭ Ʈ ̺Ʈ ( Ͽ Ʈ ε ) + // 재화 오브젝트 이벤트 구독 (조금 지연하여 모든 오브젝트가 로드된 후 실행) private IEnumerator SubscribeToResourceObjects() { yield return new WaitForSeconds(0.5f); - // ResourceObject ã + // 씬의 모든 ResourceObject 찾기 ResourceObject[] resourceObjects = FindObjectsOfType(); foreach (ResourceObject resource in resourceObjects) { - // Human ±׸ ҽ Ȯ if (resource.gameObject.CompareTag("Human")) { - // Human ҽ ı ̺Ʈ - resource.onDestroyed.AddListener(() => OnHumanResourceDestroyed(resource)); + SubscribeToHumanResource(resource); + } + } + + Debug.Log($"재화 오브젝트 이벤트 구독 완료: {resourceObjects.Length}개"); + } + + private void SubscribeToHumanResource(ResourceObject resource) + { + if (resource == null || humanDestroyedHandlers.ContainsKey(resource)) + { + return; + } + + UnityAction handler = () => OnHumanResourceDestroyed(resource); + humanDestroyedHandlers.Add(resource, handler); + resource.onDestroyed.AddListener(handler); + } + + private void UnsubscribeFromHumanResources() + { + foreach (KeyValuePair pair in humanDestroyedHandlers) + { + if (pair.Key != null) + { + pair.Key.onDestroyed.RemoveListener(pair.Value); } } - Debug.Log($"ȭ Ʈ ̺Ʈ Ϸ: {resourceObjects.Length}"); + humanDestroyedHandlers.Clear(); } - // Human ± ȭ ı ȣ + // Human 태그 재화 파괴 시 호출 private void OnHumanResourceDestroyed(ResourceObject resource) { if (isWaveActive && !isWaveCompleted) { isHumanDestroyed = true; - HandleDefeat($"߿ ڿ '{resource.ResourceName}' ı"); + HandleDefeat($"중요 자원 '{resource.ResourceName}' 파괴됨"); } } - // ȣ + // 저녁 모드 시작 시 호출 private void OnEveningStart() { isWaveActive = true; @@ -156,154 +183,154 @@ private void OnEveningStart() isHumanDestroyed = false; isHealthBelowThreshold = false; - // ⺻ ݾ (̺ ) + // 기본 보상 금액 계산 (웨이브 시작 시점) CalculateBaseRewards(); - Debug.Log(" : ̺ ͸ "); + Debug.Log("전투 시작: 웨이브 결과 모니터링 시작"); } - // ħ ȣ + // 아침 모드 시작 시 호출 private void OnMorningStart() { isWaveActive = false; } - // ̺ ȣ + // 웨이브 시작 시 호출 private void HandleWaveStart(int waveNumber, string waveName) { - // ̺ + // 웨이브 시작 시 상태 리셋 isWaveCompleted = false; isHumanDestroyed = false; isHealthBelowThreshold = false; } - // ̺ ȣ + // 웨이브 종료 시 호출 private void HandleWaveEnd(int waveNumber, string waveName) { isWaveCompleted = true; - // Ȯ + // 승패 확인 if (!isHumanDestroyed && !isHealthBelowThreshold) { - // й ʾǷ ¸ + // 모든 패배 조건을 충족하지 않았으므로 승리 HandleVictory(); } - // й ̹ Ʈ ó + // 패배는 이미 업데이트에서 처리됨 } - // ¸ ó + // 승리 처리 private void HandleVictory() { - Debug.Log("̺ ¸!"); + Debug.Log("웨이브 승리!"); - // + // 보상 지급 int goldReward = Mathf.RoundToInt(baseGoldReward * victoryRewardMultiplier); int expReward = Mathf.RoundToInt(baseExpReward * victoryRewardMultiplier); - // + // 골드 지급 if (playerGold != null) { playerGold.CurrentGold += goldReward; } - // ġ (⺻ ġ WaveSystem ó) + // 경험치 지급 (기본 경험치는 WaveSystem에서 처리) if (playerExperience != null) { - // ߰ ġ ʽ (⺻ 0.5) + // 추가 경험치 보너스 (기본의 0.5배) int bonusExp = Mathf.RoundToInt(baseExpReward * (victoryRewardMultiplier - 1.0f)); playerExperience.AddExperience(bonusExp); } - // ¸ ȿ + // 승리 효과음 재생 if (audioSource != null && victorySound != null) { audioSource.PlayOneShot(victorySound); } - // ¸ UI ǥ - ShowResultUI(true, "̺ ¸!", - $" ߿ ڿ ѳ½ϴ.\n ڿ : {Mathf.RoundToInt(resourceManager.TotalHealthRatio * 100)}%", - $": {goldReward} (+{Mathf.RoundToInt(baseGoldReward * (victoryRewardMultiplier - 1.0f))} ʽ)\nġ: {expReward} (+{Mathf.RoundToInt(baseExpReward * (victoryRewardMultiplier - 1.0f))} ʽ)"); + // 승리 UI 표시 + ShowResultUI(true, "웨이브 승리!", + $"모든 중요 자원을 지켜냈습니다.\n현재 자원 상태: {Mathf.RoundToInt(resourceManager.TotalHealthRatio * 100)}%", + $"보상: {goldReward} 골드 (+{Mathf.RoundToInt(baseGoldReward * (victoryRewardMultiplier - 1.0f))} 보너스)\n경험치: {expReward} (+{Mathf.RoundToInt(baseExpReward * (victoryRewardMultiplier - 1.0f))} 보너스)"); - // ¸ ̺Ʈ ߻ + // 승리 이벤트 발생 onVictory.Invoke(); } - // й ó + // 패배 처리 private void HandleDefeat(string reason) { - // ̹ ó ߺ + // 이미 처리된 경우 중복 실행 방지 if (isWaveCompleted) return; - Debug.Log($"̺ й: {reason}"); + Debug.Log($"웨이브 패배: {reason}"); isWaveCompleted = true; - // ⺻ ( ) + // 기본 보상만 지급 (배율 없음) int goldReward = baseGoldReward; int expReward = baseExpReward; - // + // 골드 지급 if (playerGold != null) { playerGold.CurrentGold += goldReward; } - // ġ WaveSystem ó + // 경험치는 WaveSystem에서 처리 - // й ȿ + // 패배 효과음 재생 if (audioSource != null && defeatSound != null) { audioSource.PlayOneShot(defeatSound); } - // й UI ǥ - ShowResultUI(false, "̺ й!", - $"й : {reason}\n ڿ : {Mathf.RoundToInt(resourceManager.TotalHealthRatio * 100)}%", - $": {goldReward} \nġ: {expReward}"); + // 패배 UI 표시 + ShowResultUI(false, "웨이브 패배!", + $"패배 원인: {reason}\n현재 자원 상태: {Mathf.RoundToInt(resourceManager.TotalHealthRatio * 100)}%", + $"보상: {goldReward} 골드\n경험치: {expReward}"); - // й ̺Ʈ ߻ + // 패배 이벤트 발생 onDefeat.Invoke(); - // ̺ (ʿ) + // 웨이브 강제 종료 (필요시) if (waveSystem != null && !isWaveCompleted) { - // ⿡ ̺ ߰ (WaveSystem ޼ҵ ʿ) + // 여기에 웨이브 강제 종료 로직 추가 (WaveSystem에 메소드 필요) } } - // ⺻ + // 기본 보상 계산 private void CalculateBaseRewards() { - // ⺻ = ̺ * 10 + 50 + // 기본 골드 보상 = 현재 웨이브 * 10 + 50 if (waveSystem != null) { baseGoldReward = waveSystem.CurrentWave * 10 + 50; } else { - baseGoldReward = 50; // ⺻ + baseGoldReward = 50; // 기본값 } - // ⺻ ġ = ̺ * 15 + 30 + // 기본 경험치 보상 = 현재 웨이브 * 15 + 30 if (waveSystem != null) { baseExpReward = waveSystem.CurrentWave * 15 + 30; } else { - baseExpReward = 30; // ⺻ + baseExpReward = 30; // 기본값 } } - // UI ǥ + // 결과 UI 표시 private void ShowResultUI(bool isVictory, string title, string description, string rewardInfo) { if (resultPanel == null) return; - // г Ȱȭ + // 패널 활성화 resultPanel.SetActive(true); - // ؽƮ + // 텍스트 설정 if (resultTitle != null) { resultTitle.text = title; @@ -320,11 +347,11 @@ private void ShowResultUI(bool isVictory, string title, string description, stri rewardText.text = rewardInfo; } - // ð г + // 시간 지연 후 패널 숨기기 StartCoroutine(HideResultPanel(5f)); } - // г + // 결과 패널 숨기기 private IEnumerator HideResultPanel(float delay) { yield return new WaitForSeconds(delay); @@ -334,4 +361,4 @@ private IEnumerator HideResultPanel(float delay) resultPanel.SetActive(false); } } -} \ No newline at end of file +} diff --git a/Assets/Scripts/WaveResultSystem.cs.meta b/Assets/_Project/Scripts/Legacy/WaveResultSystem.cs.meta similarity index 100% rename from Assets/Scripts/WaveResultSystem.cs.meta rename to Assets/_Project/Scripts/Legacy/WaveResultSystem.cs.meta diff --git a/Assets/Scripts/WaveStarterInteractable.cs b/Assets/_Project/Scripts/Legacy/WaveStarterInteractable.cs similarity index 100% rename from Assets/Scripts/WaveStarterInteractable.cs rename to Assets/_Project/Scripts/Legacy/WaveStarterInteractable.cs diff --git a/Assets/Scripts/WaveStarterInteractable.cs.meta b/Assets/_Project/Scripts/Legacy/WaveStarterInteractable.cs.meta similarity index 100% rename from Assets/Scripts/WaveStarterInteractable.cs.meta rename to Assets/_Project/Scripts/Legacy/WaveStarterInteractable.cs.meta diff --git a/Assets/_Project/Scripts/Legacy/WaveSystem.cs b/Assets/_Project/Scripts/Legacy/WaveSystem.cs new file mode 100644 index 0000000..08a2184 --- /dev/null +++ b/Assets/_Project/Scripts/Legacy/WaveSystem.cs @@ -0,0 +1,585 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +[System.Serializable] +public struct EnemyGroup +{ + [Header("기본 설정")] + [Tooltip("생성할 적 프리팹")] + public GameObject enemyPrefab; // 적 프리팹 + [Tooltip("생성할 적의 수")] + public int count; // 생성할 적의 수 + [Tooltip("적 생성 간격 (초)")] + public float spawnTime; // 적 생성 간격 + + [Header("위치 설정")] + [Tooltip("특정 스폰 위치 (없으면 기본 스포너 위치 사용)")] + public Transform spawnPoint; // 스폰 위치 (null이면 기본 위치) +} + +[System.Serializable] +public struct Wave +{ + public string waveName; // 웨이브 이름 + public EnemyGroup[] enemyGroups; // 적 그룹 배열 + public float delayBeforeNextWave; // 다음 웨이브 시작 전 딜레이 + public float baseDuration; // 웨이브 기본 지속 시간 (초) +} + +public class WaveSystem : MonoBehaviour +{ + [SerializeField] + private Wave[] waves; // 웨이브 배열 + + [SerializeField] + private EnemySpawner enemySpawner; // 적 스포너 참조 + + [SerializeField] + private PlayerGold playerGold; // 플레이어 골드/피로도 참조 + + [SerializeField] + private PlayerExperience playerExperience; // 플레이어 경험치 참조 + + [SerializeField] + private float defaultWaveDuration = 30f; // 기본 웨이브 지속 시간 (초) + + [SerializeField] + private bool cleanupEnemiesAfterAllWaves = true; // 모든 웨이브 완료 후 적 제거 여부 + + [SerializeField] + private float finalCleanupDelay = 3f; // 모든 웨이브 완료 후 적 제거까지 대기 시간 (초) + + [SerializeField] + private bool showDebugMessages = true; // 디버그 메시지 표시 여부 + + private int currentWaveIndex = -1; // 현재 웨이브 인덱스 + private bool isWaveActive = false; // 웨이브 활성화 상태 + private float waveTimer = 0f; // 웨이브 타이머 + private int enemiesKilledInWave = 0; // 웨이브 중 처치한 적 수 + private bool allWavesCompleted = false; // 모든 웨이브 완료 여부 + private bool isSubscribedToEnemySpawner = false; + + // 웨이브 이벤트 델리게이트 + public delegate void WaveEventHandler(int waveNumber, string waveName); + public event WaveEventHandler OnWaveStart; // 웨이브 시작 이벤트 + public event WaveEventHandler OnWaveEnd; // 웨이브 종료 이벤트 + + // 모든 웨이브 완료 이벤트 델리게이트 + public delegate void AllWavesCompletedHandler(); + public event AllWavesCompletedHandler OnAllWavesCompleted; // 모든 웨이브 완료 이벤트 + + // 현재 웨이브 번호 프로퍼티 (1부터 시작) + public int CurrentWave => currentWaveIndex + 1; + + // 최대 웨이브 수 프로퍼티 + public int MaxWave => waves != null ? waves.Length : 0; + + // 현재 웨이브 이름 프로퍼티 + public string CurrentWaveName => currentWaveIndex >= 0 && currentWaveIndex < waves.Length ? + waves[currentWaveIndex].waveName : "None"; + + // 모든 웨이브 완료 여부 프로퍼티 + public bool AllWavesCompleted => allWavesCompleted; + + // 현재 웨이브 지속 시간 프로퍼티 + public float CurrentWaveDuration + { + get + { + if (currentWaveIndex < 0 || currentWaveIndex >= waves.Length) + return defaultWaveDuration; + + // 웨이브에 지정된 지속 시간이 있으면 사용, 없으면 기본값 사용 + float baseDuration = waves[currentWaveIndex].baseDuration > 0 ? + waves[currentWaveIndex].baseDuration : defaultWaveDuration; + + // 플레이어의 피로도에 따른 웨이브 지속시간 계산 + if (playerGold != null) + { + return playerGold.GetWaveDuration(baseDuration); + } + + return baseDuration; + } + } + + // 남은 웨이브 시간 프로퍼티 + public float RemainingWaveTime => Mathf.Max(0, CurrentWaveDuration - waveTimer); + + // 웨이브 진행률 프로퍼티 (0~1) + public float WaveProgress => Mathf.Clamp01(waveTimer / CurrentWaveDuration); + + private void OnEnable() + { + SubscribeEnemySpawnerEvents(); + } + + private void Start() + { + // 초기화 + InitializeReferences(); + SubscribeEnemySpawnerEvents(); + + // 자동으로 첫 웨이브 시작 (필요시 주석 해제) + // StartWave(); + } + + private void InitializeReferences() + { + if (playerGold == null) + { + playerGold = FindObjectOfType(); + if (playerGold == null) + { + Debug.LogWarning("PlayerGold 참조를 찾을 수 없습니다!"); + } + } + + if (playerExperience == null) + { + playerExperience = FindObjectOfType(); + } + + if (enemySpawner == null) + { + enemySpawner = FindObjectOfType(); + if (enemySpawner == null) + { + Debug.LogError("EnemySpawner를 찾을 수 없습니다!"); + } + } + } + + private void Update() + { + if (isWaveActive) + { + if (enemySpawner == null) + { + Debug.LogError("WaveSystem: EnemySpawner 참조가 없어 웨이브를 종료합니다."); + EndCurrentWave(); + return; + } + + // 웨이브 타이머 업데이트 + waveTimer += Time.deltaTime; + + // 웨이브 시간이 다 되었거나 적이 모두 처리된 경우 + if (waveTimer >= CurrentWaveDuration || + NoActiveEnemies()) + { + EndCurrentWave(); + } + } + } + + // 현재 웨이브 종료 메소드 + private void EndCurrentWave() + { + if (!isWaveActive) return; + + isWaveActive = false; + + // 웨이브 종료 이벤트 발생 + OnWaveEnd?.Invoke(CurrentWave, CurrentWaveName); + + LogDebug($"웨이브 {CurrentWave} 종료! 처치한 적: {enemiesKilledInWave}마리"); + + // 경험치 정산 + if (playerExperience != null) + { + playerExperience.AddExperienceForWaveCompletion(enemiesKilledInWave); + } + + // 피로도 리셋 (추가된 부분) + if (playerGold != null) + { + playerGold.ResetFatigue(); + LogDebug("웨이브 종료 시 피로도 리셋됨"); + } + + // 적 처치 수 초기화 + enemiesKilledInWave = 0; + + // 다음 웨이브가 있는지 확인 + if (currentWaveIndex < waves.Length - 1) + { + // 다음 웨이브 준비 + float delay = waves[currentWaveIndex].delayBeforeNextWave; + StartCoroutine(StartNextWaveAfterDelay(delay)); + } + else + { + // 모든 웨이브 완료 + HandleAllWavesCompleted(); + } + } + + // 모든 웨이브 완료 처리 + private void HandleAllWavesCompleted() + { + allWavesCompleted = true; + LogDebug("모든 웨이브가 완료되었습니다!"); + + // 모든 웨이브 완료 이벤트 발생 + OnAllWavesCompleted?.Invoke(); + + // 모든 웨이브 완료 후 적 제거 + if (cleanupEnemiesAfterAllWaves) + { + StartCoroutine(CleanupAllEnemiesAfterDelay()); + } + + // 게임 클리어 처리 (필요시 추가) + // GameManager.Instance.HandleGameWin(); + } + + // 모든 웨이브 완료 후 적 제거 코루틴 + private IEnumerator CleanupAllEnemiesAfterDelay() + { + // 지정된 지연 시간 후 실행 + yield return new WaitForSeconds(finalCleanupDelay); + + int enemyCount = enemySpawner.EnemyList.Count; + if (enemyCount > 0) + { + LogDebug($"모든 웨이브 완료 후 남은 {enemyCount}마리의 적 제거 중..."); + + // 리스트를 복사하여 순회 중 변경 문제 방지 + List enemiesToDestroy = new List(enemySpawner.EnemyList); + + foreach (Enemy enemy in enemiesToDestroy) + { + if (enemy != null) + { + // 적 제거 (Kill 타입으로 - 골드/경험치 없음) + enemy.gold = 0; // 골드 보상 없음 + enemy.OnDie(EnemyDestroyType.Kill); + + // 약간의 시간차를 두고 제거하여 시각적 효과 개선 (선택적) + yield return new WaitForSeconds(0.05f); + } + } + + LogDebug($"모든 웨이브 완료 후 적 제거 완료"); + } + } + + // 웨이브 중 적 처치 추적 메소드 + public void OnEnemyKilled() + { + enemiesKilledInWave++; + } + + // 다음 웨이브 시작 딜레이 코루틴 + private IEnumerator StartNextWaveAfterDelay(float delay) + { + yield return new WaitForSeconds(delay); + StartWave(); + } + + // 웨이브 시작 메소드 + public void StartWave() + { + if (waves == null || waves.Length == 0) + { + LogDebug("시작할 웨이브가 없습니다."); + return; + } + + if (enemySpawner == null) + { + InitializeReferences(); + } + + if (enemySpawner == null) + { + Debug.LogError("WaveSystem: EnemySpawner가 없어 웨이브를 시작할 수 없습니다."); + return; + } + + SubscribeEnemySpawnerEvents(); + + if (!isWaveActive && currentWaveIndex < waves.Length - 1) + { + currentWaveIndex++; + + float waveDuration = CurrentWaveDuration; + LogDebug($"웨이브 {CurrentWave} 시작: {CurrentWaveName}, 지속 시간: {waveDuration}초 (피로도: {playerGold?.FatigueRatio:P0})"); + + // 웨이브 시작 이벤트 발생 + OnWaveStart?.Invoke(CurrentWave, CurrentWaveName); + + // 적 스폰 시작 + enemySpawner.StartWave(waves[currentWaveIndex]); + + isWaveActive = true; + waveTimer = 0f; // 타이머 초기화 + } + else if (currentWaveIndex >= waves.Length - 1) + { + LogDebug("더 이상 시작할 웨이브가 없습니다!"); + } + } + + // 적 처치 이벤트 핸들러 + private void OnEnemyDestroyed(Transform enemy) + { + // 적 처치 시 호출 + if (isWaveActive) + { + OnEnemyKilled(); + } + } + + // 게임 재시작 또는 리셋 시 호출 + public void ResetWaveSystem() + { + StopAllCoroutines(); + currentWaveIndex = -1; + isWaveActive = false; + waveTimer = 0f; + enemiesKilledInWave = 0; + allWavesCompleted = false; + + // 피로도도 초기화 + if (playerGold != null) + { + playerGold.ResetFatigue(); + } + + LogDebug("웨이브 시스템 리셋"); + } + + private bool NoActiveEnemies() + { + return enemySpawner != null && + enemySpawner.EnemyList.Count == 0 && + enemySpawner.CurrentEnemyCount <= 0; + } + + private void SubscribeEnemySpawnerEvents() + { + if (enemySpawner == null || isSubscribedToEnemySpawner) + { + return; + } + + enemySpawner.OnEnemyDestroyed += OnEnemyDestroyed; + isSubscribedToEnemySpawner = true; + } + + private void UnsubscribeEnemySpawnerEvents() + { + if (enemySpawner == null || !isSubscribedToEnemySpawner) + { + return; + } + + enemySpawner.OnEnemyDestroyed -= OnEnemyDestroyed; + isSubscribedToEnemySpawner = false; + } + + // 디버그 로그 출력 헬퍼 메소드 + private void LogDebug(string message) + { + if (showDebugMessages) + { + Debug.Log($"[WaveSystem] {message}"); + } + } + + private void OnDisable() + { + UnsubscribeEnemySpawnerEvents(); + } + + // OnDestroy: 이벤트 구독 해제 + private void OnDestroy() + { + UnsubscribeEnemySpawnerEvents(); + } + + // 동적으로 웨이브를 설정하는 메소드 + public void SetWaves(Wave[] newWaves) + { + if (newWaves == null || newWaves.Length == 0) + { + Debug.LogWarning("설정하려는 웨이브가 비어있습니다."); + return; + } + + // 현재 진행 중인 웨이브가 있는지 확인 + if (isWaveActive) + { + Debug.LogWarning("웨이브가 진행 중일 때는 새 웨이브를 설정할 수 없습니다."); + return; + } + + // 기존 웨이브 저장 + Wave[] oldWaves = waves; + + // 새 웨이브 설정 + waves = newWaves; + + // 웨이브 관련 상태 초기화 + ResetWaveSystem(); + + Debug.Log($"웨이브 설정이 변경되었습니다. 웨이브 수: {waves.Length}개"); + + // 웨이브 정보 출력 (디버그용) + for (int i = 0; i < waves.Length; i++) + { + Debug.Log($"웨이브 {i + 1}: {waves[i].waveName}, 적 그룹 수: {waves[i].enemyGroups.Length}개"); + } + } + + // 웨이브 추가 메소드 + public void AddWaves(Wave[] additionalWaves) + { + if (additionalWaves == null || additionalWaves.Length == 0) + { + Debug.LogWarning("추가하려는 웨이브가 비어있습니다."); + return; + } + + // 기존 웨이브와 새 웨이브 병합 + Wave[] combinedWaves = new Wave[waves.Length + additionalWaves.Length]; + + // 기존 웨이브 복사 + for (int i = 0; i < waves.Length; i++) + { + combinedWaves[i] = waves[i]; + } + + // 새 웨이브 추가 + for (int i = 0; i < additionalWaves.Length; i++) + { + combinedWaves[waves.Length + i] = additionalWaves[i]; + } + + // 병합된 웨이브 설정 + waves = combinedWaves; + + Debug.Log($"웨이브가 추가되었습니다. 총 웨이브 수: {waves.Length}개"); + } + + // 특정 인덱스의 웨이브 가져오기 + public Wave GetWave(int index) + { + if (index < 0 || index >= waves.Length) + { + Debug.LogWarning($"유효하지 않은 웨이브 인덱스: {index}, 웨이브 수: {waves.Length}"); + return default(Wave); + } + + return waves[index]; + } + + // 현재 웨이브 정보 복제하여 가져오기 + public Wave GetCurrentWaveInfo() + { + if (currentWaveIndex < 0 || currentWaveIndex >= waves.Length) + { + Debug.LogWarning("현재 활성화된 웨이브가 없습니다."); + return default(Wave); + } + + return waves[currentWaveIndex]; + } + + // 랜덤 웨이브 생성 (선택적) + public Wave GenerateRandomWave(int difficulty = 1) + { + // 빈 웨이브 생성 + Wave randomWave = new Wave(); + + // 웨이브 이름 설정 + randomWave.waveName = $"Random Wave (Difficulty {difficulty})"; + + // 기본 지속 시간 설정 + randomWave.baseDuration = 60f + (difficulty * 10f); + + // 적 그룹 생성 + int groupCount = Mathf.Max(1, Random.Range(1, 3 + difficulty / 2)); + randomWave.enemyGroups = new EnemyGroup[groupCount]; + + // 랜덤 적 프리팹 가져오기 (Resources 폴더에서) + GameObject[] enemyPrefabs = Resources.LoadAll("Prefabs/Enemies"); + + // 적 프리팹이 없으면 빈 웨이브 반환 + if (enemyPrefabs == null || enemyPrefabs.Length == 0) + { + Debug.LogWarning("랜덤 웨이브 생성을 위한 적 프리팹을 찾을 수 없습니다."); + return randomWave; + } + + // 각 그룹 설정 + for (int i = 0; i < groupCount; i++) + { + EnemyGroup group = new EnemyGroup(); + + // 랜덤 적 프리팹 선택 + group.enemyPrefab = enemyPrefabs[Random.Range(0, enemyPrefabs.Length)]; + + // 적 수량 설정 (난이도에 따라) + group.count = Mathf.Max(3, 5 + difficulty * 2 + Random.Range(-2, 3)); + + // 스폰 간격 설정 + group.spawnTime = Mathf.Max(0.5f, 2f - (difficulty * 0.1f) + Random.Range(-0.2f, 0.2f)); + + // 그룹 추가 + randomWave.enemyGroups[i] = group; + } + + // 다음 웨이브 딜레이 설정 + randomWave.delayBeforeNextWave = 5f + Random.Range(0f, 5f); + + return randomWave; + } + + // 웨이브의 특정 속성 조정 + public void AdjustWaveDifficulty(float difficultyMultiplier) + { + // 웨이브 배열의 새 버전 생성 (원본 수정 방지) + Wave[] adjustedWaves = new Wave[waves.Length]; + + for (int i = 0; i < waves.Length; i++) + { + // 웨이브 복사 + adjustedWaves[i] = waves[i]; + + // 웨이브 지속 시간 조정 + if (adjustedWaves[i].baseDuration > 0) + { + adjustedWaves[i].baseDuration *= Mathf.Max(0.5f, difficultyMultiplier); + } + + // 적 그룹 복사 및 조정 + EnemyGroup[] adjustedGroups = new EnemyGroup[adjustedWaves[i].enemyGroups.Length]; + + for (int j = 0; j < adjustedWaves[i].enemyGroups.Length; j++) + { + // 그룹 복사 + adjustedGroups[j] = adjustedWaves[i].enemyGroups[j]; + + // 적 수량 조정 (구조체는 직접 수정 불가하므로 새로운 인스턴스 생성) + int newCount = Mathf.Max(1, Mathf.RoundToInt(adjustedGroups[j].count * difficultyMultiplier)); + adjustedGroups[j].count = newCount; + + // 스폰 시간 조정 (반비례) + float newSpawnTime = Mathf.Max(0.2f, adjustedGroups[j].spawnTime / Mathf.Max(0.5f, difficultyMultiplier)); + adjustedGroups[j].spawnTime = newSpawnTime; + } + + // 조정된 그룹 설정 + adjustedWaves[i].enemyGroups = adjustedGroups; + } + + // 조정된 웨이브로 업데이트 + waves = adjustedWaves; + + Debug.Log($"웨이브 난이도가 조정되었습니다. 배율: {difficultyMultiplier}"); + } +} diff --git a/Assets/Scripts/WaveSystem.cs.meta b/Assets/_Project/Scripts/Legacy/WaveSystem.cs.meta similarity index 100% rename from Assets/Scripts/WaveSystem.cs.meta rename to Assets/_Project/Scripts/Legacy/WaveSystem.cs.meta diff --git a/Assets/Scripts/unused.meta b/Assets/_Project/Scripts/Legacy/unused.meta similarity index 100% rename from Assets/Scripts/unused.meta rename to Assets/_Project/Scripts/Legacy/unused.meta diff --git a/Assets/Scripts/unused/MicroPhoneVolumeTest.cs b/Assets/_Project/Scripts/Legacy/unused/MicroPhoneVolumeTest.cs similarity index 100% rename from Assets/Scripts/unused/MicroPhoneVolumeTest.cs rename to Assets/_Project/Scripts/Legacy/unused/MicroPhoneVolumeTest.cs diff --git a/Assets/Scripts/unused/MicroPhoneVolumeTest.cs.meta b/Assets/_Project/Scripts/Legacy/unused/MicroPhoneVolumeTest.cs.meta similarity index 100% rename from Assets/Scripts/unused/MicroPhoneVolumeTest.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/MicroPhoneVolumeTest.cs.meta diff --git a/Assets/Scripts/unused/MoveVertical.cs b/Assets/_Project/Scripts/Legacy/unused/MoveVertical.cs similarity index 100% rename from Assets/Scripts/unused/MoveVertical.cs rename to Assets/_Project/Scripts/Legacy/unused/MoveVertical.cs diff --git a/Assets/Scripts/unused/MoveVertical.cs.meta b/Assets/_Project/Scripts/Legacy/unused/MoveVertical.cs.meta similarity index 100% rename from Assets/Scripts/unused/MoveVertical.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/MoveVertical.cs.meta diff --git a/Assets/Scripts/unused/MovementRigidbody2D.cs b/Assets/_Project/Scripts/Legacy/unused/MovementRigidbody2D.cs similarity index 100% rename from Assets/Scripts/unused/MovementRigidbody2D.cs rename to Assets/_Project/Scripts/Legacy/unused/MovementRigidbody2D.cs diff --git a/Assets/Scripts/unused/MovementRigidbody2D.cs.meta b/Assets/_Project/Scripts/Legacy/unused/MovementRigidbody2D.cs.meta similarity index 100% rename from Assets/Scripts/unused/MovementRigidbody2D.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/MovementRigidbody2D.cs.meta diff --git a/Assets/Scripts/unused/Path.meta b/Assets/_Project/Scripts/Legacy/unused/Path.meta similarity index 100% rename from Assets/Scripts/unused/Path.meta rename to Assets/_Project/Scripts/Legacy/unused/Path.meta diff --git a/Assets/Scripts/unused/Path/GameManager.cs b/Assets/_Project/Scripts/Legacy/unused/Path/GameManager.cs similarity index 100% rename from Assets/Scripts/unused/Path/GameManager.cs rename to Assets/_Project/Scripts/Legacy/unused/Path/GameManager.cs diff --git a/Assets/Scripts/unused/Path/GameManager.cs.meta b/Assets/_Project/Scripts/Legacy/unused/Path/GameManager.cs.meta similarity index 100% rename from Assets/Scripts/unused/Path/GameManager.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/Path/GameManager.cs.meta diff --git a/Assets/Scripts/unused/Path/PathFindingManager.cs b/Assets/_Project/Scripts/Legacy/unused/Path/PathFindingManager.cs similarity index 100% rename from Assets/Scripts/unused/Path/PathFindingManager.cs rename to Assets/_Project/Scripts/Legacy/unused/Path/PathFindingManager.cs diff --git a/Assets/Scripts/unused/Path/PathFindingManager.cs.meta b/Assets/_Project/Scripts/Legacy/unused/Path/PathFindingManager.cs.meta similarity index 100% rename from Assets/Scripts/unused/Path/PathFindingManager.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/Path/PathFindingManager.cs.meta diff --git a/Assets/Scripts/unused/Pathfinding.cs b/Assets/_Project/Scripts/Legacy/unused/Pathfinding.cs similarity index 100% rename from Assets/Scripts/unused/Pathfinding.cs rename to Assets/_Project/Scripts/Legacy/unused/Pathfinding.cs diff --git a/Assets/Scripts/unused/Pathfinding.cs.meta b/Assets/_Project/Scripts/Legacy/unused/Pathfinding.cs.meta similarity index 100% rename from Assets/Scripts/unused/Pathfinding.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/Pathfinding.cs.meta diff --git a/Assets/Scripts/unused/Projectile.cs b/Assets/_Project/Scripts/Legacy/unused/Projectile.cs similarity index 100% rename from Assets/Scripts/unused/Projectile.cs rename to Assets/_Project/Scripts/Legacy/unused/Projectile.cs diff --git a/Assets/Scripts/unused/Projectile.cs.meta b/Assets/_Project/Scripts/Legacy/unused/Projectile.cs.meta similarity index 100% rename from Assets/Scripts/unused/Projectile.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/Projectile.cs.meta diff --git a/Assets/Scripts/unused/SkillEmission.cs b/Assets/_Project/Scripts/Legacy/unused/SkillEmission.cs similarity index 100% rename from Assets/Scripts/unused/SkillEmission.cs rename to Assets/_Project/Scripts/Legacy/unused/SkillEmission.cs diff --git a/Assets/Scripts/unused/SkillEmission.cs.meta b/Assets/_Project/Scripts/Legacy/unused/SkillEmission.cs.meta similarity index 100% rename from Assets/Scripts/unused/SkillEmission.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/SkillEmission.cs.meta diff --git a/Assets/Scripts/unused/Utils.cs b/Assets/_Project/Scripts/Legacy/unused/Utils.cs similarity index 100% rename from Assets/Scripts/unused/Utils.cs rename to Assets/_Project/Scripts/Legacy/unused/Utils.cs diff --git a/Assets/Scripts/unused/Utils.cs.meta b/Assets/_Project/Scripts/Legacy/unused/Utils.cs.meta similarity index 100% rename from Assets/Scripts/unused/Utils.cs.meta rename to Assets/_Project/Scripts/Legacy/unused/Utils.cs.meta diff --git a/Assets/_Project/Scripts/Runtime.meta b/Assets/_Project/Scripts/Runtime.meta new file mode 100644 index 0000000..6a814ed --- /dev/null +++ b/Assets/_Project/Scripts/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e83741c02a3d2945ba9e49f63e55db6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Core.meta b/Assets/_Project/Scripts/Runtime/Core.meta new file mode 100644 index 0000000..9aa6c51 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 391cf30528b154d489c7a043bb36c0dd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Core/GameEvents.cs b/Assets/_Project/Scripts/Runtime/Core/GameEvents.cs new file mode 100644 index 0000000..89455a8 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Core/GameEvents.cs @@ -0,0 +1,95 @@ +using UnityEngine; + +namespace HomeProtector.Core +{ + public enum GamePhase + { + Preparation, + Combat, + Result + } + + public enum TimeOfDay + { + Morning, + Evening + } + + public enum TowerChangeType + { + Placed, + Removed, + Upgraded, + Moved + } + + public struct PhaseChangedEvent + { + public PhaseChangedEvent(GamePhase previousPhase, GamePhase newPhase, int day) + { + PreviousPhase = previousPhase; + NewPhase = newPhase; + Day = day; + } + + public GamePhase PreviousPhase { get; } + public GamePhase NewPhase { get; } + public int Day { get; } + } + + public struct DayChangedEvent + { + public DayChangedEvent(int previousDay, int newDay) + { + PreviousDay = previousDay; + NewDay = newDay; + } + + public int PreviousDay { get; } + public int NewDay { get; } + } + + public struct WaveChangedEvent + { + public WaveChangedEvent(int day, int waveIndex, WaveDefinition wave) + { + Day = day; + WaveIndex = waveIndex; + Wave = wave; + } + + public int Day { get; } + public int WaveIndex { get; } + public WaveDefinition Wave { get; } + } + + public struct ResourceChangedEvent + { + public ResourceChangedEvent(GameObject resource, string resourceId, Vector3 position) + { + Resource = resource; + ResourceId = resourceId; + Position = position; + } + + public GameObject Resource { get; } + public string ResourceId { get; } + public Vector3 Position { get; } + } + + public struct TowerChangedEvent + { + public TowerChangedEvent(TowerChangeType changeType, TowerDefinition definition, GameObject instance, Vector3Int cell) + { + ChangeType = changeType; + Definition = definition; + Instance = instance; + Cell = cell; + } + + public TowerChangeType ChangeType { get; } + public TowerDefinition Definition { get; } + public GameObject Instance { get; } + public Vector3Int Cell { get; } + } +} diff --git a/Assets/_Project/Scripts/Runtime/Core/GameEvents.cs.meta b/Assets/_Project/Scripts/Runtime/Core/GameEvents.cs.meta new file mode 100644 index 0000000..81e71d5 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Core/GameEvents.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67356d3c1054d294fadeb44ebcd5221d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Core/GameSession.cs b/Assets/_Project/Scripts/Runtime/Core/GameSession.cs new file mode 100644 index 0000000..ae8e534 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Core/GameSession.cs @@ -0,0 +1,106 @@ +using System; +using UnityEngine; + +namespace HomeProtector.Core +{ + public sealed class GameSession : MonoBehaviour + { + [SerializeField] private int startingDay = 1; + [SerializeField] private GamePhase initialPhase = GamePhase.Preparation; + [SerializeField] private bool publishInitialStateOnStart = true; + + public event Action PhaseChanged; + public event Action DayChanged; + + public int CurrentDay { get; private set; } = 1; + public GamePhase CurrentPhase { get; private set; } + public bool LastCombatWon { get; private set; } + + private void Awake() + { + CurrentDay = Mathf.Max(1, startingDay); + CurrentPhase = initialPhase; + } + + private void Start() + { + if (!publishInitialStateOnStart) + { + return; + } + + DayChanged?.Invoke(new DayChangedEvent(CurrentDay, CurrentDay)); + PhaseChanged?.Invoke(new PhaseChangedEvent(CurrentPhase, CurrentPhase, CurrentDay)); + } + + public void BeginPreparation() + { + if (CurrentPhase != GamePhase.Result || LastCombatWon) + { + return; + } + + SetPhase(GamePhase.Preparation); + } + + public void BeginCombat() + { + if (CurrentPhase != GamePhase.Preparation) + { + return; + } + + SetPhase(GamePhase.Combat); + } + + public void CompleteCombat(bool victory) + { + if (CurrentPhase != GamePhase.Combat) + { + return; + } + + LastCombatWon = victory; + SetPhase(GamePhase.Result); + } + + public void AdvanceDay() + { + if (CurrentPhase != GamePhase.Result || !LastCombatWon) + { + return; + } + + int previousDay = CurrentDay; + CurrentDay++; + DayChanged?.Invoke(new DayChangedEvent(previousDay, CurrentDay)); + SetPhase(GamePhase.Preparation); + } + + public void ResetSession(int day = 1) + { + int previousDay = CurrentDay; + CurrentDay = Mathf.Max(1, day); + LastCombatWon = false; + DayChanged?.Invoke(new DayChangedEvent(previousDay, CurrentDay)); + SetPhase(GamePhase.Preparation, true); + } + + public void SetPhase(GamePhase nextPhase) + { + SetPhase(nextPhase, false); + } + + private void SetPhase(GamePhase nextPhase, bool forcePublish) + { + GamePhase previousPhase = CurrentPhase; + if (!forcePublish && previousPhase == nextPhase) + { + return; + } + + CurrentPhase = nextPhase; + PhaseChanged?.Invoke(new PhaseChangedEvent(previousPhase, nextPhase, CurrentDay)); + } + } +} diff --git a/Assets/_Project/Scripts/Runtime/Core/GameSession.cs.meta b/Assets/_Project/Scripts/Runtime/Core/GameSession.cs.meta new file mode 100644 index 0000000..ba7cb3f --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Core/GameSession.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a052c76b0373948459faa54cd32aa1e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Data.meta b/Assets/_Project/Scripts/Runtime/Data.meta new file mode 100644 index 0000000..a324ad9 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa8189ff68377c348a0ed9054c81ca26 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Data/DayWaveTable.cs b/Assets/_Project/Scripts/Runtime/Data/DayWaveTable.cs new file mode 100644 index 0000000..3409c24 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/DayWaveTable.cs @@ -0,0 +1,79 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace HomeProtector.Core +{ + [System.Serializable] + public sealed class DayWaveEntry + { + [SerializeField] private string label = "Day"; + [SerializeField] private int day = 1; + [SerializeField] private int dayRangeStart = 0; + [SerializeField] private int dayRangeEnd = 0; + [SerializeField] private List waves = new List(); + + public string Label => label; + public int Day => day; + public int DayRangeStart => dayRangeStart; + public int DayRangeEnd => dayRangeEnd; + public IReadOnlyList Waves => waves; + + public bool Matches(int currentDay) + { + if (day > 0 && currentDay == day) + { + return true; + } + + return dayRangeStart > 0 && dayRangeEnd >= dayRangeStart && currentDay >= dayRangeStart && currentDay <= dayRangeEnd; + } + } + + [CreateAssetMenu(fileName = "DayWaveTable", menuName = "Home Protector/Day Wave Table")] + public sealed class DayWaveTable : ScriptableObject + { + [SerializeField] private List entries = new List(); + + public IReadOnlyList Entries => entries; + + public IReadOnlyList GetWavesForDay(int day) + { + DayWaveEntry exactMatch = null; + DayWaveEntry rangeMatch = null; + + foreach (DayWaveEntry entry in entries) + { + if (entry == null) + { + continue; + } + + if (entry.Day == day) + { + exactMatch = entry; + break; + } + + if (rangeMatch == null && entry.Matches(day)) + { + rangeMatch = entry; + } + } + + DayWaveEntry selected = exactMatch ?? rangeMatch; + return selected != null ? selected.Waves : System.Array.Empty(); + } + + public bool IsValid(out string message) + { + if (entries == null || entries.Count == 0) + { + message = "Day wave table has no entries."; + return false; + } + + message = string.Empty; + return true; + } + } +} diff --git a/Assets/_Project/Scripts/Runtime/Data/DayWaveTable.cs.meta b/Assets/_Project/Scripts/Runtime/Data/DayWaveTable.cs.meta new file mode 100644 index 0000000..01c35ac --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/DayWaveTable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12cd5e587efc45c47875adee9fb020c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Data/EnemyDefinition.cs b/Assets/_Project/Scripts/Runtime/Data/EnemyDefinition.cs new file mode 100644 index 0000000..b88c326 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/EnemyDefinition.cs @@ -0,0 +1,50 @@ +using UnityEngine; + +namespace HomeProtector.Core +{ + [CreateAssetMenu(fileName = "EnemyDefinition", menuName = "Home Protector/Enemy Definition")] + public sealed class EnemyDefinition : ScriptableObject + { + [SerializeField] private string id = "enemy"; + [SerializeField] private string displayName = "Enemy"; + [SerializeField] private GameObject prefab; + [SerializeField] private Sprite icon; + [SerializeField] private float maxHealth = 1f; + [SerializeField] private int goldReward = 1; + [SerializeField] private int experienceReward = 1; + [SerializeField] private float moveSpeedMultiplier = 1f; + + public string Id => id; + public string DisplayName => displayName; + public GameObject Prefab => prefab; + public Sprite Icon => icon; + public float MaxHealth => maxHealth; + public int GoldReward => goldReward; + public int ExperienceReward => experienceReward; + public float MoveSpeedMultiplier => moveSpeedMultiplier; + + public bool IsValid(out string message) + { + if (string.IsNullOrWhiteSpace(id)) + { + message = "Enemy id is empty."; + return false; + } + + if (prefab == null) + { + message = $"Enemy '{id}' has no prefab."; + return false; + } + + if (maxHealth <= 0f) + { + message = $"Enemy '{id}' must have positive health."; + return false; + } + + message = string.Empty; + return true; + } + } +} diff --git a/Assets/_Project/Scripts/Runtime/Data/EnemyDefinition.cs.meta b/Assets/_Project/Scripts/Runtime/Data/EnemyDefinition.cs.meta new file mode 100644 index 0000000..b30ff1e --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/EnemyDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31479fc32602c544f91e0663c653a597 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Data/ProjectileDefinition.cs b/Assets/_Project/Scripts/Runtime/Data/ProjectileDefinition.cs new file mode 100644 index 0000000..57b860b --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/ProjectileDefinition.cs @@ -0,0 +1,64 @@ +using UnityEngine; + +namespace HomeProtector.Core +{ + public enum ProjectileBehaviourType + { + Straight, + Homing, + Area, + SlowDebuff, + AttackSpeedDebuff, + ComboDebuff + } + + [CreateAssetMenu(fileName = "ProjectileDefinition", menuName = "Home Protector/Projectile Definition")] + public sealed class ProjectileDefinition : ScriptableObject + { + [SerializeField] private string id = "projectile"; + [SerializeField] private string displayName = "Projectile"; + [SerializeField] private GameObject prefab; + [SerializeField] private Sprite icon; + [SerializeField] private ProjectileBehaviourType behaviourType = ProjectileBehaviourType.Straight; + [SerializeField] private float baseDamage = 1f; + [SerializeField] private float speed = 8f; + [SerializeField] private float areaRadius = 0f; + [SerializeField] private float debuffDuration = 0f; + [SerializeField] private float debuffMultiplier = 1f; + + public string Id => id; + public string DisplayName => displayName; + public GameObject Prefab => prefab; + public Sprite Icon => icon; + public ProjectileBehaviourType BehaviourType => behaviourType; + public float BaseDamage => baseDamage; + public float Speed => speed; + public float AreaRadius => areaRadius; + public float DebuffDuration => debuffDuration; + public float DebuffMultiplier => debuffMultiplier; + + public bool IsValid(out string message) + { + if (string.IsNullOrWhiteSpace(id)) + { + message = "Projectile id is empty."; + return false; + } + + if (prefab == null) + { + message = $"Projectile '{id}' has no prefab."; + return false; + } + + if (baseDamage < 0f) + { + message = $"Projectile '{id}' has negative damage."; + return false; + } + + message = string.Empty; + return true; + } + } +} diff --git a/Assets/_Project/Scripts/Runtime/Data/ProjectileDefinition.cs.meta b/Assets/_Project/Scripts/Runtime/Data/ProjectileDefinition.cs.meta new file mode 100644 index 0000000..97f98e4 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/ProjectileDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac10458e8db14384983b3b0f5c10c36f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Data/TowerDefinition.cs b/Assets/_Project/Scripts/Runtime/Data/TowerDefinition.cs new file mode 100644 index 0000000..651dd11 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/TowerDefinition.cs @@ -0,0 +1,75 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace HomeProtector.Core +{ + [System.Serializable] + public sealed class TowerLevelDefinition + { + [SerializeField] private Sprite sprite; + [SerializeField] private ProjectileDefinition projectile; + [SerializeField] private float damage = 1f; + [SerializeField] private float fireRate = 1f; + [SerializeField] private float range = 4f; + [SerializeField] private int cost = 1; + [SerializeField] private int sellValue = 1; + + public Sprite Sprite => sprite; + public ProjectileDefinition Projectile => projectile; + public float Damage => damage; + public float FireRate => fireRate; + public float Range => range; + public int Cost => cost; + public int SellValue => sellValue; + } + + [CreateAssetMenu(fileName = "TowerDefinition", menuName = "Home Protector/Tower Definition")] + public sealed class TowerDefinition : ScriptableObject + { + [SerializeField] private string id = "tower"; + [SerializeField] private string displayName = "Tower"; + [SerializeField] private GameObject towerPrefab; + [SerializeField] private GameObject previewPrefab; + [SerializeField] private List levels = new List(); + + public string Id => id; + public string DisplayName => displayName; + public GameObject TowerPrefab => towerPrefab; + public GameObject PreviewPrefab => previewPrefab != null ? previewPrefab : towerPrefab; + public IReadOnlyList Levels => levels; + + public TowerLevelDefinition GetLevel(int zeroBasedLevel) + { + if (levels == null || levels.Count == 0) + { + return null; + } + + return levels[Mathf.Clamp(zeroBasedLevel, 0, levels.Count - 1)]; + } + + public bool IsValid(out string message) + { + if (string.IsNullOrWhiteSpace(id)) + { + message = "Tower id is empty."; + return false; + } + + if (towerPrefab == null) + { + message = $"Tower '{id}' has no prefab."; + return false; + } + + if (levels == null || levels.Count == 0) + { + message = $"Tower '{id}' has no level data."; + return false; + } + + message = string.Empty; + return true; + } + } +} diff --git a/Assets/_Project/Scripts/Runtime/Data/TowerDefinition.cs.meta b/Assets/_Project/Scripts/Runtime/Data/TowerDefinition.cs.meta new file mode 100644 index 0000000..49189c3 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/TowerDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff06f21defe13c142a818363f9d9c232 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/Data/WaveDefinition.cs b/Assets/_Project/Scripts/Runtime/Data/WaveDefinition.cs new file mode 100644 index 0000000..da63ad6 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/WaveDefinition.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace HomeProtector.Core +{ + [System.Serializable] + public sealed class EnemyWaveEntry + { + [SerializeField] private EnemyDefinition enemy; + [SerializeField] private int count = 1; + [SerializeField] private float spawnInterval = 1f; + [SerializeField] private Transform spawnPointOverride; + + public EnemyDefinition Enemy => enemy; + public int Count => Mathf.Max(0, count); + public float SpawnInterval => Mathf.Max(0f, spawnInterval); + public Transform SpawnPointOverride => spawnPointOverride; + } + + [CreateAssetMenu(fileName = "WaveDefinition", menuName = "Home Protector/Wave Definition")] + public sealed class WaveDefinition : ScriptableObject + { + [SerializeField] private string id = "wave"; + [SerializeField] private string displayName = "Wave"; + [SerializeField] private float duration = 30f; + [SerializeField] private int rewardGold = 0; + [SerializeField] private List enemyGroups = new List(); + + public string Id => id; + public string DisplayName => displayName; + public float Duration => Mathf.Max(0f, duration); + public int RewardGold => rewardGold; + public IReadOnlyList EnemyGroups => enemyGroups; + + public bool IsValid(out string message) + { + if (string.IsNullOrWhiteSpace(id)) + { + message = "Wave id is empty."; + return false; + } + + if (enemyGroups == null || enemyGroups.Count == 0) + { + message = $"Wave '{id}' has no enemy groups."; + return false; + } + + for (int i = 0; i < enemyGroups.Count; i++) + { + if (enemyGroups[i].Enemy == null) + { + message = $"Wave '{id}' has an empty enemy slot at index {i}."; + return false; + } + } + + message = string.Empty; + return true; + } + } +} diff --git a/Assets/_Project/Scripts/Runtime/Data/WaveDefinition.cs.meta b/Assets/_Project/Scripts/Runtime/Data/WaveDefinition.cs.meta new file mode 100644 index 0000000..5ba78ba --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/Data/WaveDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61c5cffba0b9e1d469c3aaa9e53eda49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Scripts/Runtime/HomeProtector.Core.asmdef b/Assets/_Project/Scripts/Runtime/HomeProtector.Core.asmdef new file mode 100644 index 0000000..7769750 --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/HomeProtector.Core.asmdef @@ -0,0 +1,14 @@ +{ + "name": "HomeProtector.Core", + "rootNamespace": "HomeProtector.Core", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} diff --git a/Assets/_Project/Scripts/Runtime/HomeProtector.Core.asmdef.meta b/Assets/_Project/Scripts/Runtime/HomeProtector.Core.asmdef.meta new file mode 100644 index 0000000..bf7533c --- /dev/null +++ b/Assets/_Project/Scripts/Runtime/HomeProtector.Core.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f3bea34307754494b8720ff0fff6e7e2 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests.meta b/Assets/_Project/Tests.meta new file mode 100644 index 0000000..030ef69 --- /dev/null +++ b/Assets/_Project/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4e20a2b2de569b4fb94320481aa314b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/EditMode.meta b/Assets/_Project/Tests/EditMode.meta new file mode 100644 index 0000000..9ef6572 --- /dev/null +++ b/Assets/_Project/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82bac0289fd969541af5e7292f8af3de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/EditMode/CleanCoreDataTests.cs b/Assets/_Project/Tests/EditMode/CleanCoreDataTests.cs new file mode 100644 index 0000000..dcf54af --- /dev/null +++ b/Assets/_Project/Tests/EditMode/CleanCoreDataTests.cs @@ -0,0 +1,249 @@ +using System.Linq; +using HomeProtector.Core; +using NUnit.Framework; +using UnityEditor; +using UnityEngine; + +namespace HomeProtector.Tests.EditMode +{ + public sealed class CleanCoreDataTests + { + [Test] + public void EmptyDayWaveTableReturnsNoWaves() + { + DayWaveTable table = ScriptableObject.CreateInstance(); + + Assert.That(table.GetWavesForDay(1), Is.Empty); + UnityEngine.Object.DestroyImmediate(table); + } + + [Test] + public void GameSessionPublishesPhaseChanges() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + PhaseChangedEvent received = default; + bool eventRaised = false; + + session.PhaseChanged += evt => + { + received = evt; + eventRaised = true; + }; + + session.BeginCombat(); + + Assert.That(eventRaised, Is.True); + Assert.That(received.NewPhase, Is.EqualTo(GamePhase.Combat)); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void CompleteCombatOutsideCombatIsIgnored() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + int phaseEvents = 0; + session.PhaseChanged += _ => phaseEvents++; + + session.CompleteCombat(true); + + Assert.That(session.CurrentPhase, Is.EqualTo(GamePhase.Preparation)); + Assert.That(session.LastCombatWon, Is.False); + Assert.That(phaseEvents, Is.Zero); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void RepeatedCombatCompletionKeepsFirstOutcomeAndPublishesOnce() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + int resultEvents = 0; + session.PhaseChanged += evt => + { + if (evt.NewPhase == GamePhase.Result) + { + resultEvents++; + } + }; + + session.BeginCombat(); + session.CompleteCombat(true); + session.CompleteCombat(false); + + Assert.That(session.CurrentPhase, Is.EqualTo(GamePhase.Result)); + Assert.That(session.LastCombatWon, Is.True); + Assert.That(resultEvents, Is.EqualTo(1)); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void BeginCombatOutsidePreparationIsIgnored() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + + session.BeginCombat(); + session.CompleteCombat(true); + session.BeginCombat(); + + Assert.That(session.CurrentPhase, Is.EqualTo(GamePhase.Result)); + Assert.That(session.LastCombatWon, Is.True); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void AdvanceDayOutsideWinningResultIsIgnored() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + + session.AdvanceDay(); + + Assert.That(session.CurrentDay, Is.EqualTo(1)); + Assert.That(session.CurrentPhase, Is.EqualTo(GamePhase.Preparation)); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void AdvanceDayAfterDefeatIsIgnored() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + + session.BeginCombat(); + session.CompleteCombat(false); + session.AdvanceDay(); + + Assert.That(session.CurrentDay, Is.EqualTo(1)); + Assert.That(session.CurrentPhase, Is.EqualTo(GamePhase.Result)); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void WinningResultAdvancesDayAndBeginsPreparation() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + + session.BeginCombat(); + session.CompleteCombat(true); + session.AdvanceDay(); + + Assert.That(session.CurrentDay, Is.EqualTo(2)); + Assert.That(session.CurrentPhase, Is.EqualTo(GamePhase.Preparation)); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void DefeatCanReturnToPreparationWithoutAdvancingDay() + { + GameObject gameObject = new GameObject("GameSession Test"); + GameSession session = gameObject.AddComponent(); + + session.BeginCombat(); + session.CompleteCombat(false); + session.BeginPreparation(); + + Assert.That(session.CurrentDay, Is.EqualTo(1)); + Assert.That(session.CurrentPhase, Is.EqualTo(GamePhase.Preparation)); + Assert.That(session.LastCombatWon, Is.False); + UnityEngine.Object.DestroyImmediate(gameObject); + } + + [Test] + public void GeneratedTowerDefinitionsAreValid() + { + string[] paths = FindAssetPaths("t:TowerDefinition", "Assets/_Project/Data/Towers"); + Assert.That(paths, Is.Not.Empty); + + foreach (string path in paths) + { + TowerDefinition definition = AssetDatabase.LoadAssetAtPath(path); + Assert.That(definition, Is.Not.Null, path); + Assert.That(definition.IsValid(out string message), Is.True, $"{path}: {message}"); + for (int levelIndex = 0; levelIndex < definition.Levels.Count; levelIndex++) + { + TowerLevelDefinition level = definition.Levels[levelIndex]; + Assert.That(level, Is.Not.Null, $"{path}: tower level {levelIndex + 1} must not be null."); + Assert.That( + level.Projectile, + Is.Not.Null, + $"{path}: tower level {levelIndex + 1} must reference a projectile definition."); + Assert.That( + level.Damage, + Is.GreaterThan(0f), + $"{path}: tower level {levelIndex + 1} must have Damage greater than 0."); + } + } + } + + [Test] + public void GeneratedEnemyDefinitionsAreValid() + { + string[] paths = FindAssetPaths("t:EnemyDefinition", "Assets/_Project/Data/Enemies"); + Assert.That(paths, Is.Not.Empty); + + foreach (string path in paths) + { + EnemyDefinition definition = AssetDatabase.LoadAssetAtPath(path); + Assert.That(definition, Is.Not.Null, path); + Assert.That(definition.IsValid(out string message), Is.True, $"{path}: {message}"); + } + } + + [Test] + public void GeneratedProjectileDefinitionsAreValid() + { + string[] paths = FindAssetPaths("t:ProjectileDefinition", "Assets/_Project/Data/Projectiles"); + Assert.That(paths, Is.Not.Empty); + + foreach (string path in paths) + { + ProjectileDefinition definition = AssetDatabase.LoadAssetAtPath(path); + Assert.That(definition, Is.Not.Null, path); + Assert.That(definition.IsValid(out string message), Is.True, $"{path}: {message}"); + } + } + + [Test] + public void GeneratedWaveDefinitionsAreValid() + { + string[] paths = FindAssetPaths("t:WaveDefinition", "Assets/_Project/Data/Waves"); + Assert.That(paths, Has.Length.EqualTo(10)); + + foreach (string path in paths) + { + WaveDefinition definition = AssetDatabase.LoadAssetAtPath(path); + Assert.That(definition, Is.Not.Null, path); + Assert.That(definition.IsValid(out string message), Is.True, $"{path}: {message}"); + Assert.That(definition.Duration, Is.GreaterThan(0f), path); + Assert.That(definition.EnemyGroups.All(group => group.Count > 0), Is.True, path); + } + } + + [Test] + public void StarterDayWaveTableCoversFirstFiveDays() + { + DayWaveTable table = + AssetDatabase.LoadAssetAtPath("Assets/_Project/Data/DayWaveTable.asset"); + Assert.That(table, Is.Not.Null); + Assert.That(table.IsValid(out string message), Is.True, message); + Assert.That(table.Entries, Has.Count.EqualTo(5)); + + for (int day = 1; day <= 5; day++) + { + Assert.That(table.GetWavesForDay(day), Has.Count.EqualTo(2), $"Day {day}"); + } + } + + private static string[] FindAssetPaths(string filter, string folder) + { + return AssetDatabase.FindAssets(filter, new[] { folder }) + .Select(AssetDatabase.GUIDToAssetPath) + .OrderBy(path => path) + .ToArray(); + } + } +} diff --git a/Assets/_Project/Tests/EditMode/CleanCoreDataTests.cs.meta b/Assets/_Project/Tests/EditMode/CleanCoreDataTests.cs.meta new file mode 100644 index 0000000..cb986e2 --- /dev/null +++ b/Assets/_Project/Tests/EditMode/CleanCoreDataTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69f4b585a6690eb40acbea0d0a2106f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/EditMode/HomeProtector.Tests.EditMode.asmdef b/Assets/_Project/Tests/EditMode/HomeProtector.Tests.EditMode.asmdef new file mode 100644 index 0000000..dda1f44 --- /dev/null +++ b/Assets/_Project/Tests/EditMode/HomeProtector.Tests.EditMode.asmdef @@ -0,0 +1,21 @@ +{ + "name": "HomeProtector.Tests.EditMode", + "rootNamespace": "HomeProtector.Tests.EditMode", + "references": [ + "HomeProtector.Core" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "noEngineReferences": false +} diff --git a/Assets/_Project/Tests/EditMode/HomeProtector.Tests.EditMode.asmdef.meta b/Assets/_Project/Tests/EditMode/HomeProtector.Tests.EditMode.asmdef.meta new file mode 100644 index 0000000..317ad15 --- /dev/null +++ b/Assets/_Project/Tests/EditMode/HomeProtector.Tests.EditMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5af7eea0ededae841bd703b588107552 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/LegacyEditMode.meta b/Assets/_Project/Tests/LegacyEditMode.meta new file mode 100644 index 0000000..e5cf7f4 --- /dev/null +++ b/Assets/_Project/Tests/LegacyEditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f9aef346edbb4a80a6d14f4abf068bf8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/LegacyEditMode/Editor.meta b/Assets/_Project/Tests/LegacyEditMode/Editor.meta new file mode 100644 index 0000000..f00473a --- /dev/null +++ b/Assets/_Project/Tests/LegacyEditMode/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fec86e239da4b16aa6c1470d208dfbb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/LegacyEditMode/Editor/CombatStabilityLegacyTests.cs b/Assets/_Project/Tests/LegacyEditMode/Editor/CombatStabilityLegacyTests.cs new file mode 100644 index 0000000..7281e56 --- /dev/null +++ b/Assets/_Project/Tests/LegacyEditMode/Editor/CombatStabilityLegacyTests.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using NUnit.Framework; +using UnityEngine; + +namespace HomeProtector.Tests.LegacyEditMode +{ + public sealed class CombatStabilityLegacyTests + { + private readonly List createdObjects = new(); + + [TearDown] + public void TearDown() + { + for (int i = createdObjects.Count - 1; i >= 0; i--) + { + if (createdObjects[i] != null) + { + UnityEngine.Object.DestroyImmediate(createdObjects[i]); + } + } + + createdObjects.Clear(); + } + + [Test] + public void EnemySpawnerPrunesDestroyedEnemiesFromLiveCount() + { + EnemySpawner spawner = CreateGameObject("EnemySpawner").AddComponent(); + Enemy enemy = CreateGameObject("Enemy").AddComponent(); + List enemies = new() { enemy }; + + SetPrivateField(spawner, "enemyList", enemies); + SetPrivateField(spawner, "currentEnemyCount", 1); + + UnityEngine.Object.DestroyImmediate(enemy.gameObject); + + Assert.That(spawner.EnemyList, Is.Empty); + Assert.That(spawner.CurrentEnemyCount, Is.EqualTo(0)); + } + + [Test] + public void WaveSystemSubscribesToEnemyDestroyedOnlyOnce() + { + EnemySpawner spawner = CreateGameObject("EnemySpawner").AddComponent(); + WaveSystem waveSystem = CreateGameObject("WaveSystem").AddComponent(); + + SetPrivateField(waveSystem, "enemySpawner", spawner); + + InvokePrivateMethod(waveSystem, "SubscribeEnemySpawnerEvents"); + InvokePrivateMethod(waveSystem, "SubscribeEnemySpawnerEvents"); + + Assert.That(GetEventHandlerCount(spawner, "OnEnemyDestroyed"), Is.EqualTo(1)); + + InvokePrivateMethod(waveSystem, "UnsubscribeEnemySpawnerEvents"); + + Assert.That(GetEventHandlerCount(spawner, "OnEnemyDestroyed"), Is.EqualTo(0)); + } + + private GameObject CreateGameObject(string name) + { + GameObject gameObject = new(name); + createdObjects.Add(gameObject); + return gameObject; + } + + private static void SetPrivateField(object target, string fieldName, object value) + { + FieldInfo field = target.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic); + Assert.That(field, Is.Not.Null, $"Missing private field: {fieldName}"); + field.SetValue(target, value); + } + + private static void InvokePrivateMethod(object target, string methodName) + { + MethodInfo method = target.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic); + Assert.That(method, Is.Not.Null, $"Missing private method: {methodName}"); + method.Invoke(target, null); + } + + private static int GetEventHandlerCount(object target, string eventFieldName) + { + FieldInfo eventField = target.GetType().GetField(eventFieldName, BindingFlags.Instance | BindingFlags.NonPublic); + Assert.That(eventField, Is.Not.Null, $"Missing event backing field: {eventFieldName}"); + + MulticastDelegate handlers = eventField.GetValue(target) as MulticastDelegate; + return handlers?.GetInvocationList().Length ?? 0; + } + } +} diff --git a/Assets/_Project/Tests/LegacyEditMode/Editor/CombatStabilityLegacyTests.cs.meta b/Assets/_Project/Tests/LegacyEditMode/Editor/CombatStabilityLegacyTests.cs.meta new file mode 100644 index 0000000..f3729fd --- /dev/null +++ b/Assets/_Project/Tests/LegacyEditMode/Editor/CombatStabilityLegacyTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 173f0a5c8b2e4af9bb2bb1f5eea3c7f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/LegacyEditMode/Editor/ProjectAssetValidationTests.cs b/Assets/_Project/Tests/LegacyEditMode/Editor/ProjectAssetValidationTests.cs new file mode 100644 index 0000000..feb8003 --- /dev/null +++ b/Assets/_Project/Tests/LegacyEditMode/Editor/ProjectAssetValidationTests.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace HomeProtector.Tests.LegacyEditMode +{ + public sealed class ProjectAssetValidationTests + { + private const string LoadingScenePath = "Assets/Scenes/StartGame_Loading.unity"; + private const string PlayableScenePath = "Assets/Scenes/isometric scene.unity"; + private const string PlayableSceneName = "isometric scene"; + + private static readonly string[] PrefabSearchRoots = + { + "Assets/_Project", + "Assets/Prefabs" + }; + + [Test] + public void EnabledBuildSettingsScenesHaveNoMissingScripts() + { + List issues = new(); + string originalScenePath = SceneManager.GetActiveScene().path; + + try + { + foreach (EditorBuildSettingsScene buildScene in EditorBuildSettings.scenes.Where(scene => scene.enabled)) + { + Scene scene = EditorSceneManager.OpenScene(buildScene.path, OpenSceneMode.Single); + foreach (GameObject root in scene.GetRootGameObjects()) + { + CollectMissingScripts(root, buildScene.path, issues); + } + } + } + finally + { + if (!string.IsNullOrEmpty(originalScenePath)) + { + EditorSceneManager.OpenScene(originalScenePath, OpenSceneMode.Single); + } + } + + Assert.That(issues, Is.Empty, string.Join(Environment.NewLine, issues)); + } + + [Test] + public void LoadingSceneStartGameTargetsPlayableScene() + { + string originalScenePath = SceneManager.GetActiveScene().path; + + try + { + EditorSceneManager.OpenScene(LoadingScenePath, OpenSceneMode.Single); + + StartGame startGame = UnityEngine.Object.FindObjectOfType(); + Assert.That(startGame, Is.Not.Null, "StartGame_Loading scene must contain StartGame."); + Assert.That(startGame.TargetSceneName, Is.EqualTo(PlayableSceneName)); + + SerializedObject serializedStartGame = new(startGame); + SerializedProperty fadeManager = serializedStartGame.FindProperty("fadeManager"); + Assert.That(fadeManager, Is.Not.Null, "StartGame must serialize fadeManager."); + Assert.That(fadeManager.objectReferenceValue, Is.Not.Null, "StartGame.fadeManager must be assigned."); + + string[] enabledScenePaths = EditorBuildSettings.scenes + .Where(scene => scene.enabled) + .Select(scene => scene.path) + .ToArray(); + Assert.That(enabledScenePaths, Does.Contain(LoadingScenePath)); + Assert.That(enabledScenePaths, Does.Contain(PlayableScenePath)); + } + finally + { + if (!string.IsNullOrEmpty(originalScenePath)) + { + EditorSceneManager.OpenScene(originalScenePath, OpenSceneMode.Single); + } + } + } + + [Test] + public void MaintainedPrefabsHaveNoMissingScripts() + { + List issues = new(); + string[] prefabPaths = AssetDatabase.FindAssets("t:Prefab", PrefabSearchRoots) + .Select(AssetDatabase.GUIDToAssetPath) + .Distinct() + .OrderBy(path => path) + .ToArray(); + + foreach (string prefabPath in prefabPaths) + { + GameObject prefabRoot = PrefabUtility.LoadPrefabContents(prefabPath); + try + { + CollectMissingScripts(prefabRoot, prefabPath, issues); + } + finally + { + PrefabUtility.UnloadPrefabContents(prefabRoot); + } + } + + Assert.That(issues, Is.Empty, string.Join(Environment.NewLine, issues)); + } + + private static void CollectMissingScripts(GameObject root, string assetPath, List issues) + { + int missingCount = GameObjectUtility.GetMonoBehavioursWithMissingScriptCount(root); + if (missingCount > 0) + { + issues.Add($"{assetPath}: {GetHierarchyPath(root)} has {missingCount} missing script(s)"); + } + + foreach (Transform child in root.transform) + { + CollectMissingScripts(child.gameObject, assetPath, issues); + } + } + + private static string GetHierarchyPath(GameObject gameObject) + { + Stack names = new(); + Transform current = gameObject.transform; + while (current != null) + { + names.Push(current.name); + current = current.parent; + } + + return string.Join("/", names); + } + } +} diff --git a/Assets/_Project/Tests/LegacyEditMode/Editor/ProjectAssetValidationTests.cs.meta b/Assets/_Project/Tests/LegacyEditMode/Editor/ProjectAssetValidationTests.cs.meta new file mode 100644 index 0000000..329d77c --- /dev/null +++ b/Assets/_Project/Tests/LegacyEditMode/Editor/ProjectAssetValidationTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a5938e3180d4ba8a5bcd541086391b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/PlayMode.meta b/Assets/_Project/Tests/PlayMode.meta new file mode 100644 index 0000000..9767c63 --- /dev/null +++ b/Assets/_Project/Tests/PlayMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c04fa32be866461989c4d4b7de2b31c4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/PlayMode/HomeProtector.Tests.PlayMode.asmdef b/Assets/_Project/Tests/PlayMode/HomeProtector.Tests.PlayMode.asmdef new file mode 100644 index 0000000..5eaa057 --- /dev/null +++ b/Assets/_Project/Tests/PlayMode/HomeProtector.Tests.PlayMode.asmdef @@ -0,0 +1,19 @@ +{ + "name": "HomeProtector.Tests.PlayMode", + "rootNamespace": "HomeProtector.Tests.PlayMode", + "references": [ + "HomeProtector.Core" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "noEngineReferences": false +} diff --git a/Assets/_Project/Tests/PlayMode/HomeProtector.Tests.PlayMode.asmdef.meta b/Assets/_Project/Tests/PlayMode/HomeProtector.Tests.PlayMode.asmdef.meta new file mode 100644 index 0000000..c05b85f --- /dev/null +++ b/Assets/_Project/Tests/PlayMode/HomeProtector.Tests.PlayMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 96a9e2138e934db2a7588da1276b44cb +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/PlayMode/LegacyCombatPlayModeTests.cs b/Assets/_Project/Tests/PlayMode/LegacyCombatPlayModeTests.cs new file mode 100644 index 0000000..e7f8d05 --- /dev/null +++ b/Assets/_Project/Tests/PlayMode/LegacyCombatPlayModeTests.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.AI; +using UnityEngine.TestTools; + +namespace HomeProtector.Tests.PlayMode +{ + public sealed class LegacyCombatPlayModeTests + { + private readonly List createdObjects = new(); + + [TearDown] + public void TearDown() + { + for (int i = createdObjects.Count - 1; i >= 0; i--) + { + if (createdObjects[i] != null) + { + UnityEngine.Object.DestroyImmediate(createdObjects[i]); + } + } + + createdObjects.Clear(); + } + + [UnityTest] + public IEnumerator EnemySpawnerSpawnsEnemyAndTracksLiveCount() + { + Type targetManagerType = FindRequiredType("TargetManager"); + Type enemySpawnerType = FindRequiredType("EnemySpawner"); + Type enemyType = FindRequiredType("Enemy"); + Type enemyGroupType = FindRequiredType("EnemyGroup"); + Type waveType = FindRequiredType("Wave"); + + Component targetManager = CreateGameObject("TargetManager").AddComponent(targetManagerType); + GameObject target = CreateGameObject("Registered Goods Target"); + InvokePublicMethod(targetManager, "RegisterTarget", "Goods", target.transform); + + Component spawner = CreateGameObject("EnemySpawner").AddComponent(enemySpawnerType); + GameObject enemyPrefab = CreateGameObject("Runtime Enemy Prefab"); + enemyPrefab.AddComponent(); + enemyPrefab.AddComponent(); + enemyPrefab.AddComponent(enemyType); + + object enemyGroup = Activator.CreateInstance(enemyGroupType); + SetPublicField(enemyGroup, "enemyPrefab", enemyPrefab); + SetPublicField(enemyGroup, "count", 1); + SetPublicField(enemyGroup, "spawnTime", 0f); + SetPublicField(enemyGroup, "spawnPoint", null); + + Array enemyGroups = Array.CreateInstance(enemyGroupType, 1); + enemyGroups.SetValue(enemyGroup, 0); + + object wave = Activator.CreateInstance(waveType); + SetPublicField(wave, "waveName", "Runtime Smoke Wave"); + SetPublicField(wave, "enemyGroups", enemyGroups); + SetPublicField(wave, "delayBeforeNextWave", 0f); + SetPublicField(wave, "baseDuration", 1f); + + InvokePublicMethod(spawner, "StartWave", wave); + yield return null; + + Assert.That(GetIntProperty(spawner, "CurrentEnemyCount"), Is.EqualTo(1)); + + IList enemyList = (IList)GetProperty(spawner, "EnemyList"); + Assert.That(enemyList.Count, Is.EqualTo(1)); + + Component spawnedEnemy = enemyList[0] as Component; + Assert.That(spawnedEnemy, Is.Not.Null); + + UnityEngine.Object.Destroy(spawnedEnemy.gameObject); + yield return null; + + Assert.That(GetIntProperty(spawner, "CurrentEnemyCount"), Is.EqualTo(0)); + } + + private GameObject CreateGameObject(string name) + { + GameObject gameObject = new(name); + createdObjects.Add(gameObject); + return gameObject; + } + + private static Type FindRequiredType(string typeName) + { + Type type = AppDomain.CurrentDomain + .GetAssemblies() + .Select(assembly => assembly.GetType(typeName)) + .FirstOrDefault(candidate => candidate != null); + + Assert.That(type, Is.Not.Null, $"Could not find type {typeName}"); + return type; + } + + private static void SetPublicField(object target, string fieldName, object value) + { + FieldInfo field = target.GetType().GetField(fieldName, BindingFlags.Instance | BindingFlags.Public); + Assert.That(field, Is.Not.Null, $"Missing public field: {fieldName}"); + field.SetValue(target, value); + } + + private static object GetProperty(object target, string propertyName) + { + PropertyInfo property = target.GetType().GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public); + Assert.That(property, Is.Not.Null, $"Missing public property: {propertyName}"); + return property.GetValue(target); + } + + private static int GetIntProperty(object target, string propertyName) + { + return (int)GetProperty(target, propertyName); + } + + private static object InvokePublicMethod(object target, string methodName, params object[] args) + { + MethodInfo method = target.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public); + Assert.That(method, Is.Not.Null, $"Missing public method: {methodName}"); + return method.Invoke(target, args); + } + } +} diff --git a/Assets/_Project/Tests/PlayMode/LegacyCombatPlayModeTests.cs.meta b/Assets/_Project/Tests/PlayMode/LegacyCombatPlayModeTests.cs.meta new file mode 100644 index 0000000..14e22a5 --- /dev/null +++ b/Assets/_Project/Tests/PlayMode/LegacyCombatPlayModeTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a97d064af00d40b5972ee9ca89f5eeb1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Project/Tests/PlayMode/SceneSmokeTests.cs b/Assets/_Project/Tests/PlayMode/SceneSmokeTests.cs new file mode 100644 index 0000000..7c1b436 --- /dev/null +++ b/Assets/_Project/Tests/PlayMode/SceneSmokeTests.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Linq; +using System.Reflection; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.TestTools; + +namespace HomeProtector.Tests.PlayMode +{ + public sealed class SceneSmokeTests + { + [UnityTest] + public IEnumerator StartGameLoadingSceneTransitionsToPlayableScene() + { + yield return LoadScene("StartGame_Loading"); + + MonoBehaviour startGame = Object.FindObjectsOfType() + .FirstOrDefault(component => component.GetType().Name == "StartGame"); + Assert.That(startGame, Is.Not.Null); + + MethodInfo startMethod = startGame.GetType().GetMethod( + "StartGameFlow", + BindingFlags.Instance | BindingFlags.Public); + Assert.That(startMethod, Is.Not.Null); + + startMethod.Invoke(startGame, null); + + float timeoutAt = Time.realtimeSinceStartup + 5f; + while (SceneManager.GetActiveScene().name != "isometric scene" && Time.realtimeSinceStartup < timeoutAt) + { + yield return null; + } + + Assert.That(SceneManager.GetActiveScene().name, Is.EqualTo("isometric scene")); + } + + [UnityTest] + public IEnumerator PlayableSceneLoadsCombatEngine() + { + yield return LoadScene("isometric scene"); + + Scene activeScene = SceneManager.GetActiveScene(); + Assert.That(activeScene.name, Is.EqualTo("isometric scene")); + + string[] requiredComponentNames = + { + "WaveSystem", + "EnemySpawner", + "TowerSpawner", + "TargetManager", + "ResourceManager", + }; + MonoBehaviour[] runtimeComponents = Object.FindObjectsOfType(true); + + foreach (string componentName in requiredComponentNames) + { + Assert.That( + runtimeComponents.Any(component => component.GetType().Name == componentName), + Is.True, + $"Playable scene is missing required combat component {componentName}."); + } + } + + private static IEnumerator LoadScene(string sceneName) + { + AsyncOperation loadOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single); + Assert.That(loadOperation, Is.Not.Null); + + while (!loadOperation.isDone) + { + yield return null; + } + + yield return null; + } + + } +} diff --git a/Assets/_Project/Tests/PlayMode/SceneSmokeTests.cs.meta b/Assets/_Project/Tests/PlayMode/SceneSmokeTests.cs.meta new file mode 100644 index 0000000..c4e8345 --- /dev/null +++ b/Assets/_Project/Tests/PlayMode/SceneSmokeTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a4fdf9e1851445a8ad99346b49b84a5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Docs/Development/asset-import-manifest.json b/Docs/Development/asset-import-manifest.json new file mode 100644 index 0000000..0f49bad --- /dev/null +++ b/Docs/Development/asset-import-manifest.json @@ -0,0 +1,5082 @@ +{ + "schemaVersion": 1, + "sourceRoot": "D:/GameAsset/GameAssets/HomeProtector/UnityReadySprites", + "destinationRoot": "Assets/_Project/Art/Runtime", + "policy": { + "candidates": "Promoted *_Sheet_BNN.png plus explicit canonical single-sprite allowlist.", + "excludedPatterns": [ + "Frames", + "fullres", + "native", + "QualityRefresh", + "historical comparison revisions" + ], + "retainedExistingProjectContent": [ + "CommonSoldier", + "Monkey" + ], + "intentionalRoleSplit": [ + "Bear B20", + "BearHeavy B31" + ] + }, + "summary": { + "sheetCandidates": 103, + "sheetsIncluded": 101, + "sheetsExcluded": 2, + "singleSpritesIncluded": 22, + "totalIncluded": 123, + "includedBytes": 4983984 + }, + "entries": [ + { + "id": "currency-b18-t-hp-currency-foundation-sheet-b18", + "assetType": "spriteSheet", + "contentKind": "Currency", + "runtimeRole": "T_HP_Currency_Foundation_Sheet_B18", + "sourceRelativePath": "Currency/B18/T_HP_Currency_Foundation_Sheet_B18.png", + "destinationPath": "Assets/_Project/Art/Runtime/Currency/B18/T_HP_Currency_Foundation_Sheet_B18.png", + "batch": "B18", + "sha256": "c9dc9a0a75049874784320cb3abcd0cb3d4634f457507225dc473944e933d8fe", + "bytes": 5068, + "image": { + "width": 256, + "height": 64 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 64, + "height": 64 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-antswarm-b42-attack-t-hp-enemy-antswarm-attack-isodiagonal-sheet-b42", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_AntSwarm_Attack_IsoDiagonal_Sheet_B42", + "sourceRelativePath": "Enemies/AntSwarm/B42/Attack/T_HP_Enemy_AntSwarm_Attack_IsoDiagonal_Sheet_B42.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/AntSwarm/B42/Attack/T_HP_Enemy_AntSwarm_Attack_IsoDiagonal_Sheet_B42.png", + "batch": "B42", + "sha256": "9122367a54130b77d3d70431bc4766d3fec60db4e0d5fcba43e6af0e8615dda2", + "bytes": 25892, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-antswarm-b42-damage-t-hp-enemy-antswarm-damage-isodiagonal-sheet-b42", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_AntSwarm_Damage_IsoDiagonal_Sheet_B42", + "sourceRelativePath": "Enemies/AntSwarm/B42/Damage/T_HP_Enemy_AntSwarm_Damage_IsoDiagonal_Sheet_B42.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/AntSwarm/B42/Damage/T_HP_Enemy_AntSwarm_Damage_IsoDiagonal_Sheet_B42.png", + "batch": "B42", + "sha256": "230dac95fc0e46684435afc1c832cdf9390a0bb313246f8bddd505bf4a0fdf66", + "bytes": 21979, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-antswarm-b42-move-t-hp-enemy-antswarm-move-isodiagonal-sheet-b42", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_AntSwarm_Move_IsoDiagonal_Sheet_B42", + "sourceRelativePath": "Enemies/AntSwarm/B42/Move/T_HP_Enemy_AntSwarm_Move_IsoDiagonal_Sheet_B42.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/AntSwarm/B42/Move/T_HP_Enemy_AntSwarm_Move_IsoDiagonal_Sheet_B42.png", + "batch": "B42", + "sha256": "529da6b3c7e0b35e2726e57afb63ef69b9b9f95147bb4547525c191c2c6251f3", + "bytes": 60211, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-bear-b20-attack-t-hp-enemy-bear-attack-isodiagonal-sheet-b20", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Bear_Attack_IsoDiagonal_Sheet_B20", + "sourceRelativePath": "Enemies/Bear/B20/Attack/T_HP_Enemy_Bear_Attack_IsoDiagonal_Sheet_B20.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Bear/B20/Attack/T_HP_Enemy_Bear_Attack_IsoDiagonal_Sheet_B20.png", + "batch": "B20", + "sha256": "53f5780121d07225bc67b0d40fe698b488e06509aa1aa3c2f8cf73e6c3e2d998", + "bytes": 89492, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Canonical normal Bear role; intentionally distinct from BearHeavy B31." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-bear-b20-damage-t-hp-enemy-bear-damage-isodiagonal-sheet-b20", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Bear_Damage_IsoDiagonal_Sheet_B20", + "sourceRelativePath": "Enemies/Bear/B20/Damage/T_HP_Enemy_Bear_Damage_IsoDiagonal_Sheet_B20.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Bear/B20/Damage/T_HP_Enemy_Bear_Damage_IsoDiagonal_Sheet_B20.png", + "batch": "B20", + "sha256": "72fe7c14c26404c5e423f343f579edadf105ef2c154845f733606325f58792b5", + "bytes": 66205, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Canonical normal Bear role; intentionally distinct from BearHeavy B31." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-bear-b20-move-t-hp-enemy-bear-move-isodiagonal-sheet-b20", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Bear_Move_IsoDiagonal_Sheet_B20", + "sourceRelativePath": "Enemies/Bear/B20/Move/T_HP_Enemy_Bear_Move_IsoDiagonal_Sheet_B20.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Bear/B20/Move/T_HP_Enemy_Bear_Move_IsoDiagonal_Sheet_B20.png", + "batch": "B20", + "sha256": "bb912e2920885b803e5a5057364ef322d90e8a51fa08f32cb36cbd756e2539b7", + "bytes": 90430, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Canonical normal Bear role; intentionally distinct from BearHeavy B31." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-bearheavy-b31-attack-t-hp-enemy-bearheavy-attack-isodiagonal-sheet-b31", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_BearHeavy_Attack_IsoDiagonal_Sheet_B31", + "sourceRelativePath": "Enemies/BearHeavy/B31/Attack/T_HP_Enemy_BearHeavy_Attack_IsoDiagonal_Sheet_B31.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/BearHeavy/B31/Attack/T_HP_Enemy_BearHeavy_Attack_IsoDiagonal_Sheet_B31.png", + "batch": "B31", + "sha256": "c2196c95845ffffee177fb4504c6ec88404d482a590c3485f418f6898e06140a", + "bytes": 53451, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Canonical elite BearHeavy role; intentionally distinct from Bear B20." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-bearheavy-b31-damage-t-hp-enemy-bearheavy-damage-isodiagonal-sheet-b31", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_BearHeavy_Damage_IsoDiagonal_Sheet_B31", + "sourceRelativePath": "Enemies/BearHeavy/B31/Damage/T_HP_Enemy_BearHeavy_Damage_IsoDiagonal_Sheet_B31.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/BearHeavy/B31/Damage/T_HP_Enemy_BearHeavy_Damage_IsoDiagonal_Sheet_B31.png", + "batch": "B31", + "sha256": "1bdec09b278fe971fe85f294cda5f8d54c76c32fcaa0c1bcde8d9525d4113d2a", + "bytes": 33616, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Canonical elite BearHeavy role; intentionally distinct from Bear B20." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-bearheavy-b31-move-t-hp-enemy-bearheavy-move-isodiagonal-sheet-b31", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_BearHeavy_Move_IsoDiagonal_Sheet_B31", + "sourceRelativePath": "Enemies/BearHeavy/B31/Move/T_HP_Enemy_BearHeavy_Move_IsoDiagonal_Sheet_B31.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/BearHeavy/B31/Move/T_HP_Enemy_BearHeavy_Move_IsoDiagonal_Sheet_B31.png", + "batch": "B31", + "sha256": "1f52371215a39e0fa793bd6ee2ca3ec632e818685ce54db360459371c97c760b", + "bytes": 50334, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Canonical elite BearHeavy role; intentionally distinct from Bear B20." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-cockroach-b17-attack-t-hp-enemy-cockroach-attack-isodiagonal-sheet-b17", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Cockroach_Attack_IsoDiagonal_Sheet_B17", + "sourceRelativePath": "Enemies/Cockroach/B17/Attack/T_HP_Enemy_Cockroach_Attack_IsoDiagonal_Sheet_B17.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Cockroach/B17/Attack/T_HP_Enemy_Cockroach_Attack_IsoDiagonal_Sheet_B17.png", + "batch": "B17", + "sha256": "8316a3afe10b8324c315494ef462a7d146205b9385d85aaba6588014750f2a41", + "bytes": 59933, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-cockroach-b17-damage-t-hp-enemy-cockroach-damage-isodiagonal-sheet-b17", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Cockroach_Damage_IsoDiagonal_Sheet_B17", + "sourceRelativePath": "Enemies/Cockroach/B17/Damage/T_HP_Enemy_Cockroach_Damage_IsoDiagonal_Sheet_B17.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Cockroach/B17/Damage/T_HP_Enemy_Cockroach_Damage_IsoDiagonal_Sheet_B17.png", + "batch": "B17", + "sha256": "24d9a1070ff164c0052f93f75b4f1ce8aca7c927caef37bb24924a5888a0f2cb", + "bytes": 38848, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-cockroach-b17-move-t-hp-enemy-cockroach-move-isodiagonal-sheet-b17", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Cockroach_Move_IsoDiagonal_Sheet_B17", + "sourceRelativePath": "Enemies/Cockroach/B17/Move/T_HP_Enemy_Cockroach_Move_IsoDiagonal_Sheet_B17.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Cockroach/B17/Move/T_HP_Enemy_Cockroach_Move_IsoDiagonal_Sheet_B17.png", + "batch": "B17", + "sha256": "4a55008e4a26366c6ae09ea9508f5f9287aaca1738826d61dd4bb26585ad7c60", + "bytes": 56171, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-fox-b40-attack-t-hp-enemy-fox-attack-isodiagonal-sheet-b40", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Fox_Attack_IsoDiagonal_Sheet_B40", + "sourceRelativePath": "Enemies/Fox/B40/Attack/T_HP_Enemy_Fox_Attack_IsoDiagonal_Sheet_B40.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Fox/B40/Attack/T_HP_Enemy_Fox_Attack_IsoDiagonal_Sheet_B40.png", + "batch": "B40", + "sha256": "55a54ef105e1146f7cf6a804dade697d111ae1b294b678a2774bcd02e466ce62", + "bytes": 36132, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-fox-b40-damage-t-hp-enemy-fox-damage-isodiagonal-sheet-b40", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Fox_Damage_IsoDiagonal_Sheet_B40", + "sourceRelativePath": "Enemies/Fox/B40/Damage/T_HP_Enemy_Fox_Damage_IsoDiagonal_Sheet_B40.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Fox/B40/Damage/T_HP_Enemy_Fox_Damage_IsoDiagonal_Sheet_B40.png", + "batch": "B40", + "sha256": "b16739f9dd31aa9c5adee0c25ebf6c0694c099524f8c07054fb68e8961aa66bc", + "bytes": 36104, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-fox-b40-move-t-hp-enemy-fox-move-isodiagonal-sheet-b40", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Fox_Move_IsoDiagonal_Sheet_B40", + "sourceRelativePath": "Enemies/Fox/B40/Move/T_HP_Enemy_Fox_Move_IsoDiagonal_Sheet_B40.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Fox/B40/Move/T_HP_Enemy_Fox_Move_IsoDiagonal_Sheet_B40.png", + "batch": "B40", + "sha256": "d8da06d905e6b3480bdaa7c866c1b304cea7fb3cd121e7699bb8a3f043fa9ac5", + "bytes": 42548, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-mothpest-b43-attack-t-hp-enemy-mothpest-attack-isodiagonal-sheet-b43", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_MothPest_Attack_IsoDiagonal_Sheet_B43", + "sourceRelativePath": "Enemies/MothPest/B43/Attack/T_HP_Enemy_MothPest_Attack_IsoDiagonal_Sheet_B43.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/MothPest/B43/Attack/T_HP_Enemy_MothPest_Attack_IsoDiagonal_Sheet_B43.png", + "batch": "B43", + "sha256": "979839a551d28ab4d35f90e51572b750f776e8b4fdf464f4d59c59369beea2fe", + "bytes": 29249, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-mothpest-b43-damage-t-hp-enemy-mothpest-damage-isodiagonal-sheet-b43", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_MothPest_Damage_IsoDiagonal_Sheet_B43", + "sourceRelativePath": "Enemies/MothPest/B43/Damage/T_HP_Enemy_MothPest_Damage_IsoDiagonal_Sheet_B43.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/MothPest/B43/Damage/T_HP_Enemy_MothPest_Damage_IsoDiagonal_Sheet_B43.png", + "batch": "B43", + "sha256": "c38ba2f669ad5b8e0bff676713b1accd86294668042a2f7d802992ed4370bffa", + "bytes": 35254, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-mothpest-b43-move-t-hp-enemy-mothpest-move-isodiagonal-sheet-b43", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_MothPest_Move_IsoDiagonal_Sheet_B43", + "sourceRelativePath": "Enemies/MothPest/B43/Move/T_HP_Enemy_MothPest_Move_IsoDiagonal_Sheet_B43.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/MothPest/B43/Move/T_HP_Enemy_MothPest_Move_IsoDiagonal_Sheet_B43.png", + "batch": "B43", + "sha256": "217a3ea14daf5cb2f2d4e72576c2fb6304a68ba1485f74cb6fa081ee0001c094", + "bytes": 58000, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-mouse-b38-attack-t-hp-enemy-mouse-attack-isodiagonal-sheet-b38", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Mouse_Attack_IsoDiagonal_Sheet_B38", + "sourceRelativePath": "Enemies/Mouse/B38/Attack/T_HP_Enemy_Mouse_Attack_IsoDiagonal_Sheet_B38.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Mouse/B38/Attack/T_HP_Enemy_Mouse_Attack_IsoDiagonal_Sheet_B38.png", + "batch": "B38", + "sha256": "6cb51312a62efff744c72f1708507deb8d36aae824616838f1657af8d8e6ba18", + "bytes": 27065, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-mouse-b38-damage-t-hp-enemy-mouse-damage-isodiagonal-sheet-b38", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Mouse_Damage_IsoDiagonal_Sheet_B38", + "sourceRelativePath": "Enemies/Mouse/B38/Damage/T_HP_Enemy_Mouse_Damage_IsoDiagonal_Sheet_B38.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Mouse/B38/Damage/T_HP_Enemy_Mouse_Damage_IsoDiagonal_Sheet_B38.png", + "batch": "B38", + "sha256": "848c94a0653592a8d8b81b4b53ec2e3565dc8f46fb2fd8c7267abad6337ebd8e", + "bytes": 26741, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-mouse-b38-move-t-hp-enemy-mouse-move-isodiagonal-sheet-b38", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Mouse_Move_IsoDiagonal_Sheet_B38", + "sourceRelativePath": "Enemies/Mouse/B38/Move/T_HP_Enemy_Mouse_Move_IsoDiagonal_Sheet_B38.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Mouse/B38/Move/T_HP_Enemy_Mouse_Move_IsoDiagonal_Sheet_B38.png", + "batch": "B38", + "sha256": "24efdfb3693938a33aa9d926f92a0003477ede987bb12f2e0e1f5788787ec401", + "bytes": 32154, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-snake-b26-attack-t-hp-enemy-snake-attack-isodiagonal-sheet-b26", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Snake_Attack_IsoDiagonal_Sheet_B26", + "sourceRelativePath": "Enemies/Snake/B26/Attack/T_HP_Enemy_Snake_Attack_IsoDiagonal_Sheet_B26.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Snake/B26/Attack/T_HP_Enemy_Snake_Attack_IsoDiagonal_Sheet_B26.png", + "batch": "B26", + "sha256": "9235101eb2700f23efef2401d2bac5aeaa8523d29530cf109b165cefb7ade99f", + "bytes": 45391, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-snake-b26-damage-t-hp-enemy-snake-damage-isodiagonal-sheet-b26", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Snake_Damage_IsoDiagonal_Sheet_B26", + "sourceRelativePath": "Enemies/Snake/B26/Damage/T_HP_Enemy_Snake_Damage_IsoDiagonal_Sheet_B26.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Snake/B26/Damage/T_HP_Enemy_Snake_Damage_IsoDiagonal_Sheet_B26.png", + "batch": "B26", + "sha256": "ad52dc3a08629ceb811c02cd9a832c158e29c8d51bc2bd3c0312e1c55891364c", + "bytes": 23092, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-snake-b26-move-t-hp-enemy-snake-move-isodiagonal-sheet-b26", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Snake_Move_IsoDiagonal_Sheet_B26", + "sourceRelativePath": "Enemies/Snake/B26/Move/T_HP_Enemy_Snake_Move_IsoDiagonal_Sheet_B26.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Snake/B26/Move/T_HP_Enemy_Snake_Move_IsoDiagonal_Sheet_B26.png", + "batch": "B26", + "sha256": "ef3b94e8d5e2e05fc0e16364aeca258e5e8bf9832b1afda354a20294ad1e171c", + "bytes": 43162, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-spider-b27-attack-t-hp-enemy-spider-attack-isodiagonal-sheet-b27", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Spider_Attack_IsoDiagonal_Sheet_B27", + "sourceRelativePath": "Enemies/Spider/B27/Attack/T_HP_Enemy_Spider_Attack_IsoDiagonal_Sheet_B27.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Spider/B27/Attack/T_HP_Enemy_Spider_Attack_IsoDiagonal_Sheet_B27.png", + "batch": "B27", + "sha256": "e81d04cc5976c3f40b93fcc0861976b3082df229039a19d1236850599fb83de8", + "bytes": 83150, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-spider-b27-damage-t-hp-enemy-spider-damage-isodiagonal-sheet-b27", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Spider_Damage_IsoDiagonal_Sheet_B27", + "sourceRelativePath": "Enemies/Spider/B27/Damage/T_HP_Enemy_Spider_Damage_IsoDiagonal_Sheet_B27.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Spider/B27/Damage/T_HP_Enemy_Spider_Damage_IsoDiagonal_Sheet_B27.png", + "batch": "B27", + "sha256": "85de774f77bb2e2ae031fb603e953dabdbb19e9539bf2c986c92196f6fc0a74c", + "bytes": 45075, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-spider-b27-move-t-hp-enemy-spider-move-isodiagonal-sheet-b27", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Spider_Move_IsoDiagonal_Sheet_B27", + "sourceRelativePath": "Enemies/Spider/B27/Move/T_HP_Enemy_Spider_Move_IsoDiagonal_Sheet_B27.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Spider/B27/Move/T_HP_Enemy_Spider_Move_IsoDiagonal_Sheet_B27.png", + "batch": "B27", + "sha256": "5820ca32b15867136fe44395aacf0847ba0107b96d4fcccedbe352cc71d3aeb1", + "bytes": 83122, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-squirrel-b41-attack-t-hp-enemy-squirrel-attack-isodiagonal-sheet-b41", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Squirrel_Attack_IsoDiagonal_Sheet_B41", + "sourceRelativePath": "Enemies/Squirrel/B41/Attack/T_HP_Enemy_Squirrel_Attack_IsoDiagonal_Sheet_B41.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Squirrel/B41/Attack/T_HP_Enemy_Squirrel_Attack_IsoDiagonal_Sheet_B41.png", + "batch": "B41", + "sha256": "15a93734db822be8833e3ea46836617d13d69a5c7cb7fa153215fabdaaaaf60f", + "bytes": 40112, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-squirrel-b41-damage-t-hp-enemy-squirrel-damage-isodiagonal-sheet-b41", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Squirrel_Damage_IsoDiagonal_Sheet_B41", + "sourceRelativePath": "Enemies/Squirrel/B41/Damage/T_HP_Enemy_Squirrel_Damage_IsoDiagonal_Sheet_B41.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Squirrel/B41/Damage/T_HP_Enemy_Squirrel_Damage_IsoDiagonal_Sheet_B41.png", + "batch": "B41", + "sha256": "e847560e9c5b99baf35e65cc93f5e12f1bff45e5085bee6367046786ef72936a", + "bytes": 25824, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-squirrel-b41-move-t-hp-enemy-squirrel-move-isodiagonal-sheet-b41", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Squirrel_Move_IsoDiagonal_Sheet_B41", + "sourceRelativePath": "Enemies/Squirrel/B41/Move/T_HP_Enemy_Squirrel_Move_IsoDiagonal_Sheet_B41.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Squirrel/B41/Move/T_HP_Enemy_Squirrel_Move_IsoDiagonal_Sheet_B41.png", + "batch": "B41", + "sha256": "412de66be3ec3d48b69a2f5be92e3017efb1a6959e30bd147b0856aee8cde69d", + "bytes": 36780, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-wasp-b39-attack-t-hp-enemy-wasp-attack-isodiagonal-sheet-b39", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Wasp_Attack_IsoDiagonal_Sheet_B39", + "sourceRelativePath": "Enemies/Wasp/B39/Attack/T_HP_Enemy_Wasp_Attack_IsoDiagonal_Sheet_B39.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Wasp/B39/Attack/T_HP_Enemy_Wasp_Attack_IsoDiagonal_Sheet_B39.png", + "batch": "B39", + "sha256": "6cbbdbc6bb058867801f19fbc022f7134cc6453b016755b4d16f1396328da55e", + "bytes": 47880, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-wasp-b39-damage-t-hp-enemy-wasp-damage-isodiagonal-sheet-b39", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Wasp_Damage_IsoDiagonal_Sheet_B39", + "sourceRelativePath": "Enemies/Wasp/B39/Damage/T_HP_Enemy_Wasp_Damage_IsoDiagonal_Sheet_B39.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Wasp/B39/Damage/T_HP_Enemy_Wasp_Damage_IsoDiagonal_Sheet_B39.png", + "batch": "B39", + "sha256": "7fe59eb1c613316df61caadbcb8c8fb9fbfc3a3f42cb863a8140fea69ed41ecf", + "bytes": 27626, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-wasp-b39-move-t-hp-enemy-wasp-move-isodiagonal-sheet-b39", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_Wasp_Move_IsoDiagonal_Sheet_B39", + "sourceRelativePath": "Enemies/Wasp/B39/Move/T_HP_Enemy_Wasp_Move_IsoDiagonal_Sheet_B39.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/Wasp/B39/Move/T_HP_Enemy_Wasp_Move_IsoDiagonal_Sheet_B39.png", + "batch": "B39", + "sha256": "1a2def9050da89492ebade1f2f461972fcade29656a536395b432a7da36c66b8", + "bytes": 28826, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-wildboar-b25-attack-t-hp-enemy-wildboar-attack-isodiagonal-sheet-b25", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_WildBoar_Attack_IsoDiagonal_Sheet_B25", + "sourceRelativePath": "Enemies/WildBoar/B25/Attack/T_HP_Enemy_WildBoar_Attack_IsoDiagonal_Sheet_B25.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/WildBoar/B25/Attack/T_HP_Enemy_WildBoar_Attack_IsoDiagonal_Sheet_B25.png", + "batch": "B25", + "sha256": "82c55a8335646cdcab37f58cac0c71c3fed15b09e995eec0eed779d8cb0f19cb", + "bytes": 93979, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-wildboar-b25-damage-t-hp-enemy-wildboar-damage-isodiagonal-sheet-b25", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_WildBoar_Damage_IsoDiagonal_Sheet_B25", + "sourceRelativePath": "Enemies/WildBoar/B25/Damage/T_HP_Enemy_WildBoar_Damage_IsoDiagonal_Sheet_B25.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/WildBoar/B25/Damage/T_HP_Enemy_WildBoar_Damage_IsoDiagonal_Sheet_B25.png", + "batch": "B25", + "sha256": "db782c938e472dcee15bf7b87091734d43a9f390b0f90587d65b079d439c1b46", + "bytes": 63006, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "enemies-wildboar-b25-move-t-hp-enemy-wildboar-move-isodiagonal-sheet-b25", + "assetType": "spriteSheet", + "contentKind": "Enemies", + "runtimeRole": "T_HP_Enemy_WildBoar_Move_IsoDiagonal_Sheet_B25", + "sourceRelativePath": "Enemies/WildBoar/B25/Move/T_HP_Enemy_WildBoar_Move_IsoDiagonal_Sheet_B25.png", + "destinationPath": "Assets/_Project/Art/Runtime/Enemies/WildBoar/B25/Move/T_HP_Enemy_WildBoar_Move_IsoDiagonal_Sheet_B25.png", + "batch": "B25", + "sha256": "e9001c01ec683c5ff954d7d0f162025c340246960ec9caed3878c95c0f051af0", + "bytes": 96428, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Move", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-autumn-b45-groundoverlays-t-hp-overlay-season-autumn-groundoverlays-sheet-b45", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Autumn_GroundOverlays_Sheet_B45", + "sourceRelativePath": "Overlays/Seasonal/Autumn/B45/GroundOverlays/T_HP_Overlay_Season_Autumn_GroundOverlays_Sheet_B45.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Autumn/B45/GroundOverlays/T_HP_Overlay_Season_Autumn_GroundOverlays_Sheet_B45.png", + "batch": "B45", + "sha256": "fbef19d032b8f9e49c08be3d328f5eb17a2a92d20d69f538831edd17afe5af7c", + "bytes": 32100, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-autumn-b45-houseoverlays-t-hp-overlay-season-autumn-houseoverlays-sheet-b45", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Autumn_HouseOverlays_Sheet_B45", + "sourceRelativePath": "Overlays/Seasonal/Autumn/B45/HouseOverlays/T_HP_Overlay_Season_Autumn_HouseOverlays_Sheet_B45.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Autumn/B45/HouseOverlays/T_HP_Overlay_Season_Autumn_HouseOverlays_Sheet_B45.png", + "batch": "B45", + "sha256": "fae1d2bde6cf5fccbf08ccffca95bb99e9469013a849657a33c894c8d6fbed91", + "bytes": 27218, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-spring-b44-groundoverlays-t-hp-overlay-season-spring-groundoverlays-sheet-b44", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Spring_GroundOverlays_Sheet_B44", + "sourceRelativePath": "Overlays/Seasonal/Spring/B44/GroundOverlays/T_HP_Overlay_Season_Spring_GroundOverlays_Sheet_B44.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Spring/B44/GroundOverlays/T_HP_Overlay_Season_Spring_GroundOverlays_Sheet_B44.png", + "batch": "B44", + "sha256": "1be2d2ccff957a479199ef8cfe021c6b4e66ba45726c4c5fdb3517fecdbb91d5", + "bytes": 28928, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-spring-b44-houseoverlays-t-hp-overlay-season-spring-houseoverlays-sheet-b44", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Spring_HouseOverlays_Sheet_B44", + "sourceRelativePath": "Overlays/Seasonal/Spring/B44/HouseOverlays/T_HP_Overlay_Season_Spring_HouseOverlays_Sheet_B44.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Spring/B44/HouseOverlays/T_HP_Overlay_Season_Spring_HouseOverlays_Sheet_B44.png", + "batch": "B44", + "sha256": "4813833bed08f36840f4a8973aa8d10755aef629bcfdbdb76fd8f82220caeb7d", + "bytes": 28564, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-summer-b47-groundoverlays-t-hp-overlay-season-summer-groundoverlays-sheet-b47", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Summer_GroundOverlays_Sheet_B47", + "sourceRelativePath": "Overlays/Seasonal/Summer/B47/GroundOverlays/T_HP_Overlay_Season_Summer_GroundOverlays_Sheet_B47.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Summer/B47/GroundOverlays/T_HP_Overlay_Season_Summer_GroundOverlays_Sheet_B47.png", + "batch": "B47", + "sha256": "316163f0cfa6933ad80bb1ebfe308499ece91e0f96ec5b1409f9a58c9237231f", + "bytes": 37691, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-summer-b47-houseoverlays-t-hp-overlay-season-summer-houseoverlays-sheet-b47", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Summer_HouseOverlays_Sheet_B47", + "sourceRelativePath": "Overlays/Seasonal/Summer/B47/HouseOverlays/T_HP_Overlay_Season_Summer_HouseOverlays_Sheet_B47.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Summer/B47/HouseOverlays/T_HP_Overlay_Season_Summer_HouseOverlays_Sheet_B47.png", + "batch": "B47", + "sha256": "11a0cb20f9a7648b387043c3955871bd79c520c1b18873fee33788226f02559e", + "bytes": 25734, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-winter-b46-groundoverlays-t-hp-overlay-season-winter-groundoverlays-sheet-b46", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Winter_GroundOverlays_Sheet_B46", + "sourceRelativePath": "Overlays/Seasonal/Winter/B46/GroundOverlays/T_HP_Overlay_Season_Winter_GroundOverlays_Sheet_B46.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Winter/B46/GroundOverlays/T_HP_Overlay_Season_Winter_GroundOverlays_Sheet_B46.png", + "batch": "B46", + "sha256": "8b13d95689cc55adb3476882767eb016f501e797e2e748ec0b04f97a207e1ad6", + "bytes": 27844, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "overlays-seasonal-winter-b46-houseoverlays-t-hp-overlay-season-winter-houseoverlays-sheet-b46", + "assetType": "spriteSheet", + "contentKind": "Overlays", + "runtimeRole": "T_HP_Overlay_Season_Winter_HouseOverlays_Sheet_B46", + "sourceRelativePath": "Overlays/Seasonal/Winter/B46/HouseOverlays/T_HP_Overlay_Season_Winter_HouseOverlays_Sheet_B46.png", + "destinationPath": "Assets/_Project/Art/Runtime/Overlays/Seasonal/Winter/B46/HouseOverlays/T_HP_Overlay_Season_Winter_HouseOverlays_Sheet_B46.png", + "batch": "B46", + "sha256": "4dda920828d436c8e43878fcb195a3b9d1023c3bf80b55c572e928698d0f9676", + "bytes": 27099, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-attack-b10-t-hp-player-attack-isodiagonal-sheet-b10", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_Attack_IsoDiagonal_Sheet_B10", + "sourceRelativePath": "Player/Attack/B10/T_HP_Player_Attack_IsoDiagonal_Sheet_B10.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/Attack/B10/T_HP_Player_Attack_IsoDiagonal_Sheet_B10.png", + "batch": "B10", + "sha256": "93395118708fcbf2c2235dc2d130d294bbee373c7d8cbfb8708b66f93a1feb08", + "bytes": 35882, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-bufftower-b12-t-hp-player-bufftower-repair-isodiagonal-sheet-b12", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_BuffTower_Repair_IsoDiagonal_Sheet_B12", + "sourceRelativePath": "Player/BuffTower/B12/T_HP_Player_BuffTower_Repair_IsoDiagonal_Sheet_B12.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/BuffTower/B12/T_HP_Player_BuffTower_Repair_IsoDiagonal_Sheet_B12.png", + "batch": "B12", + "sha256": "ad88cf0200e11bb6a4cc65432622e7a5ee436f033f63fd5a503ce9aea5579803", + "bytes": 70196, + "image": { + "width": 768, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 4, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "BuffTower", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-damage-b14-t-hp-player-damage-isodiagonal-sheet-b14", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_Damage_IsoDiagonal_Sheet_B14", + "sourceRelativePath": "Player/Damage/B14/T_HP_Player_Damage_IsoDiagonal_Sheet_B14.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/Damage/B14/T_HP_Player_Damage_IsoDiagonal_Sheet_B14.png", + "batch": "B14", + "sha256": "70974a0a183c16144a5ceac03514a723b162f9953e7e72a7baccf3daadfe0837", + "bytes": 24787, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-idle-b09-t-hp-player-idle-isodiagonal-sheet-b09", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_Idle_IsoDiagonal_Sheet_B09", + "sourceRelativePath": "Player/Idle/B09/T_HP_Player_Idle_IsoDiagonal_Sheet_B09.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/Idle/B09/T_HP_Player_Idle_IsoDiagonal_Sheet_B09.png", + "batch": "B09", + "sha256": "0b0f355b6abb276c00798898e5f36d196472b955d2c3c8fa13fd8f44333ff5fe", + "bytes": 22070, + "image": { + "width": 384, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 4, + "rows": 4, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Idle", + "frameRate": 4, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-sleep-b11-t-hp-player-sleep-sheet-b11", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_Sleep_Sheet_B11", + "sourceRelativePath": "Player/Sleep/B11/T_HP_Player_Sleep_Sheet_B11.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/Sleep/B11/T_HP_Player_Sleep_Sheet_B11.png", + "batch": "B11", + "sha256": "4cdbe81fb332ee4efc66daf9ac864d06e9ca9cb0e479db85b5de0c6c7624b190", + "bytes": 12032, + "image": { + "width": 576, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 1, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Sleep", + "frameRate": 4, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-walk-b05-t-hp-player-walk-sheet-b05", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_Walk_Sheet_B05", + "sourceRelativePath": "Player/Walk/B05/T_HP_Player_Walk_Sheet_B05.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/Walk/B05/T_HP_Player_Walk_Sheet_B05.png", + "batch": "B05", + "sha256": "ea318812495724617e8441a73f3a0588a8cc402200e621b198687900487680e3", + "bytes": 155832, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "excluded", + "reason": "Historical Player Walk revision; B08 is canonical." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Walk", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-walk-b06-t-hp-player-walk-sheet-b06", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_Walk_Sheet_B06", + "sourceRelativePath": "Player/Walk/B06/T_HP_Player_Walk_Sheet_B06.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/Walk/B06/T_HP_Player_Walk_Sheet_B06.png", + "batch": "B06", + "sha256": "3345f2cf167a8926c3800d921174f70b437baacd5d32923dddec3e296e16ae8b", + "bytes": 32028, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "excluded", + "reason": "Historical Player Walk revision; B08 is canonical." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Walk", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "player-walk-b08-t-hp-player-walk-isodiagonal-sheet-b08", + "assetType": "spriteSheet", + "contentKind": "Player", + "runtimeRole": "T_HP_Player_Walk_IsoDiagonal_Sheet_B08", + "sourceRelativePath": "Player/Walk/B08/T_HP_Player_Walk_IsoDiagonal_Sheet_B08.png", + "destinationPath": "Assets/_Project/Art/Runtime/Player/Walk/B08/T_HP_Player_Walk_IsoDiagonal_Sheet_B08.png", + "batch": "B08", + "sha256": "74da4532c992c07664ef552a63bfed2b9bd4301bf624d3f2f873561afdf5be23", + "bytes": 29611, + "image": { + "width": 576, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 32, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Walk", + "frameRate": 8, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-detachedhouse-b32-porchyarddecor-t-hp-prop-detachedhouse-porchyarddecor-sheet-b32", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_DetachedHouse_PorchYardDecor_Sheet_B32", + "sourceRelativePath": "Props/Environment/DetachedHouse/B32/PorchYardDecor/T_HP_Prop_DetachedHouse_PorchYardDecor_Sheet_B32.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/DetachedHouse/B32/PorchYardDecor/T_HP_Prop_DetachedHouse_PorchYardDecor_Sheet_B32.png", + "batch": "B32", + "sha256": "5e19e12ef60eaf57782798f001ed6eeff8e435f7120ec342177ae4a1f1ca3217", + "bytes": 45104, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-detachedhouse-b33-windowwalldecor-t-hp-prop-detachedhouse-windowwalldecor-sheet-b33", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_DetachedHouse_WindowWallDecor_Sheet_B33", + "sourceRelativePath": "Props/Environment/DetachedHouse/B33/WindowWallDecor/T_HP_Prop_DetachedHouse_WindowWallDecor_Sheet_B33.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/DetachedHouse/B33/WindowWallDecor/T_HP_Prop_DetachedHouse_WindowWallDecor_Sheet_B33.png", + "batch": "B33", + "sha256": "c84063f9c44aff0590230974077da110aa4d4e7c6ca174a925dbed80a83dfda7", + "bytes": 44847, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-detachedhouse-b34-cafeoutdoorcharm-t-hp-prop-detachedhouse-cafeoutdoorcharm-sheet-b34", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_DetachedHouse_CafeOutdoorCharm_Sheet_B34", + "sourceRelativePath": "Props/Environment/DetachedHouse/B34/CafeOutdoorCharm/T_HP_Prop_DetachedHouse_CafeOutdoorCharm_Sheet_B34.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/DetachedHouse/B34/CafeOutdoorCharm/T_HP_Prop_DetachedHouse_CafeOutdoorCharm_Sheet_B34.png", + "batch": "B34", + "sha256": "ed1ef613928abd8bb246b4921a7c28a4538749bf6c9e66f9cc819a6b9e0b8695", + "bytes": 43063, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-oldcabin-b24-t-hp-prop-oldcabin-expansion-sheet-b24", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_OldCabin_Expansion_Sheet_B24", + "sourceRelativePath": "Props/Environment/OldCabin/B24/T_HP_Prop_OldCabin_Expansion_Sheet_B24.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/OldCabin/B24/T_HP_Prop_OldCabin_Expansion_Sheet_B24.png", + "batch": "B24", + "sha256": "51c14773902eb1bb40cbbb35b141853220ca62d0b38b5bfd7f09026c0c0daca5", + "bytes": 61001, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-seasonal-autumn-b45-outdoorprops-t-hp-prop-season-autumn-outdoorprops-sheet-b45", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_Season_Autumn_OutdoorProps_Sheet_B45", + "sourceRelativePath": "Props/Environment/Seasonal/Autumn/B45/OutdoorProps/T_HP_Prop_Season_Autumn_OutdoorProps_Sheet_B45.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/Seasonal/Autumn/B45/OutdoorProps/T_HP_Prop_Season_Autumn_OutdoorProps_Sheet_B45.png", + "batch": "B45", + "sha256": "0b8f217f42c9513a6867b48701df64cbe209c149bbd10fd126134e15a82dffa8", + "bytes": 38177, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-seasonal-spring-b44-outdoorprops-t-hp-prop-season-spring-outdoorprops-sheet-b44", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_Season_Spring_OutdoorProps_Sheet_B44", + "sourceRelativePath": "Props/Environment/Seasonal/Spring/B44/OutdoorProps/T_HP_Prop_Season_Spring_OutdoorProps_Sheet_B44.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/Seasonal/Spring/B44/OutdoorProps/T_HP_Prop_Season_Spring_OutdoorProps_Sheet_B44.png", + "batch": "B44", + "sha256": "398deb1ba86e6708ec14f92e96c9ce183eb523b29513e3ad62b9aead11487738", + "bytes": 37009, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-seasonal-summer-b47-outdoorprops-t-hp-prop-season-summer-outdoorprops-sheet-b47", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_Season_Summer_OutdoorProps_Sheet_B47", + "sourceRelativePath": "Props/Environment/Seasonal/Summer/B47/OutdoorProps/T_HP_Prop_Season_Summer_OutdoorProps_Sheet_B47.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/Seasonal/Summer/B47/OutdoorProps/T_HP_Prop_Season_Summer_OutdoorProps_Sheet_B47.png", + "batch": "B47", + "sha256": "7961bd0147bb41b48e55fa0e9b429c69aaf650c1fa276c215a1f32934e211151", + "bytes": 41668, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "props-environment-seasonal-winter-b46-outdoorprops-t-hp-prop-season-winter-outdoorprops-sheet-b46", + "assetType": "spriteSheet", + "contentKind": "Props", + "runtimeRole": "T_HP_Prop_Season_Winter_OutdoorProps_Sheet_B46", + "sourceRelativePath": "Props/Environment/Seasonal/Winter/B46/OutdoorProps/T_HP_Prop_Season_Winter_OutdoorProps_Sheet_B46.png", + "destinationPath": "Assets/_Project/Art/Runtime/Props/Environment/Seasonal/Winter/B46/OutdoorProps/T_HP_Prop_Season_Winter_OutdoorProps_Sheet_B46.png", + "batch": "B46", + "sha256": "94f4cec2b8eab3d3955e760d0b30deeeea58816737d4d9b0f5cb810764ab91b4", + "bytes": 35550, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-b18-t-hp-tile-environment-foundation-sheet-b18", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_Environment_Foundation_Sheet_B18", + "sourceRelativePath": "Tiles/Environment/B18/T_HP_Tile_Environment_Foundation_Sheet_B18.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/B18/T_HP_Tile_Environment_Foundation_Sheet_B18.png", + "batch": "B18", + "sha256": "c29681198a7c80d727f5d05035515448ec49c3790c113e7895774772645a1492", + "bytes": 48643, + "image": { + "width": 512, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 3, + "pixelsPerUnit": 128, + "pivot": "MixedBySlice", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-detachedhouse-b29-roofmodules-t-hp-tile-detachedhouse-roofmodules-sheet-b29", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_DetachedHouse_RoofModules_Sheet_B29", + "sourceRelativePath": "Tiles/Environment/DetachedHouse/B29/RoofModules/T_HP_Tile_DetachedHouse_RoofModules_Sheet_B29.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/DetachedHouse/B29/RoofModules/T_HP_Tile_DetachedHouse_RoofModules_Sheet_B29.png", + "batch": "B29", + "sha256": "485b9a6b72afe384ce03639987924c25d1a83825341a2156ff3ca5480df42c33", + "bytes": 24113, + "image": { + "width": 512, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-detachedhouse-b29-wallexterior-t-hp-tile-detachedhouse-wallexterior-sheet-b29", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_DetachedHouse_WallExterior_Sheet_B29", + "sourceRelativePath": "Tiles/Environment/DetachedHouse/B29/WallExterior/T_HP_Tile_DetachedHouse_WallExterior_Sheet_B29.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/DetachedHouse/B29/WallExterior/T_HP_Tile_DetachedHouse_WallExterior_Sheet_B29.png", + "batch": "B29", + "sha256": "40bfd8b040f2e6a83ba027d21fcc69448809fc05c06eb3f2f4b29b002a8f2f6f", + "bytes": 39901, + "image": { + "width": 512, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 3, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-oldcabin-b24-t-hp-tile-oldcabin-expansion-sheet-b24", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_OldCabin_Expansion_Sheet_B24", + "sourceRelativePath": "Tiles/Environment/OldCabin/B24/T_HP_Tile_OldCabin_Expansion_Sheet_B24.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/OldCabin/B24/T_HP_Tile_OldCabin_Expansion_Sheet_B24.png", + "batch": "B24", + "sha256": "3b7e56f2d7e83fcec4a9170df39843597783947348b87ad18c50ef18afa8994d", + "bytes": 78517, + "image": { + "width": 512, + "height": 384 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 3, + "pixelsPerUnit": 128, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-seasonal-autumn-b45-groundtiles-t-hp-tile-season-autumn-groundtiles-sheet-b45", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_Season_Autumn_GroundTiles_Sheet_B45", + "sourceRelativePath": "Tiles/Environment/Seasonal/Autumn/B45/GroundTiles/T_HP_Tile_Season_Autumn_GroundTiles_Sheet_B45.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/Seasonal/Autumn/B45/GroundTiles/T_HP_Tile_Season_Autumn_GroundTiles_Sheet_B45.png", + "batch": "B45", + "sha256": "8c5ba46a77451c7d0e6a6763230dfa9c9f1333c548ab2c318d7bb6215cae9a1f", + "bytes": 35271, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-seasonal-spring-b44-groundtiles-t-hp-tile-season-spring-groundtiles-sheet-b44", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_Season_Spring_GroundTiles_Sheet_B44", + "sourceRelativePath": "Tiles/Environment/Seasonal/Spring/B44/GroundTiles/T_HP_Tile_Season_Spring_GroundTiles_Sheet_B44.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/Seasonal/Spring/B44/GroundTiles/T_HP_Tile_Season_Spring_GroundTiles_Sheet_B44.png", + "batch": "B44", + "sha256": "a67081a809f6f26a3c88c8a56bc42440aef500f013d2dccc857b1933ee8a8e32", + "bytes": 35235, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-seasonal-summer-b47-groundtiles-t-hp-tile-season-summer-groundtiles-sheet-b47", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_Season_Summer_GroundTiles_Sheet_B47", + "sourceRelativePath": "Tiles/Environment/Seasonal/Summer/B47/GroundTiles/T_HP_Tile_Season_Summer_GroundTiles_Sheet_B47.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/Seasonal/Summer/B47/GroundTiles/T_HP_Tile_Season_Summer_GroundTiles_Sheet_B47.png", + "batch": "B47", + "sha256": "9cc7da8522811a0e6b8c4753a8ba7bccb03c5253b3641d97db7252a8f0a48019", + "bytes": 36244, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "tiles-environment-seasonal-winter-b46-groundtiles-t-hp-tile-season-winter-groundtiles-sheet-b46", + "assetType": "spriteSheet", + "contentKind": "Tiles", + "runtimeRole": "T_HP_Tile_Season_Winter_GroundTiles_Sheet_B46", + "sourceRelativePath": "Tiles/Environment/Seasonal/Winter/B46/GroundTiles/T_HP_Tile_Season_Winter_GroundTiles_Sheet_B46.png", + "destinationPath": "Assets/_Project/Art/Runtime/Tiles/Environment/Seasonal/Winter/B46/GroundTiles/T_HP_Tile_Season_Winter_GroundTiles_Sheet_B46.png", + "batch": "B46", + "sha256": "ab406465145b6c69f428e6aa113eb6279a763f5760e1222f7db6c16c2a007e6b", + "bytes": 35561, + "image": { + "width": 384, + "height": 256 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 2, + "pixelsPerUnit": 128, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-bookshelf-attack-b21-t-hp-tower-bookshelf-lv01-attack-isodiagonal-sheet-b21", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_BookShelf_Lv01_Attack_IsoDiagonal_Sheet_B21", + "sourceRelativePath": "Towers/BookShelf/Attack/B21/T_HP_Tower_BookShelf_Lv01_Attack_IsoDiagonal_Sheet_B21.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/BookShelf/Attack/B21/T_HP_Tower_BookShelf_Lv01_Attack_IsoDiagonal_Sheet_B21.png", + "batch": "B21", + "sha256": "1c2ada6408bc6d60838e5e1ea03fd5b7d54576e56a43d7f68bc0ce7366009ffa", + "bytes": 152938, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-bookshelf-attack-b48-t-hp-tower-bookshelf-lv02-attack-isodiagonal-sheet-b48", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_BookShelf_Lv02_Attack_IsoDiagonal_Sheet_B48", + "sourceRelativePath": "Towers/BookShelf/Attack/B48/T_HP_Tower_BookShelf_Lv02_Attack_IsoDiagonal_Sheet_B48.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/BookShelf/Attack/B48/T_HP_Tower_BookShelf_Lv02_Attack_IsoDiagonal_Sheet_B48.png", + "batch": "B48", + "sha256": "5584f735b28ffa18db2776c149c27ae05268dc54b24abcb002eabcc3e14088e1", + "bytes": 155201, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-bookshelf-attack-b48-t-hp-tower-bookshelf-lv03-attack-isodiagonal-sheet-b48", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_BookShelf_Lv03_Attack_IsoDiagonal_Sheet_B48", + "sourceRelativePath": "Towers/BookShelf/Attack/B48/T_HP_Tower_BookShelf_Lv03_Attack_IsoDiagonal_Sheet_B48.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/BookShelf/Attack/B48/T_HP_Tower_BookShelf_Lv03_Attack_IsoDiagonal_Sheet_B48.png", + "batch": "B48", + "sha256": "fe46fb5c142f5eeb0a6f7ba6afaca93644cf4bfc77523223288ab29ab054dbc8", + "bytes": 155522, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-cooldryer-attack-b22-t-hp-tower-cooldryer-lv01-attack-isodiagonal-sheet-b22", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_CoolDryer_Lv01_Attack_IsoDiagonal_Sheet_B22", + "sourceRelativePath": "Towers/CoolDryer/Attack/B22/T_HP_Tower_CoolDryer_Lv01_Attack_IsoDiagonal_Sheet_B22.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/CoolDryer/Attack/B22/T_HP_Tower_CoolDryer_Lv01_Attack_IsoDiagonal_Sheet_B22.png", + "batch": "B22", + "sha256": "b34c839ab95e471824420216341251c2c8a561b1158e76fb1d35cba5607a9a67", + "bytes": 171261, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-cooldryer-attack-b48-t-hp-tower-cooldryer-lv02-attack-isodiagonal-sheet-b48", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_CoolDryer_Lv02_Attack_IsoDiagonal_Sheet_B48", + "sourceRelativePath": "Towers/CoolDryer/Attack/B48/T_HP_Tower_CoolDryer_Lv02_Attack_IsoDiagonal_Sheet_B48.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/CoolDryer/Attack/B48/T_HP_Tower_CoolDryer_Lv02_Attack_IsoDiagonal_Sheet_B48.png", + "batch": "B48", + "sha256": "ed8a85c9da148ecf979c3e2e9b7c3f8af3229dbf8b0f45a20756dff82f92a9ce", + "bytes": 157248, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-cooldryer-attack-b48-t-hp-tower-cooldryer-lv03-attack-isodiagonal-sheet-b48", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_CoolDryer_Lv03_Attack_IsoDiagonal_Sheet_B48", + "sourceRelativePath": "Towers/CoolDryer/Attack/B48/T_HP_Tower_CoolDryer_Lv03_Attack_IsoDiagonal_Sheet_B48.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/CoolDryer/Attack/B48/T_HP_Tower_CoolDryer_Lv03_Attack_IsoDiagonal_Sheet_B48.png", + "batch": "B48", + "sha256": "5d49ffe9b3288fbfa841d04c4d2fa169a73036874d8c38fb6617aefb605ef7d0", + "bytes": 152545, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-dryer-attack-b16-t-hp-tower-dryer-lv01-attack-isodiagonal-sheet-b16", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_Dryer_Lv01_Attack_IsoDiagonal_Sheet_B16", + "sourceRelativePath": "Towers/Dryer/Attack/B16/T_HP_Tower_Dryer_Lv01_Attack_IsoDiagonal_Sheet_B16.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/Dryer/Attack/B16/T_HP_Tower_Dryer_Lv01_Attack_IsoDiagonal_Sheet_B16.png", + "batch": "B16", + "sha256": "c313d90239ee08ef4723b1499a5beead23678a2f6a96b26b6b662ed6be142932", + "bytes": 81436, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-dryer-attack-b30-t-hp-tower-dryer-lv02-attack-isodiagonal-sheet-b30", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_Dryer_Lv02_Attack_IsoDiagonal_Sheet_B30", + "sourceRelativePath": "Towers/Dryer/Attack/B30/T_HP_Tower_Dryer_Lv02_Attack_IsoDiagonal_Sheet_B30.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/Dryer/Attack/B30/T_HP_Tower_Dryer_Lv02_Attack_IsoDiagonal_Sheet_B30.png", + "batch": "B30", + "sha256": "25b16acafc870371c2682c2abf49bd154b66a231b15b3862fa51b92d16bf617b", + "bytes": 79023, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-dryer-attack-b30-t-hp-tower-dryer-lv03-attack-isodiagonal-sheet-b30", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_Dryer_Lv03_Attack_IsoDiagonal_Sheet_B30", + "sourceRelativePath": "Towers/Dryer/Attack/B30/T_HP_Tower_Dryer_Lv03_Attack_IsoDiagonal_Sheet_B30.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/Dryer/Attack/B30/T_HP_Tower_Dryer_Lv03_Attack_IsoDiagonal_Sheet_B30.png", + "batch": "B30", + "sha256": "3f2af46e8e8305856113eff9bdeb2864f9234198222583229f6c8b9e6299042c", + "bytes": 83022, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-microwavetower-attack-b28-t-hp-tower-microwavetower-lv01-attack-isodiagonal-sheet-b28", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_MicrowaveTower_Lv01_Attack_IsoDiagonal_Sheet_B28", + "sourceRelativePath": "Towers/MicrowaveTower/Attack/B28/T_HP_Tower_MicrowaveTower_Lv01_Attack_IsoDiagonal_Sheet_B28.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/MicrowaveTower/Attack/B28/T_HP_Tower_MicrowaveTower_Lv01_Attack_IsoDiagonal_Sheet_B28.png", + "batch": "B28", + "sha256": "2de914ed865f6e43ab32d51a2cb30f7530393b0432322e86f686b7b43d7885ca", + "bytes": 71513, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-microwavetower-attack-b49-t-hp-tower-microwavetower-lv02-attack-isodiagonal-sheet-b49", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_MicrowaveTower_Lv02_Attack_IsoDiagonal_Sheet_B49", + "sourceRelativePath": "Towers/MicrowaveTower/Attack/B49/T_HP_Tower_MicrowaveTower_Lv02_Attack_IsoDiagonal_Sheet_B49.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/MicrowaveTower/Attack/B49/T_HP_Tower_MicrowaveTower_Lv02_Attack_IsoDiagonal_Sheet_B49.png", + "batch": "B49", + "sha256": "2e47d3e2f3d37cd089516b6bc34ce8f06755e7fa58e8b5c99d32ea3625d7dbd1", + "bytes": 91413, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-microwavetower-attack-b49-t-hp-tower-microwavetower-lv03-attack-isodiagonal-sheet-b49", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_MicrowaveTower_Lv03_Attack_IsoDiagonal_Sheet_B49", + "sourceRelativePath": "Towers/MicrowaveTower/Attack/B49/T_HP_Tower_MicrowaveTower_Lv03_Attack_IsoDiagonal_Sheet_B49.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/MicrowaveTower/Attack/B49/T_HP_Tower_MicrowaveTower_Lv03_Attack_IsoDiagonal_Sheet_B49.png", + "batch": "B49", + "sha256": "42370be4414444ec19511bfe9c2e5d331752ef51e3f01d21af37442fd4cf9ebb", + "bytes": 94415, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-microwavetower-b28-static-t-hp-tower-microwavetower-levels-sheet-b28", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_MicrowaveTower_Levels_Sheet_B28", + "sourceRelativePath": "Towers/MicrowaveTower/B28/Static/T_HP_Tower_MicrowaveTower_Levels_Sheet_B28.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/MicrowaveTower/B28/Static/T_HP_Tower_MicrowaveTower_Levels_Sheet_B28.png", + "batch": "B28", + "sha256": "d0d266ee70fc6f6bc534a3ccf9d621e97caea9a66ac6c04175e0ae104e88d825", + "bytes": 8426, + "image": { + "width": 384, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-vacuumcleanertower-attack-b28-t-hp-tower-vacuumcleanertower-lv01-attack-isodiagonal-sheet-b28", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_VacuumCleanerTower_Lv01_Attack_IsoDiagonal_Sheet_B28", + "sourceRelativePath": "Towers/VacuumCleanerTower/Attack/B28/T_HP_Tower_VacuumCleanerTower_Lv01_Attack_IsoDiagonal_Sheet_B28.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/VacuumCleanerTower/Attack/B28/T_HP_Tower_VacuumCleanerTower_Lv01_Attack_IsoDiagonal_Sheet_B28.png", + "batch": "B28", + "sha256": "b6f6eb43b72bb079b8619c423778e939cef5a5696bce88bbb8c3dadaec638aec", + "bytes": 73789, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-vacuumcleanertower-attack-b49-t-hp-tower-vacuumcleanertower-lv02-attack-isodiagonal-sheet-b49", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_VacuumCleanerTower_Lv02_Attack_IsoDiagonal_Sheet_B49", + "sourceRelativePath": "Towers/VacuumCleanerTower/Attack/B49/T_HP_Tower_VacuumCleanerTower_Lv02_Attack_IsoDiagonal_Sheet_B49.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/VacuumCleanerTower/Attack/B49/T_HP_Tower_VacuumCleanerTower_Lv02_Attack_IsoDiagonal_Sheet_B49.png", + "batch": "B49", + "sha256": "e0bfe600df9e77b9d2fc9d4505de5cc0ad5457dbc25e4c4013ff594649fc35fc", + "bytes": 94492, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-vacuumcleanertower-attack-b49-t-hp-tower-vacuumcleanertower-lv03-attack-isodiagonal-sheet-b49", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_VacuumCleanerTower_Lv03_Attack_IsoDiagonal_Sheet_B49", + "sourceRelativePath": "Towers/VacuumCleanerTower/Attack/B49/T_HP_Tower_VacuumCleanerTower_Lv03_Attack_IsoDiagonal_Sheet_B49.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/VacuumCleanerTower/Attack/B49/T_HP_Tower_VacuumCleanerTower_Lv03_Attack_IsoDiagonal_Sheet_B49.png", + "batch": "B49", + "sha256": "380307f040e104de970d306d64ac90010a6421609ebae70bdbc2d99e3ea1a025", + "bytes": 95955, + "image": { + "width": 768, + "height": 512 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 6, + "rows": 4, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + "DownLeft", + "DownRight", + "UpLeft", + "UpRight" + ], + "clipMeaning": "Attack", + "frameRate": 10, + "loop": true, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-vacuumcleanertower-b28-static-t-hp-tower-vacuumcleanertower-levels-sheet-b28", + "assetType": "spriteSheet", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_VacuumCleanerTower_Levels_Sheet_B28", + "sourceRelativePath": "Towers/VacuumCleanerTower/B28/Static/T_HP_Tower_VacuumCleanerTower_Levels_Sheet_B28.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/VacuumCleanerTower/B28/Static/T_HP_Tower_VacuumCleanerTower_Levels_Sheet_B28.png", + "batch": "B28", + "sha256": "7a3c92da3d9a64284ea458226776bd78e5344d20ecfa218dd0cca8578f283093", + "bytes": 10779, + "image": { + "width": 384, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 3, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-bedoccupied-damage-b19-t-hp-valuable-bedoccupied-damage-sheet-b19", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_BedOccupied_Damage_Sheet_B19", + "sourceRelativePath": "Valuables/BedOccupied/Damage/B19/T_HP_Valuable_BedOccupied_Damage_Sheet_B19.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/BedOccupied/Damage/B19/T_HP_Valuable_BedOccupied_Damage_Sheet_B19.png", + "batch": "B19", + "sha256": "ca3cac8969a7c9a38bfbf73644ebd2a7361f3e427f2ede529d16f4a73e67bf46", + "bytes": 21717, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-foodcrate-damage-b35-t-hp-valuable-foodcrate-damage-sheet-b35", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_FoodCrate_Damage_Sheet_B35", + "sourceRelativePath": "Valuables/FoodCrate/Damage/B35/T_HP_Valuable_FoodCrate_Damage_Sheet_B35.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/FoodCrate/Damage/B35/T_HP_Valuable_FoodCrate_Damage_Sheet_B35.png", + "batch": "B35", + "sha256": "5cd41a33739383d693f2d08666a7a0f5bf6fb6b08dbe866a0e43580847bea69b", + "bytes": 21403, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-jangdokdae-damage-b35-t-hp-valuable-jangdokdae-damage-sheet-b35", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_Jangdokdae_Damage_Sheet_B35", + "sourceRelativePath": "Valuables/Jangdokdae/Damage/B35/T_HP_Valuable_Jangdokdae_Damage_Sheet_B35.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/Jangdokdae/Damage/B35/T_HP_Valuable_Jangdokdae_Damage_Sheet_B35.png", + "batch": "B35", + "sha256": "90f5beba1bf0a96fe5b55a59b7652e0615c3bc31f4704fb421e5680cc217d585", + "bytes": 28017, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-refrigerator-damage-b19-t-hp-valuable-refrigerator-damage-sheet-b19", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_Refrigerator_Damage_Sheet_B19", + "sourceRelativePath": "Valuables/Refrigerator/Damage/B19/T_HP_Valuable_Refrigerator_Damage_Sheet_B19.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/Refrigerator/Damage/B19/T_HP_Valuable_Refrigerator_Damage_Sheet_B19.png", + "batch": "B19", + "sha256": "464c40fa244942e53c04711b0f164d389abf64543f4ae4f9f44ddf74536a7455", + "bytes": 18268, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-ricesack-damage-b19-t-hp-valuable-ricesack-damage-sheet-b19", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_RiceSack_Damage_Sheet_B19", + "sourceRelativePath": "Valuables/RiceSack/Damage/B19/T_HP_Valuable_RiceSack_Damage_Sheet_B19.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/RiceSack/Damage/B19/T_HP_Valuable_RiceSack_Damage_Sheet_B19.png", + "batch": "B19", + "sha256": "5ac6bcb1d1393371eec84356b1204a46102d3f428956840c3cd2811065cddbb4", + "bytes": 25385, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-storagechest-damage-b36-t-hp-valuable-storagechest-damage-sheet-b36", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_StorageChest_Damage_Sheet_B36", + "sourceRelativePath": "Valuables/StorageChest/Damage/B36/T_HP_Valuable_StorageChest_Damage_Sheet_B36.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/StorageChest/Damage/B36/T_HP_Valuable_StorageChest_Damage_Sheet_B36.png", + "batch": "B36", + "sha256": "e58b20a4b763ab5990c8d71bc7b99f60bade058fa99906f6ee47b381babde3c9", + "bytes": 26862, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-tvappliance-damage-b37-t-hp-valuable-tvappliance-damage-sheet-b37", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_TVAppliance_Damage_Sheet_B37", + "sourceRelativePath": "Valuables/TVAppliance/Damage/B37/T_HP_Valuable_TVAppliance_Damage_Sheet_B37.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/TVAppliance/Damage/B37/T_HP_Valuable_TVAppliance_Damage_Sheet_B37.png", + "batch": "B37", + "sha256": "b53412af949516d190b9b59d1a0ab3e6b9b0ec445620e6b75ce245bcaf7d892d", + "bytes": 25254, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-wardrobe-damage-b37-t-hp-valuable-wardrobe-damage-sheet-b37", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_Wardrobe_Damage_Sheet_B37", + "sourceRelativePath": "Valuables/Wardrobe/Damage/B37/T_HP_Valuable_Wardrobe_Damage_Sheet_B37.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/Wardrobe/Damage/B37/T_HP_Valuable_Wardrobe_Damage_Sheet_B37.png", + "batch": "B37", + "sha256": "ebd9c334643c724d222dc3c033f3fc3109d5a4bdd65cc07b044a742fae59deff", + "bytes": 20274, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-waterjug-damage-b36-t-hp-valuable-waterjug-damage-sheet-b36", + "assetType": "spriteSheet", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_WaterJug_Damage_Sheet_B36", + "sourceRelativePath": "Valuables/WaterJug/Damage/B36/T_HP_Valuable_WaterJug_Damage_Sheet_B36.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/WaterJug/Damage/B36/T_HP_Valuable_WaterJug_Damage_Sheet_B36.png", + "batch": "B36", + "sha256": "4e140bccd38be0c187e51e9c28d056657b287b06756cf47bbdad8a2daf541330", + "bytes": 26867, + "image": { + "width": 512, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 4, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Damage", + "frameRate": 8, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-bookprojectile-b21-t-hp-vfx-bookprojectile-sheet-b21", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_BookProjectile_Sheet_B21", + "sourceRelativePath": "VFX/BookProjectile/B21/T_HP_VFX_BookProjectile_Sheet_B21.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/BookProjectile/B21/T_HP_VFX_BookProjectile_Sheet_B21.png", + "batch": "B21", + "sha256": "70282ceee98a49ee8fb2a53b6d732e5a0f3bc1559d06a158d9bb9fcbee279740", + "bytes": 22136, + "image": { + "width": 768, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-coolair-b22-t-hp-vfx-coolair-sheet-b22", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_CoolAir_Sheet_B22", + "sourceRelativePath": "VFX/CoolAir/B22/T_HP_VFX_CoolAir_Sheet_B22.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/CoolAir/B22/T_HP_VFX_CoolAir_Sheet_B22.png", + "batch": "B22", + "sha256": "9fd56b06258d022bfdfba8fec211d358f14257f6f1233dccd39bd0aafb4bc62c", + "bytes": 17259, + "image": { + "width": 768, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-dryerwind-b16-t-hp-vfx-dryerwind-sheet-b16", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_DryerWind_Sheet_B16", + "sourceRelativePath": "VFX/DryerWind/B16/T_HP_VFX_DryerWind_Sheet_B16.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/DryerWind/B16/T_HP_VFX_DryerWind_Sheet_B16.png", + "batch": "B16", + "sha256": "ad415962f15dcfec0b08d2591dbc9b8690e751062b9fc873ac3306151de22b03", + "bytes": 7159, + "image": { + "width": 768, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-heatpop-b28-t-hp-vfx-heatpop-sheet-b28", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_HeatPop_Sheet_B28", + "sourceRelativePath": "VFX/HeatPop/B28/T_HP_VFX_HeatPop_Sheet_B28.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/HeatPop/B28/T_HP_VFX_HeatPop_Sheet_B28.png", + "batch": "B28", + "sha256": "99f61399a8358fcdf6aea2ac857ba224b5f0a045fee775f2fedde1a35dfc4659", + "bytes": 5439, + "image": { + "width": 768, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-hitimpact-b23-t-hp-vfx-hitimpact-sheet-b23", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_HitImpact_Sheet_B23", + "sourceRelativePath": "VFX/HitImpact/B23/T_HP_VFX_HitImpact_Sheet_B23.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/HitImpact/B23/T_HP_VFX_HitImpact_Sheet_B23.png", + "batch": "B23", + "sha256": "373ed068d3edf3ef5e05159c5b68b2b33e40741a162901fe450dcbf2e4a767ef", + "bytes": 16932, + "image": { + "width": 768, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-levelupglow-b23-t-hp-vfx-levelupglow-sheet-b23", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_LevelUpGlow_Sheet_B23", + "sourceRelativePath": "VFX/LevelUpGlow/B23/T_HP_VFX_LevelUpGlow_Sheet_B23.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/LevelUpGlow/B23/T_HP_VFX_LevelUpGlow_Sheet_B23.png", + "batch": "B23", + "sha256": "6e81524127d12a9764ab58f8e834fa67d4534bc3875dd380ca841aa5096e710c", + "bytes": 40723, + "image": { + "width": 1024, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-playerspawn-b15-t-hp-vfx-playerspawn-sheet-b15", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_PlayerSpawn_Sheet_B15", + "sourceRelativePath": "VFX/PlayerSpawn/B15/T_HP_VFX_PlayerSpawn_Sheet_B15.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/PlayerSpawn/B15/T_HP_VFX_PlayerSpawn_Sheet_B15.png", + "batch": "B15", + "sha256": "23e96e7f4d45b0caa8de7304de8a59e393ab32b1a770f73584d8c4b092c3becc", + "bytes": 10183, + "image": { + "width": 768, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "vfx-suctiondust-b28-t-hp-vfx-suctiondust-sheet-b28", + "assetType": "spriteSheet", + "contentKind": "VFX", + "runtimeRole": "T_HP_VFX_SuctionDust_Sheet_B28", + "sourceRelativePath": "VFX/SuctionDust/B28/T_HP_VFX_SuctionDust_Sheet_B28.png", + "destinationPath": "Assets/_Project/Art/Runtime/VFX/SuctionDust/B28/T_HP_VFX_SuctionDust_Sheet_B28.png", + "batch": "B28", + "sha256": "ac8f8b021b8fb4f2e065c4124c7811e3cb9bc7369a066475e0a64c443c6bb54f", + "bytes": 6781, + "image": { + "width": 768, + "height": 96 + }, + "selection": { + "status": "included", + "reason": "Promoted UnityReady sheet for a distinct runtime role and revision." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Multiple", + "cell": { + "width": 96, + "height": 96 + }, + "columns": 8, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Atlas", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-bookshelf-lv01", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_BookShelf_Lv01", + "sourceRelativePath": "Towers/T_HP_Tower_BookShelf_Lv01.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_BookShelf_Lv01.png", + "batch": null, + "sha256": "ef6fa58cd763ba92410b1a32056699bbc698d8b94043bea913dceb88563aef54", + "bytes": 933, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-bookshelf-lv02", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_BookShelf_Lv02", + "sourceRelativePath": "Towers/T_HP_Tower_BookShelf_Lv02.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_BookShelf_Lv02.png", + "batch": null, + "sha256": "74ae044799f560428db528870f63073ddef17783b2cee3faf89610fe7cf32165", + "bytes": 969, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-bookshelf-lv03", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_BookShelf_Lv03", + "sourceRelativePath": "Towers/T_HP_Tower_BookShelf_Lv03.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_BookShelf_Lv03.png", + "batch": null, + "sha256": "fe2ff4f04fc940e63d62a3a7f237d2f2a336e9c876b5de3cd0974c78b3ad229d", + "bytes": 1023, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-cooldryer-lv01", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_CoolDryer_Lv01", + "sourceRelativePath": "Towers/T_HP_Tower_CoolDryer_Lv01.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_CoolDryer_Lv01.png", + "batch": null, + "sha256": "29365388e3a693026c92dd1624b57d8f8f66b8c942ed6f9e88af2e33b5595f4e", + "bytes": 584, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-cooldryer-lv02", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_CoolDryer_Lv02", + "sourceRelativePath": "Towers/T_HP_Tower_CoolDryer_Lv02.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_CoolDryer_Lv02.png", + "batch": null, + "sha256": "d5ed6ec2dd409281aceb45d3ef59b31c527c9f4b42fb4f12d855c5abd4229cf9", + "bytes": 624, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-cooldryer-lv03", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_CoolDryer_Lv03", + "sourceRelativePath": "Towers/T_HP_Tower_CoolDryer_Lv03.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_CoolDryer_Lv03.png", + "batch": null, + "sha256": "a0337f2f627618190ad3629a7cb88f396a4bbc875ca0516885ae1ab4757b2c99", + "bytes": 695, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-dryer-lv01", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_Dryer_Lv01", + "sourceRelativePath": "Towers/T_HP_Tower_Dryer_Lv01.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_Dryer_Lv01.png", + "batch": null, + "sha256": "352884de9eb2fd6502199d36a6ccb02705f284b1aa349537c3937f0bf2bb6840", + "bytes": 633, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-dryer-lv02", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_Dryer_Lv02", + "sourceRelativePath": "Towers/T_HP_Tower_Dryer_Lv02.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_Dryer_Lv02.png", + "batch": null, + "sha256": "9d34d7cfc6af821bfdc7b6b504a11250418e8dad93b48cd077e1963d99e784e3", + "bytes": 684, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "towers-t-hp-tower-dryer-lv03", + "assetType": "singleSprite", + "contentKind": "Towers", + "runtimeRole": "T_HP_Tower_Dryer_Lv03", + "sourceRelativePath": "Towers/T_HP_Tower_Dryer_Lv03.png", + "destinationPath": "Assets/_Project/Art/Runtime/Towers/T_HP_Tower_Dryer_Lv03.png", + "batch": null, + "sha256": "d4214f6ba45d3864eb5f8802e9143c40a1c8b30b65ba77a65b6dcfa0f212bec0", + "bytes": 734, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical static level sprite for Dryer, BookShelf, or CoolDryer." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "ui-t-hp-ui-attackrange", + "assetType": "singleSprite", + "contentKind": "UI", + "runtimeRole": "T_HP_UI_AttackRange", + "sourceRelativePath": "UI/T_HP_UI_AttackRange.png", + "destinationPath": "Assets/_Project/Art/Runtime/UI/T_HP_UI_AttackRange.png", + "batch": null, + "sha256": "c3e679676d6d88f583c189d18dbb2213ba6ecc066fb1cc2725fbe9d23b91ba9e", + "bytes": 960, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical runtime UI sprite." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "ui-t-hp-ui-enemy", + "assetType": "singleSprite", + "contentKind": "UI", + "runtimeRole": "T_HP_UI_Enemy", + "sourceRelativePath": "UI/T_HP_UI_Enemy.png", + "destinationPath": "Assets/_Project/Art/Runtime/UI/T_HP_UI_Enemy.png", + "batch": null, + "sha256": "3429037c832dd1b7038e1148e757413f94917406add6ba0613341528453d3f6b", + "bytes": 310, + "image": { + "width": 32, + "height": 32 + }, + "selection": { + "status": "included", + "reason": "Canonical runtime UI sprite." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 32, + "height": 32 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "ui-t-hp-ui-gold", + "assetType": "singleSprite", + "contentKind": "UI", + "runtimeRole": "T_HP_UI_Gold", + "sourceRelativePath": "UI/T_HP_UI_Gold.png", + "destinationPath": "Assets/_Project/Art/Runtime/UI/T_HP_UI_Gold.png", + "batch": null, + "sha256": "f368ec1fd8d723c7956a69686d5e48df03951de2124d015f87226066bf3e3dfa", + "bytes": 308, + "image": { + "width": 32, + "height": 32 + }, + "selection": { + "status": "included", + "reason": "Canonical runtime UI sprite." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 32, + "height": 32 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "ui-t-hp-ui-life", + "assetType": "singleSprite", + "contentKind": "UI", + "runtimeRole": "T_HP_UI_Life", + "sourceRelativePath": "UI/T_HP_UI_Life.png", + "destinationPath": "Assets/_Project/Art/Runtime/UI/T_HP_UI_Life.png", + "batch": null, + "sha256": "40deb21b12b0f4b779104afa17d59c2ea172054c72b5b14b2531b0bd2305cf05", + "bytes": 316, + "image": { + "width": 32, + "height": 32 + }, + "selection": { + "status": "included", + "reason": "Canonical runtime UI sprite." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 32, + "height": 32 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "ui-t-hp-ui-panelbackground", + "assetType": "singleSprite", + "contentKind": "UI", + "runtimeRole": "T_HP_UI_PanelBackground", + "sourceRelativePath": "UI/T_HP_UI_PanelBackground.png", + "destinationPath": "Assets/_Project/Art/Runtime/UI/T_HP_UI_PanelBackground.png", + "batch": null, + "sha256": "5456331b64cf2abcd94e8c059fa6c08cde9b455f82560edb435bc854de358780", + "bytes": 1376, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical runtime UI sprite." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "ui-t-hp-ui-play", + "assetType": "singleSprite", + "contentKind": "UI", + "runtimeRole": "T_HP_UI_Play", + "sourceRelativePath": "UI/T_HP_UI_Play.png", + "destinationPath": "Assets/_Project/Art/Runtime/UI/T_HP_UI_Play.png", + "batch": null, + "sha256": "79e660da10f17bf5f5111eb15c3419c855f7e73df982d1c48bbf74f6fcf15222", + "bytes": 329, + "image": { + "width": 32, + "height": 32 + }, + "selection": { + "status": "included", + "reason": "Canonical runtime UI sprite." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 32, + "height": 32 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "ui-t-hp-ui-wave", + "assetType": "singleSprite", + "contentKind": "UI", + "runtimeRole": "T_HP_UI_Wave", + "sourceRelativePath": "UI/T_HP_UI_Wave.png", + "destinationPath": "Assets/_Project/Art/Runtime/UI/T_HP_UI_Wave.png", + "batch": null, + "sha256": "430a9f2d293eb5075f55caa66131dc4a66f06faf38a9e2f3d49807ab7f284c31", + "bytes": 336, + "image": { + "width": 32, + "height": 32 + }, + "selection": { + "status": "included", + "reason": "Canonical runtime UI sprite." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 32, + "height": 32 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "Center", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-foodcrate-normal-b35-t-hp-valuable-foodcrate-normal-b35", + "assetType": "singleSprite", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_FoodCrate_Normal_B35", + "sourceRelativePath": "Valuables/FoodCrate/Normal/B35/T_HP_Valuable_FoodCrate_Normal_B35.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/FoodCrate/Normal/B35/T_HP_Valuable_FoodCrate_Normal_B35.png", + "batch": "B35", + "sha256": "76f2cd2719560b4f82e7474f36344655ff79ad46c2ac97b35dc741cd129e615d", + "bytes": 4925, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical undamaged valuable sprite paired with its damage sheet." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-jangdokdae-normal-b35-t-hp-valuable-jangdokdae-normal-b35", + "assetType": "singleSprite", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_Jangdokdae_Normal_B35", + "sourceRelativePath": "Valuables/Jangdokdae/Normal/B35/T_HP_Valuable_Jangdokdae_Normal_B35.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/Jangdokdae/Normal/B35/T_HP_Valuable_Jangdokdae_Normal_B35.png", + "batch": "B35", + "sha256": "9df8cb6e5235adcd068c90de44c9d73c8d7116902fc3fca125ea189169328ff7", + "bytes": 6887, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical undamaged valuable sprite paired with its damage sheet." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-storagechest-normal-b36-t-hp-valuable-storagechest-normal-b36", + "assetType": "singleSprite", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_StorageChest_Normal_B36", + "sourceRelativePath": "Valuables/StorageChest/Normal/B36/T_HP_Valuable_StorageChest_Normal_B36.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/StorageChest/Normal/B36/T_HP_Valuable_StorageChest_Normal_B36.png", + "batch": "B36", + "sha256": "9ec1ade6385ba9304edcc694e048326723f85dbe666fca60d23c53f91aae7ca2", + "bytes": 6462, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical undamaged valuable sprite paired with its damage sheet." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-tvappliance-normal-b37-t-hp-valuable-tvappliance-normal-b37", + "assetType": "singleSprite", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_TVAppliance_Normal_B37", + "sourceRelativePath": "Valuables/TVAppliance/Normal/B37/T_HP_Valuable_TVAppliance_Normal_B37.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/TVAppliance/Normal/B37/T_HP_Valuable_TVAppliance_Normal_B37.png", + "batch": "B37", + "sha256": "6d7b9173289b6025b2f994e90f5814175c68715cbb4286a8b4806039b02cff44", + "bytes": 6222, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical undamaged valuable sprite paired with its damage sheet." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-wardrobe-normal-b37-t-hp-valuable-wardrobe-normal-b37", + "assetType": "singleSprite", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_Wardrobe_Normal_B37", + "sourceRelativePath": "Valuables/Wardrobe/Normal/B37/T_HP_Valuable_Wardrobe_Normal_B37.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/Wardrobe/Normal/B37/T_HP_Valuable_Wardrobe_Normal_B37.png", + "batch": "B37", + "sha256": "1f4738d5898b870a4e692a7171ae3ae45feba39b861989a2aab75d61082ba9f7", + "bytes": 4772, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical undamaged valuable sprite paired with its damage sheet." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + }, + { + "id": "valuables-waterjug-normal-b36-t-hp-valuable-waterjug-normal-b36", + "assetType": "singleSprite", + "contentKind": "Valuables", + "runtimeRole": "T_HP_Valuable_WaterJug_Normal_B36", + "sourceRelativePath": "Valuables/WaterJug/Normal/B36/T_HP_Valuable_WaterJug_Normal_B36.png", + "destinationPath": "Assets/_Project/Art/Runtime/Valuables/WaterJug/Normal/B36/T_HP_Valuable_WaterJug_Normal_B36.png", + "batch": "B36", + "sha256": "7b1a0438ea7149647476664e1e1b090ff82715d3d12cf2c6553a2b6f28a5acde", + "bytes": 6275, + "image": { + "width": 128, + "height": 128 + }, + "selection": { + "status": "included", + "reason": "Canonical undamaged valuable sprite paired with its damage sheet." + }, + "importer": { + "textureType": "Sprite", + "spriteMode": "Single", + "cell": { + "width": 128, + "height": 128 + }, + "columns": 1, + "rows": 1, + "pixelsPerUnit": 100, + "pivot": "BottomCenter", + "directionRows": [ + + ], + "clipMeaning": "Static", + "frameRate": 0, + "loop": false, + "filterMode": "Point", + "compression": "Uncompressed" + } + } + ] +} diff --git a/Docs/Development/content-integration-status.md b/Docs/Development/content-integration-status.md new file mode 100644 index 0000000..3bdca3c --- /dev/null +++ b/Docs/Development/content-integration-status.md @@ -0,0 +1,41 @@ +# Home Protector Content Integration Status + +Last updated: 2026-08-16 + +## Status keys + +- **Cataloged:** canonical source and runtime role are recorded. +- **Imported:** Unity created or updated texture metadata, slices, clips, and controllers. +- **Wired:** prefab, definition, catalog, dependencies, and scene/campaign exposure are connected. +- **Playtested:** the expected role appeared and worked in a milestone hands-on run. +- **Blocked:** the next mutation requires an active Unity license. + +## Asset baseline + +- Manifest: 103 sheet candidates, 101 included sheets, 2 excluded historical Player Walk sheets, and 22 included single sprites. +- Existing project identities retained: CommonSoldier and Monkey. +- Intentional role split: Bear B20 and BearHeavy B31. +- Import source: `D:/GameAsset/GameAssets/HomeProtector/UnityReadySprites`. +- Runtime destination: `Assets/_Project/Art/Runtime`. +- Current import blocker: expired Unity entitlement; no art has been copied by the harness. + +## Integration matrix + +| Area | Cataloged | Imported | Wired | Playtested | Current note | +|---|---:|---:|---:|---:|---| +| Player (Idle, Walk, Attack, Damage, Sleep, Buff/Repair, Spawn VFX) | Yes | Blocked | Partial legacy | No | Preserve existing voice-tuned player behavior while replacing visual set. | +| Protected resources (Refrigerator, Rice, Bed) | Yes | Blocked | Partial legacy | No | Refrigerator GUID `013bf229ebe2b6247b621e48f6137a06` is canonical; PostBox migration pending. | +| Other valuables/placeables (6 roles) | Yes | Blocked | No | No | Decorative definitions must disable enemy target and total-health contribution. | +| Enemies (14 canonical roles) | Yes | Blocked | Partial legacy | No | Existing CommonSoldier, Monkey, Cockroach, and Bear identities are reused; roster waves pending. | +| Towers (Dryer, BookShelf, CoolDryer, Microwave, Vacuum) | Yes | Blocked | 3 partial, 2 pending | No | Prefer TowerDefinition level data over level-prefab duplication. | +| Projectiles and shared VFX (8 families) | Yes | Blocked | Partial legacy | No | Wire with the owning tower/player content unit. | +| Environment tiles, props, overlays, and themes | Yes | Blocked | No | No | PorchYard mailbox remains a separate environment prop. | +| Runtime game flow | N/A | N/A | Prototype only | No | Final isometric scene still needs GameSession bridge migration. | +| Voice plus keyboard fallback | N/A | N/A | Legacy combined | No | Split source/profile/controller/router while preserving existing log-scale tuning. | + +## Next mutation gate + +1. Activate a Unity Personal license in Unity Hub. +2. Run EditMode tests to obtain a real RED result before runtime production changes. +3. Import only manifest-included records through Unity Editor automation. +4. Wire content in atomic role units, then migrate the final scene last. diff --git a/Docs/Development/playtest-notes.md b/Docs/Development/playtest-notes.md new file mode 100644 index 0000000..a6e3bd9 --- /dev/null +++ b/Docs/Development/playtest-notes.md @@ -0,0 +1,52 @@ +# Home Protector Playtest Notes + +Create one dated section per milestone. Keep Unity and repository verification as concise references; do not paste successful raw logs. + +## Milestone template + +- Milestone: +- Commit/build: +- Date: +- Platform/scene: +- Reviewer: +- Input setup: + - Microphone: + - Keyboard fallback: +- Scoped changes: +- Expected day/wave/theme/content coverage: +- Unity verification summary: +- Repository hygiene summary: +- Known blockers: + +### Hands-on coverage + +| Path | Result | Evidence or note | +|---|---|---| +| Loading Preparation | Not run | | +| Placement and tower controls | Not run | | +| Refrigerator, Rice, and Bed behavior | Not run | | +| Combat readability | Not run | | +| Voice activation | Not run | | +| Keyboard fallback / unavailable microphone | Not run | | +| Result next day | Not run | | +| Defeat same-day retry | Not run | | +| Final completion | Not run | | +| Enemy and tower role variety | Not run | | +| Hit VFX, audio, reactions, and death | Not run | | +| UI clarity | Not run | | +| Environment/theme and promised content exposure | Not run | | + +### Findings + +| Severity | Time/phase | Observation | Player impact | Expected | Reproduction (4 steps) | Evidence | Owner | +|---|---|---|---|---|---|---|---| + +### Coverage gaps + +- None recorded. + +### Status + +`BLOCKED` + +Use exactly one status: `PLAYABLE`, `PLAYABLE WITH FINDINGS`, or `BLOCKED`. Missing artifact/access is a blocked coverage gap without runtime severity; reserve P0 for an observed core-loop failure. diff --git a/Packages/manifest.json b/Packages/manifest.json index 00d2430..c4edd52 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,12 +1,12 @@ { "dependencies": { "com.unity.ai.navigation": "1.1.5", - "com.unity.collab-proxy": "2.5.2", + "com.unity.collab-proxy": "2.7.1", "com.unity.feature.2d": "2.0.1", - "com.unity.ide.rider": "3.0.28", + "com.unity.ide.rider": "3.0.34", "com.unity.ide.visualstudio": "2.0.22", "com.unity.test-framework": "1.1.33", - "com.unity.textmeshpro": "3.0.6", + "com.unity.textmeshpro": "3.0.7", "com.unity.timeline": "1.7.6", "com.unity.ugui": "1.0.0", "com.unity.visualscripting": "1.9.4", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index bb6e88d..877c77b 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,11 +1,11 @@ { "dependencies": { "com.unity.2d.animation": { - "version": "9.1.1", + "version": "9.1.3", "depth": 1, "source": "registry", "dependencies": { - "com.unity.2d.common": "8.0.2", + "com.unity.2d.common": "8.0.4", "com.unity.2d.sprite": "1.0.0", "com.unity.collections": "1.1.0", "com.unity.modules.animation": "1.0.0", @@ -14,7 +14,7 @@ "url": "https://packages.unity.com" }, "com.unity.2d.aseprite": { - "version": "1.1.4", + "version": "1.1.8", "depth": 1, "source": "registry", "dependencies": { @@ -26,7 +26,7 @@ "url": "https://packages.unity.com" }, "com.unity.2d.common": { - "version": "8.0.2", + "version": "8.0.4", "depth": 2, "source": "registry", "dependencies": { @@ -63,11 +63,11 @@ "dependencies": {} }, "com.unity.2d.spriteshape": { - "version": "9.0.3", + "version": "9.0.5", "depth": 1, "source": "registry", "dependencies": { - "com.unity.2d.common": "8.0.2", + "com.unity.2d.common": "8.0.4", "com.unity.mathematics": "1.1.0", "com.unity.modules.physics2d": "1.0.0" }, @@ -83,7 +83,7 @@ } }, "com.unity.2d.tilemap.extras": { - "version": "3.1.2", + "version": "3.1.3", "depth": 1, "source": "registry", "dependencies": { @@ -104,7 +104,7 @@ "url": "https://packages.unity.com" }, "com.unity.burst": { - "version": "1.8.16", + "version": "1.8.19", "depth": 3, "source": "registry", "dependencies": { @@ -114,7 +114,7 @@ "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "2.5.2", + "version": "2.7.1", "depth": 0, "source": "registry", "dependencies": {}, @@ -142,18 +142,18 @@ "depth": 0, "source": "builtin", "dependencies": { - "com.unity.2d.animation": "9.1.1", + "com.unity.2d.animation": "9.1.3", "com.unity.2d.pixel-perfect": "5.0.3", "com.unity.2d.psdimporter": "8.0.5", "com.unity.2d.sprite": "1.0.0", - "com.unity.2d.spriteshape": "9.0.3", + "com.unity.2d.spriteshape": "9.0.5", "com.unity.2d.tilemap": "1.0.0", - "com.unity.2d.tilemap.extras": "3.1.2", - "com.unity.2d.aseprite": "1.1.4" + "com.unity.2d.tilemap.extras": "3.1.3", + "com.unity.2d.aseprite": "1.1.8" } }, "com.unity.ide.rider": { - "version": "3.0.28", + "version": "3.0.34", "depth": 0, "source": "registry", "dependencies": { @@ -189,7 +189,7 @@ "url": "https://packages.unity.com" }, "com.unity.textmeshpro": { - "version": "3.0.6", + "version": "3.0.7", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 976b86c..9483ed8 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -84,6 +84,7 @@ PlayerSettings: muteOtherAudioSources: 0 Prepare IOS For Recording: 0 Force IOS Speakers When Recording: 0 + audioSpatialExperience: 0 deferSystemGesturesMode: 0 hideHomeButton: 0 submitAnalytics: 1 @@ -185,8 +186,10 @@ PlayerSettings: strictShaderVariantMatching: 0 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 + iOSSimulatorArchitecture: 0 iOSTargetOSVersionString: 12.0 tvOSSdkVersion: 0 + tvOSSimulatorArchitecture: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 12.0 VisionOSSdkVersion: 0 @@ -678,6 +681,7 @@ PlayerSettings: switchSocketBufferEfficiency: 4 switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 + switchDisableHTCSPlayerConnection: 0 switchUseNewStyleFilepaths: 0 switchUseLegacyFmodPriorities: 0 switchUseMicroSleepForYield: 1 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index b12da39..75f9809 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2022.3.37f1 -m_EditorVersionWithRevision: 2022.3.37f1 (340ba89e4c23) +m_EditorVersion: 2022.3.60f1 +m_EditorVersionWithRevision: 2022.3.60f1 (5f63fdee6d95) diff --git a/Tools/Git/Validate-UnityRepo.ps1 b/Tools/Git/Validate-UnityRepo.ps1 new file mode 100644 index 0000000..f803e71 --- /dev/null +++ b/Tools/Git/Validate-UnityRepo.ps1 @@ -0,0 +1,112 @@ +[CmdletBinding()] +param( + [string]$ProjectRoot, + [string]$ManifestPath = "Docs/Development/asset-import-manifest.json" +) + +$ErrorActionPreference = "Stop" +$failures = [System.Collections.Generic.List[string]]::new() +if ([string]::IsNullOrWhiteSpace($ProjectRoot)) { + $ProjectRoot = (Resolve-Path (Join-Path $PSScriptRoot "../..")).Path +} + +$root = (Resolve-Path -LiteralPath $ProjectRoot).Path +$rootForGit = $root.Replace('\', '/') +$legacyLargeFiles = @( + 'Assets/TextMesh Pro/Fonts/Maplestory Bold SDF.asset', + 'Assets/TextMesh Pro/Fonts/Maplestory Light SDF.asset', + 'Assets/TextMesh Pro/Fonts/NotoSansKR-Light SDF.asset' +) + +function Add-Failure([string]$message) { + $script:failures.Add($message) +} + +$versionFile = Join-Path $root "ProjectSettings/ProjectVersion.txt" +if (-not (Test-Path -LiteralPath $versionFile -PathType Leaf)) { + Add-Failure "Missing ProjectSettings/ProjectVersion.txt" +} else { + $versionText = Get-Content -LiteralPath $versionFile -Raw -Encoding UTF8 + if ($versionText -notmatch '(?m)^m_EditorVersion:\s*2022\.3\.60f1\s*$') { + Add-Failure "Unity version must be 2022.3.60f1" + } +} + +$repoFiles = @(& git -c "safe.directory=$rootForGit" -c core.quotePath=false -C $root ls-files --cached --others --exclude-standard) +if ($LASTEXITCODE -ne 0) { + throw "git ls-files failed with exit code $LASTEXITCODE" +} + +foreach ($relativePath in $repoFiles) { + $path = $relativePath.Replace('\', '/') + + if ($path -match '(^|/)(Library|Temp|Obj|Build|Builds|Releases)(/|$)') { + Add-Failure "Generated Unity output is not allowed: $path" + } + + if ($path -match '(^|/)(Frames|QualityRefresh)(/|$)' -or + $path -match '(?i)(fullres|native)') { + Add-Failure "Raw or intermediate art is not allowed: $path" + } + + $extension = [System.IO.Path]::GetExtension($path) + if ($extension -ieq '.exe' -or + ($extension -ieq '.dll' -and $path -notmatch '(?i)^Assets/Plugins/')) { + Add-Failure "Generated executable or assembly is not allowed: $path" + } + + $absolutePath = Join-Path $root $relativePath + if (Test-Path -LiteralPath $absolutePath -PathType Leaf) { + $length = (Get-Item -LiteralPath $absolutePath).Length + if ($length -gt 20MB -and $legacyLargeFiles -notcontains $path) { + Add-Failure "File exceeds 20 MiB: $path ($length bytes)" + } + } +} + +$assetsRoot = Join-Path $root "Assets" +$assetFiles = @() +if (Test-Path -LiteralPath $assetsRoot -PathType Container) { + $assetFiles = @(Get-ChildItem -LiteralPath $assetsRoot -Recurse -File -Force) + foreach ($file in $assetFiles) { + if ($file.Name.EndsWith('.meta', [StringComparison]::OrdinalIgnoreCase)) { + $target = $file.FullName.Substring(0, $file.FullName.Length - 5) + if (-not (Test-Path -LiteralPath $target)) { + Add-Failure "Orphan meta file: $($file.FullName.Substring($root.Length + 1))" + } + continue + } + + if (-not (Test-Path -LiteralPath ($file.FullName + '.meta') -PathType Leaf)) { + Add-Failure "Missing meta file: $($file.FullName.Substring($root.Length + 1))" + } + } +} + +$manifestAbsolutePath = Join-Path $root $ManifestPath +$manifestCount = 0 +if (-not (Test-Path -LiteralPath $manifestAbsolutePath -PathType Leaf)) { + Add-Failure "Missing asset import manifest: $ManifestPath" +} else { + try { + $manifest = Get-Content -LiteralPath $manifestAbsolutePath -Raw -Encoding UTF8 | ConvertFrom-Json + if ($manifest.schemaVersion -ne 1) { + Add-Failure "Manifest schemaVersion must be 1" + } + if ($null -eq $manifest.entries) { + Add-Failure "Manifest must contain an entries array" + } else { + $manifestCount = @($manifest.entries).Count + } + } catch { + Add-Failure "Manifest JSON is invalid: $($_.Exception.Message)" + } +} + +if ($failures.Count -gt 0) { + Write-Host "FAIL unity-repo-hygiene failures=$($failures.Count)" + $failures | Sort-Object -Unique | ForEach-Object { Write-Host " - $_" } + exit 1 +} + +Write-Host "PASS unity-repo-hygiene files=$($repoFiles.Count) assets=$($assetFiles.Count) manifest=$manifestCount" diff --git a/Tools/Unity/Invoke-HomeProtectorUnity.ps1 b/Tools/Unity/Invoke-HomeProtectorUnity.ps1 new file mode 100644 index 0000000..4f31bff --- /dev/null +++ b/Tools/Unity/Invoke-HomeProtectorUnity.ps1 @@ -0,0 +1,131 @@ +[CmdletBinding()] +param( + [ValidateSet('EditMode', 'PlayMode', 'Validate')] + [string]$Mode = 'EditMode', + [string]$ProjectRoot, + [string]$UnityPath = $env:UNITY_EDITOR_PATH +) + +$ErrorActionPreference = 'Stop' +if ([string]::IsNullOrWhiteSpace($ProjectRoot)) { + $ProjectRoot = (Resolve-Path (Join-Path $PSScriptRoot "../..")).Path +} + +$root = (Resolve-Path -LiteralPath $ProjectRoot).Path + +if ([string]::IsNullOrWhiteSpace($UnityPath)) { + $candidates = @( + 'E:\tools\2022.3.60f1\Editor\Unity.exe', + 'C:\Program Files\Unity\Hub\Editor\2022.3.60f1\Editor\Unity.exe' + ) + $UnityPath = $candidates | Where-Object { Test-Path -LiteralPath $_ -PathType Leaf } | Select-Object -First 1 +} + +if ([string]::IsNullOrWhiteSpace($UnityPath) -or -not (Test-Path -LiteralPath $UnityPath -PathType Leaf)) { + throw 'Unity 2022.3.60f1 was not found. Set UNITY_EDITOR_PATH or pass -UnityPath.' +} + +$resultDirectory = Join-Path $root 'Logs/HomeProtectorAutomation' +New-Item -ItemType Directory -Path $resultDirectory -Force | Out-Null +$modeSlug = $Mode.ToLowerInvariant() +$logPath = Join-Path $resultDirectory "$modeSlug.log" +$resultPath = Join-Path $resultDirectory "$modeSlug-results.xml" + +if ($Mode -in @('EditMode', 'PlayMode') -and (Test-Path -LiteralPath $resultPath -PathType Leaf)) { + Remove-Item -LiteralPath $resultPath -Force +} + +$arguments = @( + '-batchmode', + '-nographics', + '-projectPath', $root, + '-logFile', $logPath +) + +if ($Mode -eq 'Validate') { + $arguments += '-quit' +} + +switch ($Mode) { + 'EditMode' { + $arguments += @('-runTests', '-testPlatform', 'EditMode', '-testResults', $resultPath) + } + 'PlayMode' { + $arguments += @('-runTests', '-testPlatform', 'PlayMode', '-testResults', $resultPath) + } + 'Validate' { + $arguments += @('-executeMethod', 'HomeProtector.Editor.AssetPipeline.HomeProtectorAutomation.ValidateProject') + } +} + +$processArguments = @($arguments | ForEach-Object { + $value = [string]$_ + if ($value -match '[\s"]') { + return '"' + $value.Replace('"', '\"') + '"' + } + return $value +}) +$unityProcess = Start-Process -FilePath $UnityPath ` + -ArgumentList $processArguments ` + -PassThru ` + -WindowStyle Hidden +$unityProcess.WaitForExit() +$exitCode = $unityProcess.ExitCode +$logText = if (Test-Path -LiteralPath $logPath) { + Get-Content -LiteralPath $logPath -Raw -Encoding UTF8 +} else { + '' +} + +if ($logText -match 'No valid Unity Editor license found|LICENSE SYSTEM.*No valid license') { + Write-Host "BLOCKED unity-$modeSlug reason=missing-license log=$logPath" + exit 3 +} + +if ($Mode -in @('EditMode', 'PlayMode')) { + if (Test-Path -LiteralPath $resultPath -PathType Leaf) { + [xml]$results = Get-Content -LiteralPath $resultPath -Raw -Encoding UTF8 + $run = $results.'test-run' + if ($null -eq $run) { + Write-Host "FAIL unity-$modeSlug reason=invalid-results result=$resultPath log=$logPath" + exit 2 + } + + $total = [int]$run.total + $passed = [int]$run.passed + $failed = [int]$run.failed + if ($total -le 0) { + Write-Host "FAIL unity-$modeSlug reason=no-tests result=$resultPath log=$logPath" + exit 2 + } + + + if ($failed -gt 0) { + Write-Host "FAIL unity-$modeSlug total=$total passed=$passed failed=$failed result=$resultPath log=$logPath" + exit 1 + } + + if ($exitCode -ne 0) { + Write-Host "FAIL unity-$modeSlug exit=$exitCode total=$total passed=$passed failed=$failed result=$resultPath log=$logPath" + exit $exitCode + } + + Write-Host "PASS unity-$modeSlug total=$total passed=$passed failed=$failed result=$resultPath" + exit 0 + } + + if ($exitCode -ne 0) { + Write-Host "FAIL unity-$modeSlug exit=$exitCode log=$logPath" + exit $exitCode + } + + Write-Host "FAIL unity-$modeSlug reason=missing-results log=$logPath" + exit 2 +} + +if ($exitCode -ne 0) { + Write-Host "FAIL unity-$modeSlug exit=$exitCode log=$logPath" + exit $exitCode +} + +Write-Host "PASS unity-$modeSlug log=$logPath" diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector.exe" "b/\354\203\210 \355\217\264\353\215\224/Home Protector.exe" deleted file mode 100644 index 0cd2e53..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector.exe" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_BurstDebugInformation_DoNotShip/Data/Plugins/x86_64/lib_burst_generated.txt" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_BurstDebugInformation_DoNotShip/Data/Plugins/x86_64/lib_burst_generated.txt" deleted file mode 100644 index fe86762..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/Home Protector_BurstDebugInformation_DoNotShip/Data/Plugins/x86_64/lib_burst_generated.txt" +++ /dev/null @@ -1,96 +0,0 @@ -Library: C:\Unity github\Home Protector\Temp\BurstOutput\Data\Plugins\x86_64\lib_burst_generated ---platform=Windows ---backend=burst-llvm-16 ---target=X64_SSE2 ---global-safety-checks-setting=Off ---meta-data-generation=False ---dump=Function ---float-precision=Standard ---target-framework=NetFramework ---linker-options=PdbAltPath="Home Protector_Data/Plugins/x86_64/lib_burst_generated.pdb" ---generate-link-xml=Temp\burst.link.xml ---temp-folder=C:\Unity github\Home Protector\Temp\Burst ---key-folder=C:/Program Files/Unity/Hub/Editor/2022.3.37f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport ---decode-folder=C:\Unity github\Home Protector\Library\Burst ---output=C:\Unity github\Home Protector\Temp\BurstOutput\Data\Plugins\x86_64\lib_burst_generated ---pdb-search-paths=Temp/ManagedSymbols/ - ---method=Unity.Burst.BurstCompiler+BurstCompilerHelper, Unity.Burst, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::IsBurstEnabled()--8c2be93e18276203cbd918daa2748a10 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--82b0ba09e7cb740f2e20482d3814830b ---method=Unity.Collections.xxHash3, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Hash64Long(System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--93df17b7366cd622dfa5ea2d3c75cf0b ---method=UnityEngine.U2D.SpriteShapeGenerator, Unity.2D.SpriteShape.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::UTessellator(UnityEngine.U2D.SpriteShapeSegment&, UnityEngine.SpriteShapeModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Mathematics.float2*, Unity.Mathematics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.UInt16*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int32&, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int32&, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.Allocator, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--061acaf8bf970e2528896e65f9c91f2c ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.CopySpriteRendererBuffersJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.CopySpriteRendererBuffersJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--2b06055de97035295dc032db19a3a735 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeListDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeListDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--4a1dc7df3f09b836e86a41d0d8fb4229 ---method=UnityEngine.Jobs.IJobParallelForTransformExtensions+TransformParallelForLoopStruct`1[[UnityEngine.U2D.Animation.WorldToLocalTransformAccessJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.WorldToLocalTransformAccessJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--b0197e8b2118e6410ef3f798b24a1e6e ---method=UnityEngine.U2D.Animation.BurstedSpriteSkinUtilities, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::ValidateBoneWeights(UnityEngine.U2D.Animation.NativeCustomSlice`1[[UnityEngine.BoneWeight, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--9425db96a9fb33479746c6501570455e ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeReferenceDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeReferenceDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--baf840f8150b604b0fd300ceb19dd50e ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[UnityEngine.U2D.Animation.PrepareDeformJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.PrepareDeformJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--a10c29fb1a626a4dab6bf90980926746 ---method=Unity.Burst.Intrinsics.X86, Unity.Burst, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::DoSetCSRTrampoline(System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--da352d92cabf024fc9986011d52a4537 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--164a9957f2c75e5d4b481d1ceff90393 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeQueueDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeQueueDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--68a8ea65a4f1ea752d1138be3be73a9a ---method=Unity.Collections.xxHash3, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Hash128Long(System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Mathematics.uint4&, Unity.Mathematics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)--f7daf29273ab2f86d86c27c3a1d6eeb5 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJobList, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJobList&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--428d454056b9288c93f4435d6e6f7fda ---method=Unity.Collections.RewindableAllocator, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Try(System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.AllocatorManager+Block&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--cf20d690c33ab495d44c548cd6a31428 ---method=Unity.Collections.AllocatorManager+SlabAllocator, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Try(System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.AllocatorManager+Block&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--2434a4c10d01dbab5e7438b2b580d1d1 ---method=Unity.Collections.AllocatorManager+StackAllocator, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Try(System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.AllocatorManager+Block&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--478bf3abafa12cba2083fb45bca79b9c ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDataDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDataDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--2ef0a503423574beae197ba4b01ed0be ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[UnityEngine.U2D.Animation.FillPerSkinJobSingleThread, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.FillPerSkinJobSingleThread&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--7194d9a68a20c1c6a01d3a365d4f21b9 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeStream+ConstructJobList, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeStream+ConstructJobList&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--959783104064e8c81fba5d33d94ead01 ---method=UnityEngine.Jobs.IJobParallelForTransformExtensions+TransformParallelForLoopStruct`1[[UnityEngine.U2D.Animation.LocalToWorldTransformAccessJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.LocalToWorldTransformAccessJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--f9554e48e09171c93d417c182c09c36b ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[UnityEngine.U2D.SpriteShapeGenerator, Unity.2D.SpriteShape.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.SpriteShapeGenerator&, Unity.2D.SpriteShape.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--a185c62eba2497c95197140e5282b27a ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.BoneDeformBatchedJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.BoneDeformBatchedJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--6d933222c5b0c0c915d062861958d408 ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.CalculateSpriteSkinAABBJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.CalculateSpriteSkinAABBJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--122fae680333e8e2ba58f80110a0a78c ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.SkinDeformBatchedJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.SkinDeformBatchedJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--aece0ca012db7ae9f82cc8b3c490870a ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeStream+DisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeStream+DisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--ca60ab232d19a9f4380a530fa0d222cf ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--276b96e48754d7f5ba865bd7f5b37c11 ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.UpdateBoundJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.UpdateBoundJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--381a3a85c237f2f5ef34ba69d4bda072 ---method=Unity.Burst.Intrinsics.X86, Unity.Burst, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::DoGetCSRTrampoline()--89425a97f3f500fa810ad03f0c382542 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeStream+ConstructJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeStream+ConstructJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--b78f808503c8b5fe97a83e833bd5871d ---platform=Windows ---backend=burst-llvm-16 ---target=AVX2 ---global-safety-checks-setting=Off ---meta-data-generation=False ---dump=Function ---float-precision=Standard ---target-framework=NetFramework ---linker-options=PdbAltPath="Home Protector_Data/Plugins/x86_64/lib_burst_generated.pdb" ---generate-link-xml=Temp\burst.link.xml ---temp-folder=C:\Unity github\Home Protector\Temp\Burst ---key-folder=C:/Program Files/Unity/Hub/Editor/2022.3.37f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport ---decode-folder=C:\Unity github\Home Protector\Library\Burst ---output=C:\Unity github\Home Protector\Temp\BurstOutput\Data\Plugins\x86_64\lib_burst_generated ---pdb-search-paths=Temp/ManagedSymbols/ - ---method=Unity.Burst.BurstCompiler+BurstCompilerHelper, Unity.Burst, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::IsBurstEnabled()--8c2be93e18276203cbd918daa2748a10 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--82b0ba09e7cb740f2e20482d3814830b ---method=Unity.Collections.xxHash3, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Hash64Long(System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--93df17b7366cd622dfa5ea2d3c75cf0b ---method=UnityEngine.U2D.SpriteShapeGenerator, Unity.2D.SpriteShape.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::UTessellator(UnityEngine.U2D.SpriteShapeSegment&, UnityEngine.SpriteShapeModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Mathematics.float2*, Unity.Mathematics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.UInt16*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int32&, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int32&, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.Allocator, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--061acaf8bf970e2528896e65f9c91f2c ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.CopySpriteRendererBuffersJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.CopySpriteRendererBuffersJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--2b06055de97035295dc032db19a3a735 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeListDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeListDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--4a1dc7df3f09b836e86a41d0d8fb4229 ---method=UnityEngine.Jobs.IJobParallelForTransformExtensions+TransformParallelForLoopStruct`1[[UnityEngine.U2D.Animation.WorldToLocalTransformAccessJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.WorldToLocalTransformAccessJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--b0197e8b2118e6410ef3f798b24a1e6e ---method=UnityEngine.U2D.Animation.BurstedSpriteSkinUtilities, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::ValidateBoneWeights(UnityEngine.U2D.Animation.NativeCustomSlice`1[[UnityEngine.BoneWeight, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--9425db96a9fb33479746c6501570455e ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeReferenceDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeReferenceDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--baf840f8150b604b0fd300ceb19dd50e ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[UnityEngine.U2D.Animation.PrepareDeformJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.PrepareDeformJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--a10c29fb1a626a4dab6bf90980926746 ---method=Unity.Burst.Intrinsics.X86, Unity.Burst, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::DoSetCSRTrampoline(System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--da352d92cabf024fc9986011d52a4537 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--164a9957f2c75e5d4b481d1ceff90393 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeQueueDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeQueueDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--68a8ea65a4f1ea752d1138be3be73a9a ---method=Unity.Collections.xxHash3, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Hash128Long(System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.Byte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Mathematics.uint4&, Unity.Mathematics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)--f7daf29273ab2f86d86c27c3a1d6eeb5 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJobList, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeStream+ConstructJobList&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--428d454056b9288c93f4435d6e6f7fda ---method=Unity.Collections.RewindableAllocator, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Try(System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.AllocatorManager+Block&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--cf20d690c33ab495d44c548cd6a31428 ---method=Unity.Collections.AllocatorManager+SlabAllocator, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Try(System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.AllocatorManager+Block&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--2434a4c10d01dbab5e7438b2b580d1d1 ---method=Unity.Collections.AllocatorManager+StackAllocator, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Try(System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Collections.AllocatorManager+Block&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)--478bf3abafa12cba2083fb45bca79b9c ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDataDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeHashMapDataDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--2ef0a503423574beae197ba4b01ed0be ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[UnityEngine.U2D.Animation.FillPerSkinJobSingleThread, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.FillPerSkinJobSingleThread&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--7194d9a68a20c1c6a01d3a365d4f21b9 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeStream+ConstructJobList, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeStream+ConstructJobList&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--959783104064e8c81fba5d33d94ead01 ---method=UnityEngine.Jobs.IJobParallelForTransformExtensions+TransformParallelForLoopStruct`1[[UnityEngine.U2D.Animation.LocalToWorldTransformAccessJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.LocalToWorldTransformAccessJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--f9554e48e09171c93d417c182c09c36b ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[UnityEngine.U2D.SpriteShapeGenerator, Unity.2D.SpriteShape.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.SpriteShapeGenerator&, Unity.2D.SpriteShape.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--a185c62eba2497c95197140e5282b27a ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.BoneDeformBatchedJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.BoneDeformBatchedJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--6d933222c5b0c0c915d062861958d408 ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.CalculateSpriteSkinAABBJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.CalculateSpriteSkinAABBJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--122fae680333e8e2ba58f80110a0a78c ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.SkinDeformBatchedJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.SkinDeformBatchedJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--aece0ca012db7ae9f82cc8b3c490870a ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeStream+DisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeStream+DisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--ca60ab232d19a9f4380a530fa0d222cf ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.LowLevel.Unsafe.UnsafeDisposeJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.LowLevel.Unsafe.UnsafeDisposeJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--276b96e48754d7f5ba865bd7f5b37c11 ---method=Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[[UnityEngine.U2D.Animation.UpdateBoundJob, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(UnityEngine.U2D.Animation.UpdateBoundJob&, Unity.2D.Animation.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--381a3a85c237f2f5ef34ba69d4bda072 ---method=Unity.Burst.Intrinsics.X86, Unity.Burst, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::DoGetCSRTrampoline()--89425a97f3f500fa810ad03f0c382542 ---method=Unity.Jobs.IJobExtensions+JobStruct`1[[Unity.Collections.NativeStream+ConstructJob, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null::Execute(Unity.Collections.NativeStream+ConstructJob&, Unity.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|System.IntPtr, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089|Unity.Jobs.LowLevel.Unsafe.JobRanges&, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null|System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)--b78f808503c8b5fe97a83e833bd5871d - diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Assembly-CSharp.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Assembly-CSharp.dll" deleted file mode 100644 index f5c525a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Assembly-CSharp.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/LiteDB.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/LiteDB.dll" deleted file mode 100644 index eded373..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/LiteDB.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Mono.Security.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Mono.Security.dll" deleted file mode 100644 index 59bff7b..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Mono.Security.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Collections.Concurrent.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Collections.Concurrent.dll" deleted file mode 100644 index bcb9a5e..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Collections.Concurrent.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Collections.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Collections.dll" deleted file mode 100644 index 51a515a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Collections.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.ComponentModel.Composition.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.ComponentModel.Composition.dll" deleted file mode 100644 index d3678ac..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.ComponentModel.Composition.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Configuration.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Configuration.dll" deleted file mode 100644 index 7984438..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Configuration.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Core.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Core.dll" deleted file mode 100644 index e2cc691..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Core.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Data.DataSetExtensions.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Data.DataSetExtensions.dll" deleted file mode 100644 index 373e0d2..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Data.DataSetExtensions.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Data.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Data.dll" deleted file mode 100644 index 4c7750c..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Data.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Diagnostics.Debug.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Diagnostics.Debug.dll" deleted file mode 100644 index dcf1ebc..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Diagnostics.Debug.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Drawing.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Drawing.dll" deleted file mode 100644 index 6649770..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Drawing.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.EnterpriseServices.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.EnterpriseServices.dll" deleted file mode 100644 index f6c4979..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.EnterpriseServices.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Globalization.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Globalization.dll" deleted file mode 100644 index 7599003..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Globalization.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.Compression.FileSystem.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.Compression.FileSystem.dll" deleted file mode 100644 index 42dc20f..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.Compression.FileSystem.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.Compression.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.Compression.dll" deleted file mode 100644 index e741db0..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.Compression.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.FileSystem.Primitives.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.FileSystem.Primitives.dll" deleted file mode 100644 index 5ad17b2..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.FileSystem.Primitives.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.FileSystem.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.FileSystem.dll" deleted file mode 100644 index b259fc2..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.FileSystem.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.dll" deleted file mode 100644 index 8dcb896..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.IO.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Linq.Expressions.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Linq.Expressions.dll" deleted file mode 100644 index ff9e76d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Linq.Expressions.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Linq.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Linq.dll" deleted file mode 100644 index 16a4414..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Linq.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Net.Http.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Net.Http.dll" deleted file mode 100644 index 9ce971c..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Net.Http.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Numerics.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Numerics.dll" deleted file mode 100644 index ea84d45..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Numerics.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.Extensions.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.Extensions.dll" deleted file mode 100644 index d7dc48d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.Extensions.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.TypeExtensions.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.TypeExtensions.dll" deleted file mode 100644 index 862e2de..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.TypeExtensions.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.dll" deleted file mode 100644 index d1fe470..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Reflection.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Resources.ResourceManager.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Resources.ResourceManager.dll" deleted file mode 100644 index 40e2095..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Resources.ResourceManager.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.Extensions.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.Extensions.dll" deleted file mode 100644 index a87c47d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.Extensions.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.InteropServices.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.InteropServices.dll" deleted file mode 100644 index 3735b02..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.InteropServices.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.Serialization.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.Serialization.dll" deleted file mode 100644 index 98cfc6d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.Serialization.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.dll" deleted file mode 100644 index fcb17d5..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Runtime.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.Cryptography.Algorithms.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.Cryptography.Algorithms.dll" deleted file mode 100644 index 638a4cf..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.Cryptography.Algorithms.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.Cryptography.Primitives.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.Cryptography.Primitives.dll" deleted file mode 100644 index 2a3a180..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.Cryptography.Primitives.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.dll" deleted file mode 100644 index 66303d6..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Security.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.ServiceModel.Internals.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.ServiceModel.Internals.dll" deleted file mode 100644 index 0b059ea..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.ServiceModel.Internals.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Text.Encoding.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Text.Encoding.dll" deleted file mode 100644 index 5bdf543..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Text.Encoding.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Text.RegularExpressions.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Text.RegularExpressions.dll" deleted file mode 100644 index ce93271..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Text.RegularExpressions.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Threading.Tasks.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Threading.Tasks.dll" deleted file mode 100644 index ca68dd4..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Threading.Tasks.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Threading.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Threading.dll" deleted file mode 100644 index c7823d3..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Threading.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Transactions.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Transactions.dll" deleted file mode 100644 index ec8ceaf..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Transactions.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Xml.Linq.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Xml.Linq.dll" deleted file mode 100644 index a909757..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Xml.Linq.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Xml.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Xml.dll" deleted file mode 100644 index 6705e80..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.Xml.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.dll" deleted file mode 100644 index b7a54aa..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/System.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Animation.Runtime.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Animation.Runtime.dll" deleted file mode 100644 index 99cb060..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Animation.Runtime.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Common.Runtime.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Common.Runtime.dll" deleted file mode 100644 index 2c35e9c..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Common.Runtime.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.IK.Runtime.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.IK.Runtime.dll" deleted file mode 100644 index aa8ed82..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.IK.Runtime.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.PixelPerfect.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.PixelPerfect.dll" deleted file mode 100644 index 9ca1fab..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.PixelPerfect.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.SpriteShape.Runtime.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.SpriteShape.Runtime.dll" deleted file mode 100644 index 68eae7a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.SpriteShape.Runtime.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Tilemap.Extras.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Tilemap.Extras.dll" deleted file mode 100644 index ef17930..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.2D.Tilemap.Extras.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Burst.Unsafe.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Burst.Unsafe.dll" deleted file mode 100644 index ac36cfa..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Burst.Unsafe.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Burst.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Burst.dll" deleted file mode 100644 index 13df60f..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Burst.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Collections.LowLevel.ILSupport.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Collections.LowLevel.ILSupport.dll" deleted file mode 100644 index a0248a9..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Collections.LowLevel.ILSupport.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Collections.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Collections.dll" deleted file mode 100644 index 6b81757..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Collections.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.InternalAPIEngineBridge.001.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.InternalAPIEngineBridge.001.dll" deleted file mode 100644 index 45e41a7..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.InternalAPIEngineBridge.001.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Mathematics.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Mathematics.dll" deleted file mode 100644 index e67f12a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Mathematics.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.Core.Runtime.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.Core.Runtime.dll" deleted file mode 100644 index b939f20..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.Core.Runtime.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.Core.ShaderLibrary.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.Core.ShaderLibrary.dll" deleted file mode 100644 index c94bd31..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.Core.ShaderLibrary.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll" deleted file mode 100644 index 62ba237..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.TextMeshPro.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.TextMeshPro.dll" deleted file mode 100644 index a68872b..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.TextMeshPro.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Timeline.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Timeline.dll" deleted file mode 100644 index 3d74383..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.Timeline.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Antlr3.Runtime.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Antlr3.Runtime.dll" deleted file mode 100644 index d7de8d6..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Antlr3.Runtime.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Core.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Core.dll" deleted file mode 100644 index 0d42f0e..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Core.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Flow.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Flow.dll" deleted file mode 100644 index 7f809cf..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.Flow.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.State.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.State.dll" deleted file mode 100644 index adb32af..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/Unity.VisualScripting.State.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AIModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AIModule.dll" deleted file mode 100644 index 2ad673c..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AIModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ARModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ARModule.dll" deleted file mode 100644 index a6e3f1d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ARModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AccessibilityModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AccessibilityModule.dll" deleted file mode 100644 index 3a52272..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AccessibilityModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AndroidJNIModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AndroidJNIModule.dll" deleted file mode 100644 index 8dcdfd8..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AndroidJNIModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AnimationModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AnimationModule.dll" deleted file mode 100644 index 2d36639..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AnimationModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AssetBundleModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AssetBundleModule.dll" deleted file mode 100644 index dd8090d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AssetBundleModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AudioModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AudioModule.dll" deleted file mode 100644 index 2d20938..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.AudioModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClothModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClothModule.dll" deleted file mode 100644 index d91cbad..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClothModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClusterInputModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClusterInputModule.dll" deleted file mode 100644 index 5f6d85e..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClusterInputModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClusterRendererModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClusterRendererModule.dll" deleted file mode 100644 index eadbfd6..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ClusterRendererModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ContentLoadModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ContentLoadModule.dll" deleted file mode 100644 index 9417c92..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ContentLoadModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.CoreModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.CoreModule.dll" deleted file mode 100644 index bc6b0a4..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.CoreModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.CrashReportingModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.CrashReportingModule.dll" deleted file mode 100644 index 0b772be..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.CrashReportingModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.DSPGraphModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.DSPGraphModule.dll" deleted file mode 100644 index 0bafe06..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.DSPGraphModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.DirectorModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.DirectorModule.dll" deleted file mode 100644 index f69c8ec..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.DirectorModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GIModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GIModule.dll" deleted file mode 100644 index 67254d9..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GIModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GameCenterModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GameCenterModule.dll" deleted file mode 100644 index bc0cd5d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GameCenterModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GridModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GridModule.dll" deleted file mode 100644 index e02fe3f..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.GridModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.HotReloadModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.HotReloadModule.dll" deleted file mode 100644 index b9c8e27..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.HotReloadModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.IMGUIModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.IMGUIModule.dll" deleted file mode 100644 index 655a95e..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.IMGUIModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ImageConversionModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ImageConversionModule.dll" deleted file mode 100644 index 4a9aff2..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ImageConversionModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.InputLegacyModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.InputLegacyModule.dll" deleted file mode 100644 index e879d63..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.InputLegacyModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.InputModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.InputModule.dll" deleted file mode 100644 index 7d980ed..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.InputModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.JSONSerializeModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.JSONSerializeModule.dll" deleted file mode 100644 index 4437bc6..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.JSONSerializeModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.LocalizationModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.LocalizationModule.dll" deleted file mode 100644 index 30b3fc4..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.LocalizationModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.NVIDIAModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.NVIDIAModule.dll" deleted file mode 100644 index d01d9c8..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.NVIDIAModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ParticleSystemModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ParticleSystemModule.dll" deleted file mode 100644 index e8f822a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ParticleSystemModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PerformanceReportingModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PerformanceReportingModule.dll" deleted file mode 100644 index 3ed7459..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PerformanceReportingModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.Physics2DModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.Physics2DModule.dll" deleted file mode 100644 index 6d4665a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.Physics2DModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PhysicsModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PhysicsModule.dll" deleted file mode 100644 index 45183a2..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PhysicsModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ProfilerModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ProfilerModule.dll" deleted file mode 100644 index de77222..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ProfilerModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PropertiesModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PropertiesModule.dll" deleted file mode 100644 index ab467e7..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.PropertiesModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll" deleted file mode 100644 index 7ea5d8e..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ScreenCaptureModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ScreenCaptureModule.dll" deleted file mode 100644 index e028ed6..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.ScreenCaptureModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SharedInternalsModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SharedInternalsModule.dll" deleted file mode 100644 index 577c966..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SharedInternalsModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SpriteMaskModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SpriteMaskModule.dll" deleted file mode 100644 index 373f2a2..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SpriteMaskModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SpriteShapeModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SpriteShapeModule.dll" deleted file mode 100644 index 49866b7..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SpriteShapeModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.StreamingModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.StreamingModule.dll" deleted file mode 100644 index 10c3c00..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.StreamingModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SubstanceModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SubstanceModule.dll" deleted file mode 100644 index 7b9fc65..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SubstanceModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SubsystemsModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SubsystemsModule.dll" deleted file mode 100644 index 2302fdd..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.SubsystemsModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TLSModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TLSModule.dll" deleted file mode 100644 index d4b76dc..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TLSModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TerrainModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TerrainModule.dll" deleted file mode 100644 index 048dea3..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TerrainModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TerrainPhysicsModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TerrainPhysicsModule.dll" deleted file mode 100644 index ecc1460..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TerrainPhysicsModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextCoreFontEngineModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextCoreFontEngineModule.dll" deleted file mode 100644 index c0110c5..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextCoreFontEngineModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextCoreTextEngineModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextCoreTextEngineModule.dll" deleted file mode 100644 index 4a782cc..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextCoreTextEngineModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextRenderingModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextRenderingModule.dll" deleted file mode 100644 index 22d77ae..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TextRenderingModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TilemapModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TilemapModule.dll" deleted file mode 100644 index 1ba2da3..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.TilemapModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UI.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UI.dll" deleted file mode 100644 index 37fcdea..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UI.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UIElementsModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UIElementsModule.dll" deleted file mode 100644 index 65d9640..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UIElementsModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UIModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UIModule.dll" deleted file mode 100644 index 2e328bf..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UIModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UmbraModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UmbraModule.dll" deleted file mode 100644 index 3eaf4f1..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UmbraModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityAnalyticsCommonModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityAnalyticsCommonModule.dll" deleted file mode 100644 index 770fa8d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityAnalyticsCommonModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityAnalyticsModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityAnalyticsModule.dll" deleted file mode 100644 index 92f1465..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityAnalyticsModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityConnectModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityConnectModule.dll" deleted file mode 100644 index 0b3b4ef..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityConnectModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityCurlModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityCurlModule.dll" deleted file mode 100644 index acd9055..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityCurlModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityTestProtocolModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityTestProtocolModule.dll" deleted file mode 100644 index 225535a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityTestProtocolModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestAssetBundleModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestAssetBundleModule.dll" deleted file mode 100644 index a3a997d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestAssetBundleModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestAudioModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestAudioModule.dll" deleted file mode 100644 index 3160011..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestAudioModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestModule.dll" deleted file mode 100644 index 990d229..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestTextureModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestTextureModule.dll" deleted file mode 100644 index 7f476bd..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestTextureModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestWWWModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestWWWModule.dll" deleted file mode 100644 index add1eb4..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.UnityWebRequestWWWModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VFXModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VFXModule.dll" deleted file mode 100644 index 09af1d7..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VFXModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VRModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VRModule.dll" deleted file mode 100644 index 33152d3..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VRModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VehiclesModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VehiclesModule.dll" deleted file mode 100644 index 2ba0393..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VehiclesModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VideoModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VideoModule.dll" deleted file mode 100644 index b34cf2a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VideoModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VirtualTexturingModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VirtualTexturingModule.dll" deleted file mode 100644 index 3db7f9e..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.VirtualTexturingModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.WindModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.WindModule.dll" deleted file mode 100644 index f3b39f2..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.WindModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.XRModule.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.XRModule.dll" deleted file mode 100644 index 1209704..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.XRModule.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.dll" deleted file mode 100644 index a37f06d..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/UnityEngine.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/mscorlib.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/mscorlib.dll" deleted file mode 100644 index 0b8d4ad..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/mscorlib.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/netstandard.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/netstandard.dll" deleted file mode 100644 index 12f381a..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Managed/netstandard.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Plugins/x86_64/AppUIMuseNativePlugin.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Plugins/x86_64/AppUIMuseNativePlugin.dll" deleted file mode 100644 index fe90f92..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Plugins/x86_64/AppUIMuseNativePlugin.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Plugins/x86_64/lib_burst_generated.dll" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Plugins/x86_64/lib_burst_generated.dll" deleted file mode 100644 index 4745921..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Plugins/x86_64/lib_burst_generated.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Resources/unity default resources" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Resources/unity default resources" deleted file mode 100644 index 3155a99..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Resources/unity default resources" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Resources/unity_builtin_extra" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Resources/unity_builtin_extra" deleted file mode 100644 index d88d85e..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/Resources/unity_builtin_extra" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/RuntimeInitializeOnLoads.json" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/RuntimeInitializeOnLoads.json" deleted file mode 100644 index 8c5cd04..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/RuntimeInitializeOnLoads.json" +++ /dev/null @@ -1 +0,0 @@ -{"root":[{"assemblyName":"Unity.2D.Animation.Runtime","nameSpace":"","className":"$BurstDirectCallInitializer","methodName":"Initialize","loadTypes":2,"isUnityClass":true},{"assemblyName":"Unity.2D.SpriteShape.Runtime","nameSpace":"","className":"$BurstDirectCallInitializer","methodName":"Initialize","loadTypes":2,"isUnityClass":true},{"assemblyName":"Unity.Collections","nameSpace":"","className":"$BurstDirectCallInitializer","methodName":"Initialize","loadTypes":2,"isUnityClass":true},{"assemblyName":"Unity.RenderPipelines.Core.Runtime","nameSpace":"UnityEngine.Experimental.Rendering","className":"XRSystem","methodName":"XRSystemInit","loadTypes":3,"isUnityClass":true},{"assemblyName":"Unity.RenderPipelines.Core.Runtime","nameSpace":"UnityEngine.Rendering","className":"DebugUpdater","methodName":"RuntimeInit","loadTypes":0,"isUnityClass":true},{"assemblyName":"Unity.VisualScripting.Core","nameSpace":"Unity.VisualScripting","className":"RuntimeVSUsageUtility","methodName":"RuntimeInitializeOnLoadBeforeSceneLoad","loadTypes":1,"isUnityClass":true}]} diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/ScriptingAssemblies.json" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/ScriptingAssemblies.json" deleted file mode 100644 index 210abd0..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/ScriptingAssemblies.json" +++ /dev/null @@ -1 +0,0 @@ -{"names":["UnityEngine.dll","UnityEngine.AIModule.dll","UnityEngine.ARModule.dll","UnityEngine.AccessibilityModule.dll","UnityEngine.AndroidJNIModule.dll","UnityEngine.AnimationModule.dll","UnityEngine.AssetBundleModule.dll","UnityEngine.AudioModule.dll","UnityEngine.ClothModule.dll","UnityEngine.ClusterInputModule.dll","UnityEngine.ClusterRendererModule.dll","UnityEngine.ContentLoadModule.dll","UnityEngine.CoreModule.dll","UnityEngine.CrashReportingModule.dll","UnityEngine.DSPGraphModule.dll","UnityEngine.DirectorModule.dll","UnityEngine.GIModule.dll","UnityEngine.GameCenterModule.dll","UnityEngine.GridModule.dll","UnityEngine.HotReloadModule.dll","UnityEngine.IMGUIModule.dll","UnityEngine.ImageConversionModule.dll","UnityEngine.InputModule.dll","UnityEngine.InputLegacyModule.dll","UnityEngine.JSONSerializeModule.dll","UnityEngine.LocalizationModule.dll","UnityEngine.NVIDIAModule.dll","UnityEngine.ParticleSystemModule.dll","UnityEngine.PerformanceReportingModule.dll","UnityEngine.PhysicsModule.dll","UnityEngine.Physics2DModule.dll","UnityEngine.ProfilerModule.dll","UnityEngine.PropertiesModule.dll","UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll","UnityEngine.ScreenCaptureModule.dll","UnityEngine.SharedInternalsModule.dll","UnityEngine.SpriteMaskModule.dll","UnityEngine.SpriteShapeModule.dll","UnityEngine.StreamingModule.dll","UnityEngine.SubstanceModule.dll","UnityEngine.SubsystemsModule.dll","UnityEngine.TLSModule.dll","UnityEngine.TerrainModule.dll","UnityEngine.TerrainPhysicsModule.dll","UnityEngine.TextCoreFontEngineModule.dll","UnityEngine.TextCoreTextEngineModule.dll","UnityEngine.TextRenderingModule.dll","UnityEngine.TilemapModule.dll","UnityEngine.UIModule.dll","UnityEngine.UIElementsModule.dll","UnityEngine.UmbraModule.dll","UnityEngine.UnityAnalyticsModule.dll","UnityEngine.UnityAnalyticsCommonModule.dll","UnityEngine.UnityConnectModule.dll","UnityEngine.UnityCurlModule.dll","UnityEngine.UnityTestProtocolModule.dll","UnityEngine.UnityWebRequestModule.dll","UnityEngine.UnityWebRequestAssetBundleModule.dll","UnityEngine.UnityWebRequestAudioModule.dll","UnityEngine.UnityWebRequestTextureModule.dll","UnityEngine.UnityWebRequestWWWModule.dll","UnityEngine.VFXModule.dll","UnityEngine.VRModule.dll","UnityEngine.VehiclesModule.dll","UnityEngine.VideoModule.dll","UnityEngine.VirtualTexturingModule.dll","UnityEngine.WindModule.dll","UnityEngine.XRModule.dll","Assembly-CSharp.dll","Unity.2D.IK.Runtime.dll","Unity.RenderPipelines.Core.Runtime.dll","Unity.VisualScripting.Flow.dll","Unity.RenderPipelines.Core.ShaderLibrary.dll","Unity.Collections.dll","Unity.2D.SpriteShape.Runtime.dll","Unity.2D.PixelPerfect.dll","Unity.TextMeshPro.dll","Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll","Unity.Burst.dll","Unity.VisualScripting.Core.dll","Unity.2D.Animation.Runtime.dll","Unity.2D.Tilemap.Extras.dll","UnityEngine.UI.dll","Unity.InternalAPIEngineBridge.001.dll","Unity.2D.Common.Runtime.dll","Unity.Timeline.dll","Unity.Mathematics.dll","Unity.VisualScripting.State.dll","LiteDB.dll","Unity.Collections.LowLevel.ILSupport.dll","Unity.VisualScripting.Antlr3.Runtime.dll","Unity.Burst.Unsafe.dll"],"types":[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]} \ No newline at end of file diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/app.info" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/app.info" deleted file mode 100644 index bb6e745..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/app.info" +++ /dev/null @@ -1,2 +0,0 @@ -DefaultCompany -Home Protector \ No newline at end of file diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/boot.config" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/boot.config" deleted file mode 100644 index 569db36..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/boot.config" +++ /dev/null @@ -1,4 +0,0 @@ -wait-for-native-debugger=0 -hdr-display-enabled=0 -gc-max-time-slice=3 -build-guid=f08c0aa646334283b8d1e45b4125f874 diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers" deleted file mode 100644 index 64ac4b5..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers.assets" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers.assets" deleted file mode 100644 index f510066..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers.assets" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers.assets.resS" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers.assets.resS" deleted file mode 100644 index 719fe0b..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/globalgamemanagers.assets.resS" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/level0" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/level0" deleted file mode 100644 index ab11072..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/level0" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/resources.assets" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/resources.assets" deleted file mode 100644 index 8321e75..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/resources.assets" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/resources.assets.resS" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/resources.assets.resS" deleted file mode 100644 index a3ade34..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/resources.assets.resS" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/sharedassets0.assets" "b/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/sharedassets0.assets" deleted file mode 100644 index 7fa70b3..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/Home Protector_Data/sharedassets0.assets" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/EmbedRuntime/MonoPosixHelper.dll" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/EmbedRuntime/MonoPosixHelper.dll" deleted file mode 100644 index fc08200..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/EmbedRuntime/MonoPosixHelper.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/EmbedRuntime/mono-2.0-bdwgc.dll" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/EmbedRuntime/mono-2.0-bdwgc.dll" deleted file mode 100644 index 4511026..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/EmbedRuntime/mono-2.0-bdwgc.dll" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/Browsers/Compat.browser" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/Browsers/Compat.browser" deleted file mode 100644 index dcedf7f..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/Browsers/Compat.browser" +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/DefaultWsdlHelpGenerator.aspx" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/DefaultWsdlHelpGenerator.aspx" deleted file mode 100644 index f4d74bf..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/DefaultWsdlHelpGenerator.aspx" +++ /dev/null @@ -1,1901 +0,0 @@ -<%-- -// -// DefaultWsdlHelpGenerator.aspx: -// -// Author: -// Lluis Sanchez Gual (lluis@ximian.com) -// -// (C) 2003 Ximian, Inc. http://www.ximian.com -// ---%> - -<%@ Import Namespace="System.Collections" %> -<%@ Import Namespace="System.Collections.Generic" %> -<%@ Import Namespace="System.IO" %> -<%@ Import Namespace="System.Xml.Serialization" %> -<%@ Import Namespace="System.Xml" %> -<%@ Import Namespace="System.Xml.Schema" %> -<%@ Import Namespace="System.Web.Services" %> -<%@ Import Namespace="System.Web.Services.Description" %> -<%@ Import Namespace="System.Web.Services.Configuration" %> -<%@ Import Namespace="System.Web.Configuration" %> -<%@ Import Namespace="System" %> -<%@ Import Namespace="System.Net" %> -<%@ Import Namespace="System.Globalization" %> -<%@ Import Namespace="System.Resources" %> -<%@ Import Namespace="System.Diagnostics" %> -<%@ Import Namespace="System.CodeDom" %> -<%@ Import Namespace="System.CodeDom.Compiler" %> -<%@ Import Namespace="Microsoft.CSharp" %> -<%@ Import Namespace="Microsoft.VisualBasic" %> -<%@ Import Namespace="System.Text" %> -<%@ Import Namespace="System.Text.RegularExpressions" %> -<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %> -<%@ Assembly name="System.Web.Services" %> -<%@ Page debug="true" %> - - - - - - <% - Response.Write (""); - %> - <%=WebServiceName%> Web Service - - - - - - - -
-Web Service
-<%=WebServiceName%> -
- - - - - - - - -
-
-Overview
-
-Service Description -
-Client proxy -

- - - <%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%> - - - op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%> -
-
-
-
-
-
- -
- -<% if (CurrentPage == "main") {%> - - - -

Web Service Overview

- <%=WebServiceDescription%> -

- <% if (ProfileViolations != null && ProfileViolations.Count > 0) { %> -

Basic Profile Conformance

- This web service does not conform to WS-I Basic Profile v1.1 - <% - Response.Write ("
    "); - foreach (BasicProfileViolation vio in ProfileViolations) { - Response.Write ("
  • " + vio.NormativeStatement + ": " + vio.Details); - Response.Write ("
      "); - foreach (string ele in vio.Elements) - Response.Write ("
    • " + ele + "
    • "); - Response.Write ("
    "); - Response.Write ("
  • "); - } - Response.Write ("
"); - }%> - -<%} if (DefaultBinding == null) {%> -This service does not contain any public web method. -<%} else if (CurrentPage == "op") {%> - - - - <%=CurrentOperationName%> -

- <% WriteTabs (); %> -


- - <% if (CurrentTab == "main") { %> - Input Parameters -
- <% if (InParams.Count == 0) { %> - No input parameters
- <% } else { %> - - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%><%#DataBinder.Eval(Container.DataItem, "Type")%>
- <% } %> -
- - <% if (OutParams.Count > 0) { %> - Output Parameters -
- - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%><%#DataBinder.Eval(Container.DataItem, "Type")%>
-
- <% } %> - - Remarks -
- <%=OperationDocumentation%> -

- Technical information -
- Format: <%=CurrentOperationFormat%> -
Supported protocols: <%=CurrentOperationProtocols%> - <% } %> - - - - <% if (CurrentTab == "test") { - if (CurrentOperationSupportsTest) {%> - Enter values for the parameters and click the 'Invoke' button to test this method:

-
- - - - - - - - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%>: ">
 
-
-
"> - The web service returned the following result:

-
-
- -
- <% } else {%> - The test form is not available for this operation because it has parameters with a complex structure. - <% } %> - <% } %> - - - - <% if (CurrentTab == "msg") { %> - - The following are sample SOAP requests and responses for each protocol supported by this method: -

- - <% if (IsOperationSupported ("Soap")) { %> - Soap -

-
<%=GenerateOperationMessages ("Soap", true)%>
-
-
<%=GenerateOperationMessages ("Soap", false)%>
-
- <% } %> - <% if (IsOperationSupported ("HttpGet")) { %> - HTTP Get -

-
<%=GenerateOperationMessages ("HttpGet", true)%>
-
-
<%=GenerateOperationMessages ("HttpGet", false)%>
-
- <% } %> - <% if (IsOperationSupported ("HttpPost")) { %> - HTTP Post -

-
<%=GenerateOperationMessages ("HttpPost", true)%>
-
-
<%=GenerateOperationMessages ("HttpPost", false)%>
-
- <% } %> - - <% } %> -<%} else if (CurrentPage == "proxy") {%> - -
- Select the language for which you want to generate a proxy -   - -    -
-
- <%=CurrentProxytName%>    - Download -

-
-
<%=GetProxyCode ()%>
-
-<%} else if (CurrentPage == "wsdl") {%> - - <% if (descriptions.Count > 1 || schemas.Count > 1) {%> - The description of this web service is composed by several documents. Click on the document you want to see: - - - - <%} else {%> - <%}%> -
- <%=CurrentDocumentName%>    - Download -

-
-
<%=GenerateDocument ()%>
-
- -<%}%> - -














-
- - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/machine.config" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/machine.config" deleted file mode 100644 index 2577c81..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/machine.config" +++ /dev/null @@ -1,280 +0,0 @@ - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- - -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
-
- - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/settings.map" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/settings.map" deleted file mode 100644 index 9a52ccc..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/settings.map" +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/web.config" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/web.config" deleted file mode 100644 index a5190c3..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/2.0/web.config" +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/Browsers/Compat.browser" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/Browsers/Compat.browser" deleted file mode 100644 index dcedf7f..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/Browsers/Compat.browser" +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/DefaultWsdlHelpGenerator.aspx" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/DefaultWsdlHelpGenerator.aspx" deleted file mode 100644 index f4d74bf..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/DefaultWsdlHelpGenerator.aspx" +++ /dev/null @@ -1,1901 +0,0 @@ -<%-- -// -// DefaultWsdlHelpGenerator.aspx: -// -// Author: -// Lluis Sanchez Gual (lluis@ximian.com) -// -// (C) 2003 Ximian, Inc. http://www.ximian.com -// ---%> - -<%@ Import Namespace="System.Collections" %> -<%@ Import Namespace="System.Collections.Generic" %> -<%@ Import Namespace="System.IO" %> -<%@ Import Namespace="System.Xml.Serialization" %> -<%@ Import Namespace="System.Xml" %> -<%@ Import Namespace="System.Xml.Schema" %> -<%@ Import Namespace="System.Web.Services" %> -<%@ Import Namespace="System.Web.Services.Description" %> -<%@ Import Namespace="System.Web.Services.Configuration" %> -<%@ Import Namespace="System.Web.Configuration" %> -<%@ Import Namespace="System" %> -<%@ Import Namespace="System.Net" %> -<%@ Import Namespace="System.Globalization" %> -<%@ Import Namespace="System.Resources" %> -<%@ Import Namespace="System.Diagnostics" %> -<%@ Import Namespace="System.CodeDom" %> -<%@ Import Namespace="System.CodeDom.Compiler" %> -<%@ Import Namespace="Microsoft.CSharp" %> -<%@ Import Namespace="Microsoft.VisualBasic" %> -<%@ Import Namespace="System.Text" %> -<%@ Import Namespace="System.Text.RegularExpressions" %> -<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %> -<%@ Assembly name="System.Web.Services" %> -<%@ Page debug="true" %> - - - - - - <% - Response.Write (""); - %> - <%=WebServiceName%> Web Service - - - - - - - -
-Web Service
-<%=WebServiceName%> -
- - - - - - - - -
-
-Overview
-
-Service Description -
-Client proxy -

- - - <%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%> - - - op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%> -
-
-
-
-
-
- -
- -<% if (CurrentPage == "main") {%> - - - -

Web Service Overview

- <%=WebServiceDescription%> -

- <% if (ProfileViolations != null && ProfileViolations.Count > 0) { %> -

Basic Profile Conformance

- This web service does not conform to WS-I Basic Profile v1.1 - <% - Response.Write ("
    "); - foreach (BasicProfileViolation vio in ProfileViolations) { - Response.Write ("
  • " + vio.NormativeStatement + ": " + vio.Details); - Response.Write ("
      "); - foreach (string ele in vio.Elements) - Response.Write ("
    • " + ele + "
    • "); - Response.Write ("
    "); - Response.Write ("
  • "); - } - Response.Write ("
"); - }%> - -<%} if (DefaultBinding == null) {%> -This service does not contain any public web method. -<%} else if (CurrentPage == "op") {%> - - - - <%=CurrentOperationName%> -

- <% WriteTabs (); %> -


- - <% if (CurrentTab == "main") { %> - Input Parameters -
- <% if (InParams.Count == 0) { %> - No input parameters
- <% } else { %> - - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%><%#DataBinder.Eval(Container.DataItem, "Type")%>
- <% } %> -
- - <% if (OutParams.Count > 0) { %> - Output Parameters -
- - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%><%#DataBinder.Eval(Container.DataItem, "Type")%>
-
- <% } %> - - Remarks -
- <%=OperationDocumentation%> -

- Technical information -
- Format: <%=CurrentOperationFormat%> -
Supported protocols: <%=CurrentOperationProtocols%> - <% } %> - - - - <% if (CurrentTab == "test") { - if (CurrentOperationSupportsTest) {%> - Enter values for the parameters and click the 'Invoke' button to test this method:

-
- - - - - - - - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%>: ">
 
-
-
"> - The web service returned the following result:

-
-
- -
- <% } else {%> - The test form is not available for this operation because it has parameters with a complex structure. - <% } %> - <% } %> - - - - <% if (CurrentTab == "msg") { %> - - The following are sample SOAP requests and responses for each protocol supported by this method: -

- - <% if (IsOperationSupported ("Soap")) { %> - Soap -

-
<%=GenerateOperationMessages ("Soap", true)%>
-
-
<%=GenerateOperationMessages ("Soap", false)%>
-
- <% } %> - <% if (IsOperationSupported ("HttpGet")) { %> - HTTP Get -

-
<%=GenerateOperationMessages ("HttpGet", true)%>
-
-
<%=GenerateOperationMessages ("HttpGet", false)%>
-
- <% } %> - <% if (IsOperationSupported ("HttpPost")) { %> - HTTP Post -

-
<%=GenerateOperationMessages ("HttpPost", true)%>
-
-
<%=GenerateOperationMessages ("HttpPost", false)%>
-
- <% } %> - - <% } %> -<%} else if (CurrentPage == "proxy") {%> - -
- Select the language for which you want to generate a proxy -   - -    -
-
- <%=CurrentProxytName%>    - Download -

-
-
<%=GetProxyCode ()%>
-
-<%} else if (CurrentPage == "wsdl") {%> - - <% if (descriptions.Count > 1 || schemas.Count > 1) {%> - The description of this web service is composed by several documents. Click on the document you want to see: - - - - <%} else {%> - <%}%> -
- <%=CurrentDocumentName%>    - Download -

-
-
<%=GenerateDocument ()%>
-
- -<%}%> - -














-
- - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/machine.config" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/machine.config" deleted file mode 100644 index f3b71c4..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/machine.config" +++ /dev/null @@ -1,307 +0,0 @@ - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- - - -
- -
-
-
-
- - - - -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/settings.map" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/settings.map" deleted file mode 100644 index 4c53aca..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/settings.map" +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/web.config" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/web.config" deleted file mode 100644 index 44cbe18..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.0/web.config" +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/Browsers/Compat.browser" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/Browsers/Compat.browser" deleted file mode 100644 index dcedf7f..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/Browsers/Compat.browser" +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/DefaultWsdlHelpGenerator.aspx" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/DefaultWsdlHelpGenerator.aspx" deleted file mode 100644 index f4d74bf..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/DefaultWsdlHelpGenerator.aspx" +++ /dev/null @@ -1,1901 +0,0 @@ -<%-- -// -// DefaultWsdlHelpGenerator.aspx: -// -// Author: -// Lluis Sanchez Gual (lluis@ximian.com) -// -// (C) 2003 Ximian, Inc. http://www.ximian.com -// ---%> - -<%@ Import Namespace="System.Collections" %> -<%@ Import Namespace="System.Collections.Generic" %> -<%@ Import Namespace="System.IO" %> -<%@ Import Namespace="System.Xml.Serialization" %> -<%@ Import Namespace="System.Xml" %> -<%@ Import Namespace="System.Xml.Schema" %> -<%@ Import Namespace="System.Web.Services" %> -<%@ Import Namespace="System.Web.Services.Description" %> -<%@ Import Namespace="System.Web.Services.Configuration" %> -<%@ Import Namespace="System.Web.Configuration" %> -<%@ Import Namespace="System" %> -<%@ Import Namespace="System.Net" %> -<%@ Import Namespace="System.Globalization" %> -<%@ Import Namespace="System.Resources" %> -<%@ Import Namespace="System.Diagnostics" %> -<%@ Import Namespace="System.CodeDom" %> -<%@ Import Namespace="System.CodeDom.Compiler" %> -<%@ Import Namespace="Microsoft.CSharp" %> -<%@ Import Namespace="Microsoft.VisualBasic" %> -<%@ Import Namespace="System.Text" %> -<%@ Import Namespace="System.Text.RegularExpressions" %> -<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %> -<%@ Assembly name="System.Web.Services" %> -<%@ Page debug="true" %> - - - - - - <% - Response.Write (""); - %> - <%=WebServiceName%> Web Service - - - - - - - -
-Web Service
-<%=WebServiceName%> -
- - - - - - - - -
-
-Overview
-
-Service Description -
-Client proxy -

- - - <%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%> - - - op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%> -
-
-
-
-
-
- -
- -<% if (CurrentPage == "main") {%> - - - -

Web Service Overview

- <%=WebServiceDescription%> -

- <% if (ProfileViolations != null && ProfileViolations.Count > 0) { %> -

Basic Profile Conformance

- This web service does not conform to WS-I Basic Profile v1.1 - <% - Response.Write ("
    "); - foreach (BasicProfileViolation vio in ProfileViolations) { - Response.Write ("
  • " + vio.NormativeStatement + ": " + vio.Details); - Response.Write ("
      "); - foreach (string ele in vio.Elements) - Response.Write ("
    • " + ele + "
    • "); - Response.Write ("
    "); - Response.Write ("
  • "); - } - Response.Write ("
"); - }%> - -<%} if (DefaultBinding == null) {%> -This service does not contain any public web method. -<%} else if (CurrentPage == "op") {%> - - - - <%=CurrentOperationName%> -

- <% WriteTabs (); %> -


- - <% if (CurrentTab == "main") { %> - Input Parameters -
- <% if (InParams.Count == 0) { %> - No input parameters
- <% } else { %> - - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%><%#DataBinder.Eval(Container.DataItem, "Type")%>
- <% } %> -
- - <% if (OutParams.Count > 0) { %> - Output Parameters -
- - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%><%#DataBinder.Eval(Container.DataItem, "Type")%>
-
- <% } %> - - Remarks -
- <%=OperationDocumentation%> -

- Technical information -
- Format: <%=CurrentOperationFormat%> -
Supported protocols: <%=CurrentOperationProtocols%> - <% } %> - - - - <% if (CurrentTab == "test") { - if (CurrentOperationSupportsTest) {%> - Enter values for the parameters and click the 'Invoke' button to test this method:

-
- - - - - - - - - - - - - - - -
<%#DataBinder.Eval(Container.DataItem, "Name")%>: ">
 
-
-
"> - The web service returned the following result:

-
-
- -
- <% } else {%> - The test form is not available for this operation because it has parameters with a complex structure. - <% } %> - <% } %> - - - - <% if (CurrentTab == "msg") { %> - - The following are sample SOAP requests and responses for each protocol supported by this method: -

- - <% if (IsOperationSupported ("Soap")) { %> - Soap -

-
<%=GenerateOperationMessages ("Soap", true)%>
-
-
<%=GenerateOperationMessages ("Soap", false)%>
-
- <% } %> - <% if (IsOperationSupported ("HttpGet")) { %> - HTTP Get -

-
<%=GenerateOperationMessages ("HttpGet", true)%>
-
-
<%=GenerateOperationMessages ("HttpGet", false)%>
-
- <% } %> - <% if (IsOperationSupported ("HttpPost")) { %> - HTTP Post -

-
<%=GenerateOperationMessages ("HttpPost", true)%>
-
-
<%=GenerateOperationMessages ("HttpPost", false)%>
-
- <% } %> - - <% } %> -<%} else if (CurrentPage == "proxy") {%> - -
- Select the language for which you want to generate a proxy -   - -    -
-
- <%=CurrentProxytName%>    - Download -

-
-
<%=GetProxyCode ()%>
-
-<%} else if (CurrentPage == "wsdl") {%> - - <% if (descriptions.Count > 1 || schemas.Count > 1) {%> - The description of this web service is composed by several documents. Click on the document you want to see: - - - - <%} else {%> - <%}%> -
- <%=CurrentDocumentName%>    - Download -

-
-
<%=GenerateDocument ()%>
-
- -<%}%> - -














-
- - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/machine.config" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/machine.config" deleted file mode 100644 index 4557095..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/machine.config" +++ /dev/null @@ -1,310 +0,0 @@ - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
- - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- - - -
- -
-
-
-
- - - - -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/settings.map" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/settings.map" deleted file mode 100644 index 4c53aca..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/settings.map" +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/web.config" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/web.config" deleted file mode 100644 index 30524c1..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/4.5/web.config" +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/browscap.ini" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/browscap.ini" deleted file mode 100644 index 1267e1d..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/browscap.ini" +++ /dev/null @@ -1,16979 +0,0 @@ -;;; Provided courtesy of http://browsers.garykeith.com -;;; Created on Wednesday, June 17, 2009 at 6:30 AM GMT - -[GJK_Browscap_Version] -Version=4476 -Released=Wed, 17 Jun 2009 06:30:21 -0000 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DefaultProperties - -[DefaultProperties] -Browser=DefaultProperties -Version=0 -MajorVer=0 -MinorVer=0 -Platform=unknown -Alpha=false -Beta=false -Win16=false -Win32=false -Win64=false -Frames=false -IFrames=false -Tables=false -Cookies=false -BackgroundSounds=false -CDF=false -VBScript=false -JavaApplets=false -JavaScript=false -ActiveXControls=false -isBanned=false -isMobileDevice=false -isSyndicationReader=false -Crawler=false -CssVersion=0 -supportsCSS=false -AOL=false -aolVersion=0 -ECMAScriptVersion=0.0 -W3CDOMVersion=0.0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Ask - -[Ask] -Parent=DefaultProperties -Browser=Ask -Frames=true -Tables=true -Crawler=true - -[Mozilla/?.0 (compatible; Ask Jeeves/Teoma*)] -Parent=Ask -Browser=Teoma - -[Mozilla/2.0 (compatible; Ask Jeeves)] -Parent=Ask -Browser=AskJeeves - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Baidu - -[Baidu] -Parent=DefaultProperties -Browser=Baidu -Frames=true -Tables=true -Crawler=true - -[BaiduImageSpider*] -Parent=Baidu -Browser=BaiduImageSpider - -[Baiduspider*] -Parent=Baidu -Browser=BaiDu - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Google - -[Google] -Parent=DefaultProperties -Browser=Google -Frames=true -IFrames=true -Tables=true -JavaScript=true -Crawler=true - -[* (compatible; Googlebot-Mobile/2.1; *http://www.google.com/bot.html)] -Parent=Google -Browser=Googlebot-Mobile -Frames=false -IFrames=false -Tables=false - -[*Google Wireless Transcoder*] -Parent=Google -Browser=Google Wireless Transcoder - -[AdsBot-Google (?http://www.google.com/adsbot.html)] -Parent=Google -Browser=AdsBot-Google - -[Feedfetcher-Google-iGoogleGadgets;*] -Parent=Google -Browser=iGoogleGadgets -isBanned=true -isSyndicationReader=true - -[Feedfetcher-Google;*] -Parent=Google -Browser=Feedfetcher-Google -isBanned=true -isSyndicationReader=true - -[Google OpenSocial agent (http://www.google.com/feedfetcher.html)] -Parent=Google -Browser=Google OpenSocial - -[Google-Site-Verification/1.0] -Parent=Google -Browser=Google-Site-Verification - -[Google-Sitemaps/*] -Parent=Google -Browser=Google-Sitemaps - -[Googlebot-Image/*] -Parent=Google -Browser=Googlebot-Image -CDF=true - -[googlebot-urlconsole] -Parent=Google -Browser=googlebot-urlconsole - -[Googlebot-Video/1.0] -Parent=Google -Browser=Google-Video - -[Googlebot/2.1 (?http://www.google.com/bot.html)] -Parent=Google -Browser=Googlebot - -[Googlebot/2.1 (?http://www.googlebot.com/bot.html)] -Parent=Google -Browser=Googlebot - -[Googlebot/Test*] -Parent=Google -Browser=Googlebot/Test - -[gsa-crawler*] -Parent=Google -Browser=Google Search Appliance -isBanned=true - -[Mediapartners-Google*] -Parent=Google -Browser=Mediapartners-Google - -[Mozilla/4.0 (compatible; Google Desktop)] -Parent=Google -Browser=Google Desktop - -[Mozilla/4.0 (compatible; GoogleToolbar*)] -Parent=Google -Browser=Google Toolbar -isBanned=true - -[Mozilla/5.0 (compatible; Google Keyword Tool;*)] -Parent=Google -Browser=Google Keyword Tool - -[Mozilla/5.0 (compatible; Googlebot/2.1; ?http://www.google.com/bot.html)] -Parent=Google -Browser=Google Webmaster Tools - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Inktomi - -[Inktomi] -Parent=DefaultProperties -Browser=Inktomi -Frames=true -Tables=true -Crawler=true - -[* (compatible;YahooSeeker/M1A1-R2D2; *)] -Parent=Inktomi -Browser=YahooSeeker-Mobile -Frames=false -Tables=false - -[Mozilla/4.0] -Parent=Inktomi - -[Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)] -Parent=Inktomi -Win32=true - -[Mozilla/4.0 (compatible; Yahoo Japan; for robot study; kasugiya)] -Parent=Inktomi -Browser=Yahoo! RobotStudy -isBanned=true - -[Mozilla/5.0 (compatible; BMC/1.0 (Y!J-AGENT))] -Parent=Inktomi -Browser=Y!J-AGENT/BMC - -[Mozilla/5.0 (compatible; BMF/1.0 (Y!J-AGENT))] -Parent=Inktomi -Browser=Y!J-AGENT/BMF - -[Mozilla/5.0 (compatible; BMI/1.0 (Y!J-AGENT; 1.0))] -Parent=Inktomi -Browser=Y!J-AGENT/BMI - -[Mozilla/5.0 (compatible; Yahoo! DE Slurp; http://help.yahoo.com/help/us/ysearch/slurp)] -Parent=Inktomi -Browser=Yahoo! Directory Engine - -[Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)] -Parent=Inktomi -Browser=Yahoo! Slurp China - -[Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)] -Parent=Inktomi -Browser=Yahoo! Slurp -Version=3.0 -MajorVer=3 -MinorVer=0 - -[Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)] -Parent=Inktomi -Browser=Yahoo! Slurp - -[Mozilla/5.0 (compatible; Yahoo! Verifier/1.1)] -Parent=Inktomi -Browser=Yahoo! Verifier -Version=1.1 -MajorVer=1 -MinorVer=1 - -[Mozilla/5.0 (Slurp/cat; slurp@inktomi.com; http://www.inktomi.com/slurp.html)] -Parent=Inktomi -Browser=Slurp/cat - -[Mozilla/5.0 (Slurp/si; slurp@inktomi.com; http://www.inktomi.com/slurp.html)] -Parent=Inktomi - -[Mozilla/5.0 (Yahoo-MMCrawler/4.0; mailto:vertical-crawl-support@yahoo-inc.com)] -Parent=Inktomi -Browser=Yahoo-MMCrawler -Version=4.0 -MajorVer=4 -MinorVer=0 - -[Scooter/*] -Parent=Inktomi -Browser=Scooter - -[Scooter/3.3Y!CrawlX] -Parent=Inktomi -Browser=Scooter/3.3Y!CrawlX -Version=3.3 -MajorVer=3 -MinorVer=3 - -[slurp] -Parent=Inktomi -Browser=slurp - -[Y!J-BSC/1.0*] -Parent=Inktomi -Browser=Y!J-BSC -Version=1.0 -MajorVer=1 -MinorVer=0 -isBanned=true - -[Y!J-SRD/1.0] -Parent=Inktomi -Browser=Y!J-SRD -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Yahoo Mindset] -Parent=Inktomi -Browser=Yahoo Mindset - -[Yahoo Pipes*] -Parent=Inktomi -Browser=Yahoo Pipes - -[Yahoo! Mindset] -Parent=Inktomi -Browser=Yahoo! Mindset - -[Yahoo! Slurp/Site Explorer] -Parent=Inktomi -Browser=Yahoo! Site Explorer - -[Yahoo-Blogs/*] -Parent=Inktomi -Browser=Yahoo-Blogs - -[Yahoo-MMAudVid*] -Parent=Inktomi -Browser=Yahoo-MMAudVid - -[Yahoo-MMCrawler*] -Parent=Inktomi -Browser=Yahoo-MMCrawler -isBanned=true - -[YahooFeedSeeker*] -Parent=Inktomi -Browser=YahooFeedSeeker -isSyndicationReader=true -Crawler=false - -[YahooSeeker/*] -Parent=Inktomi -Browser=YahooSeeker -isMobileDevice=true - -[YahooSeeker/CafeKelsa (compatible; Konqueror/3.2; FreeBSD*) (KHTML, like Gecko)] -Parent=Inktomi -Browser=YahooSeeker/CafeKelsa - -[YahooSeeker/CafeKelsa-dev (compatible; Konqueror/3.2; FreeBSD*) (KHTML, like Gecko)] -Parent=Inktomi - -[YahooVideoSearch*] -Parent=Inktomi -Browser=YahooVideoSearch - -[YahooYSMcm*] -Parent=Inktomi -Browser=YahooYSMcm - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MSN - -[MSN] -Parent=DefaultProperties -Browser=MSN -Frames=true -Tables=true -Crawler=true - -[adidxbot/1.1 (?http://search.msn.com/msnbot.htm)] -Parent=MSN -Browser=adidxbot - -[librabot/1.0 (*)] -Parent=MSN -Browser=librabot - -[llssbot/1.0] -Parent=MSN -Browser=llssbot -Version=1.0 -MajorVer=1 -MinorVer=0 - -[MSMOBOT/1.1*] -Parent=MSN -Browser=msnbot-mobile -Version=1.1 -MajorVer=1 -MinorVer=1 - -[MSNBot-Academic/1.0*] -Parent=MSN -Browser=MSNBot-Academic -Version=1.0 -MajorVer=1 -MinorVer=0 - -[msnbot-media/1.0*] -Parent=MSN -Browser=msnbot-media -Version=1.0 -MajorVer=1 -MinorVer=0 - -[msnbot-media/1.1*] -Parent=MSN -Browser=msnbot-media -Version=1.1 -MajorVer=1 -MinorVer=1 - -[MSNBot-News/1.0*] -Parent=MSN -Browser=MSNBot-News -Version=1.0 -MajorVer=1 -MinorVer=0 - -[MSNBot-NewsBlogs/1.0*] -Parent=MSN -Browser=MSNBot-NewsBlogs -Version=1 -MajorVer=1 -MinorVer=0 - -[msnbot-products] -Parent=MSN -Browser=msnbot-products - -[msnbot-webmaster/1.0 (*http://search.msn.com/msnbot.htm)] -Parent=MSN -Browser=msnbot-webmaster tools - -[msnbot/1.0*] -Parent=MSN -Browser=msnbot -Version=1.0 -MajorVer=1 -MinorVer=0 - -[msnbot/1.1*] -Parent=MSN -Browser=msnbot -Version=1.1 -MajorVer=1 -MinorVer=1 - -[msnbot/2.0b*] -Parent=MSN -Version=2.0 -MajorVer=2 -MinorVer=0 -Beta=true - -[MSR-ISRCCrawler] -Parent=MSN -Browser=MSR-ISRCCrawler - -[renlifangbot/1.0 (?http://search.msn.com/msnbot.htm)] -Parent=MSN -Browser=renlifangbot - -[T-Mobile Dash Mozilla/4.0 (*) MSNBOT-MOBILE/1.1 (*)] -Parent=MSN -Browser=msnbot-mobile - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Yahoo - -[Yahoo] -Parent=DefaultProperties -Browser=Yahoo -Frames=true -Tables=true -Crawler=true - -[Mozilla/4.0 (compatible; Y!J; for robot study*)] -Parent=Yahoo -Browser=Y!J - -[Mozilla/5.0 (Yahoo-Test/4.0*)] -Parent=Yahoo -Browser=Yahoo-Test -Version=4.0 -MajorVer=4 -MinorVer=0 - -[mp3Spider cn-search-devel at yahoo-inc dot com] -Parent=Yahoo -Browser=Yahoo! Media -isBanned=true - -[My Browser] -Parent=Yahoo -Browser=Yahoo! My Browser - -[Y!OASIS/*] -Parent=Yahoo -Browser=Y!OASIS -isBanned=true - -[YahooYSMcm/2.0.0] -Parent=Yahoo -Browser=YahooYSMcm -Version=2.0 -MajorVer=2 -MinorVer=0 -isBanned=true - -[YRL_ODP_CRAWLER] -Parent=Yahoo -Browser=YRL_ODP_CRAWLER -isBanned=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Yandex - -[Yandex] -Parent=DefaultProperties -Browser=Yandex -Frames=true -IFrames=true -Tables=true -Cookies=true -Crawler=true - -[Mozilla/4.0 (compatible; MSIE 5.0; YANDEX)] -Parent=Yandex - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9) Gecko VisualParser/3.0] -Parent=Yandex -Browser=VisualParser -isBanned=true - -[YaDirectBot/*] -Parent=Yandex -Browser=YaDirectBot - -[Yandex/*] -Parent=Yandex - -[YandexBlog/*] -Parent=Yandex -Browser=YandexBlog -isSyndicationReader=true - -[YandexSomething/*] -Parent=Yandex -Browser=YandexSomething -isSyndicationReader=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Best of the Web - -[Best of the Web] -Parent=DefaultProperties -Browser=Best of the Web -Frames=true -Tables=true - -[Mozilla/4.0 (compatible; BOTW Feed Grabber; *http://botw.org)] -Parent=Best of the Web -Browser=BOTW Feed Grabber -isSyndicationReader=true -Crawler=false - -[Mozilla/4.0 (compatible; BOTW Spider; *http://botw.org)] -Parent=Best of the Web -Browser=BOTW Spider -isBanned=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Boitho - -[Boitho] -Parent=DefaultProperties -Browser=Boitho -Frames=true -Tables=true -Crawler=true - -[boitho.com-dc/*] -Parent=Boitho -Browser=boitho.com-dc - -[boitho.com-robot/*] -Parent=Boitho -Browser=boitho.com-robot - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Convera - -[Convera] -Parent=DefaultProperties -Browser=Convera -Frames=true -Tables=true -Crawler=true - -[ConveraCrawler/*] -Parent=Convera -Browser=ConveraCrawler - -[ConveraMultiMediaCrawler/0.1*] -Parent=Convera -Browser=ConveraMultiMediaCrawler -Version=0.1 -MajorVer=0 -MinorVer=1 - -[CrawlConvera*] -Parent=Convera -Browser=CrawlConvera - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DotBot - -[DotBot] -Parent=DefaultProperties -Browser=DotBot -Frames=true -Tables=true -isBanned=true -Crawler=true - -[DotBot/* (http://www.dotnetdotcom.org/*)] -Parent=DotBot - -[Mozilla/5.0 (compatible; DotBot/*; http://www.dotnetdotcom.org/*)] -Parent=DotBot - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Entireweb - -[Entireweb] -Parent=DefaultProperties -Browser=Entireweb -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[Mozilla/4.0 (compatible; SpeedySpider; www.entireweb.com)] -Parent=Entireweb - -[Speedy Spider (*Beta/*)] -Parent=Entireweb - -[Speedy?Spider?(http://www.entireweb.com*)] -Parent=Entireweb - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Envolk - -[Envolk] -Parent=DefaultProperties -Browser=Envolk -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[envolk/* (?http://www.envolk.com/envolk*)] -Parent=Envolk - -[envolk?ITS?spider/* (?http://www.envolk.com/envolk*)] -Parent=Envolk - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Exalead - -[Exalead] -Parent=DefaultProperties -Browser=Exalead -Frames=true -Tables=true -isBanned=true -Crawler=true - -[Exabot-Images/1.0] -Parent=Exalead -Browser=Exabot-Images -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Exabot-Test/*] -Parent=Exalead -Browser=Exabot-Test - -[Exabot/2.0] -Parent=Exalead -Browser=Exabot - -[Exabot/3.0] -Parent=Exalead -Browser=Exabot -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=Liberate - -[Exalead NG/*] -Parent=Exalead -Browser=Exalead NG -isBanned=true - -[Mozilla/5.0 (compatible; Exabot-Images/3.0;*)] -Parent=Exalead -Browser=Exabot-Images - -[Mozilla/5.0 (compatible; Exabot/3.0 (BiggerBetter/tests);*)] -Parent=Exalead -Browser=Exabot/BiggerBetter/tests - -[Mozilla/5.0 (compatible; Exabot/3.0;*)] -Parent=Exalead -Browser=Exabot -isBanned=false - -[Mozilla/5.0 (compatible; NGBot/*)] -Parent=Exalead - -[ng/*] -Parent=Exalead -Browser=Exalead Previewer -Version=1.0 -MajorVer=1 -MinorVer=0 -isBanned=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fast/AllTheWeb - -[Fast/AllTheWeb] -Parent=DefaultProperties -Browser=Fast/AllTheWeb -Alpha=true -Beta=true -Win16=true -Win32=true -Win64=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -isBanned=true -isMobileDevice=true -isSyndicationReader=true -Crawler=true - -[*FAST Enterprise Crawler*] -Parent=Fast/AllTheWeb -Browser=FAST Enterprise Crawler - -[FAST Data Search Document Retriever/4.0*] -Parent=Fast/AllTheWeb -Browser=FAST Data Search Document Retriever - -[FAST MetaWeb Crawler (helpdesk at fastsearch dot com)] -Parent=Fast/AllTheWeb -Browser=FAST MetaWeb Crawler - -[Fast PartnerSite Crawler*] -Parent=Fast/AllTheWeb -Browser=FAST PartnerSite - -[FAST-WebCrawler/*] -Parent=Fast/AllTheWeb -Browser=FAST-WebCrawler - -[FAST-WebCrawler/*/FirstPage*] -Parent=Fast/AllTheWeb -Browser=FAST-WebCrawler/FirstPage - -[FAST-WebCrawler/*/Fresh*] -Parent=Fast/AllTheWeb -Browser=FAST-WebCrawler/Fresh - -[FAST-WebCrawler/*/PartnerSite*] -Parent=Fast/AllTheWeb -Browser=FAST PartnerSite - -[FAST-WebCrawler/*?Multimedia*] -Parent=Fast/AllTheWeb -Browser=FAST-WebCrawler/Multimedia - -[FastSearch Web Crawler for*] -Parent=Fast/AllTheWeb -Browser=FastSearch Web Crawler - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Gigabot - -[Gigabot] -Parent=DefaultProperties -Browser=Gigabot -Frames=true -IFrames=true -Tables=true -Crawler=true - -[Gigabot*] -Parent=Gigabot - -[GigabotSiteSearch/*] -Parent=Gigabot -Browser=GigabotSiteSearch - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Ilse - -[Ilse] -Parent=DefaultProperties -Browser=Ilse -Frames=true -Tables=true -Crawler=true - -[IlseBot/*] -Parent=Ilse - -[INGRID/?.0*] -Parent=Ilse -Browser=Ilse - -[Mozilla/3.0 (INGRID/*] -Parent=Ilse -Browser=Ilse - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iVia Project - -[iVia Project] -Parent=DefaultProperties -Browser=iVia Project -Frames=true -IFrames=true -Tables=true -Crawler=true - -[DataFountains/DMOZ Downloader*] -Parent=iVia Project -Browser=DataFountains/DMOZ Downloader -isBanned=true - -[DataFountains/DMOZ Feature Vector Corpus Creator*] -Parent=iVia Project -Browser=DataFountains/DMOZ Feature Vector Corpus - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Jayde Online - -[Jayde Online] -Parent=DefaultProperties -Browser=Jayde Online -Frames=true -Tables=true -Crawler=true - -[ExactSeek Crawler/*] -Parent=Jayde Online -Browser=ExactSeek Crawler - -[exactseek-pagereaper-* (crawler@exactseek.com)] -Parent=Jayde Online -Browser=exactseek-pagereaper -isBanned=true - -[exactseek.com] -Parent=Jayde Online -Browser=exactseek.com - -[Jayde Crawler*] -Parent=Jayde Online -Browser=Jayde Crawler - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lycos - -[Lycos] -Parent=DefaultProperties -Browser=Lycos -Frames=true -Tables=true -Crawler=true - -[Lycos*] -Parent=Lycos -Browser=Lycos - -[Lycos-Proxy] -Parent=Lycos -Browser=Lycos-Proxy - -[Lycos-Spider_(modspider)] -Parent=Lycos -Browser=Lycos-Spider_(modspider) - -[Lycos-Spider_(T-Rex)] -Parent=Lycos -Browser=Lycos-Spider_(T-Rex) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Naver - -[Naver] -Parent=DefaultProperties -Browser=Naver -isBanned=true -Crawler=true - -[Cowbot-* (NHN Corp*naver.com)] -Parent=Naver -Browser=Naver Cowbot - -[Mozilla/4.0 (compatible; NaverBot/*; *)] -Parent=Naver - -[Mozilla/4.0 (compatible; NaverBot/*; nhnbot@naver.com)] -Parent=Naver -Browser=Naver NaverBot - -[NaverBot-* (NHN Corp*naver.com)] -Parent=Naver -Browser=Naver NHN Corp - -[Yeti/*] -Parent=Naver -Browser=Yeti - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Snap - -[Snap] -Parent=DefaultProperties -Browser=Snap -isBanned=true -Crawler=true - -[Mozilla/5.0 (SnapPreviewBot) Gecko/* Firefox/*] -Parent=Snap - -[Snapbot/*] -Parent=Snap - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Sogou - -[Sogou] -Parent=DefaultProperties -Browser=Sogou -Frames=true -Tables=true -isBanned=true -Crawler=true - -[shaboyi spider] -Parent=Sogou -Browser=Sogou/Shaboyi Spider - -[Sogou develop spider/*] -Parent=Sogou -Browser=Sogou Develop Spider - -[Sogou head spider*] -Parent=Sogou -Browser=Sogou/HEAD Spider - -[sogou js robot(*)] -Parent=Sogou - -[Sogou Orion spider/*] -Parent=Sogou -Browser=Sogou Orion spider - -[Sogou Pic Agent] -Parent=Sogou -Browser=Sogou/Image Crawler - -[Sogou Pic Spider] -Parent=Sogou -Browser=Sogou Pic Spider - -[Sogou Push Spider/*] -Parent=Sogou -Browser=Sogou Push Spider - -[sogou spider] -Parent=Sogou -Browser=Sogou/Spider - -[sogou web spider*] -Parent=Sogou -Browser=sogou web spider - -[Sogou-Test-Spider/*] -Parent=Sogou -Browser=Sogou-Test-Spider - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; YodaoBot - -[YodaoBot] -Parent=DefaultProperties -Browser=YodaoBot -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[Mozilla/5.0 (compatible; YodaoBot/1.*)] -Parent=YodaoBot - -[Mozilla/5.0 (compatible;YodaoBot-Image/1.*)] -Parent=YodaoBot -Browser=YodaoBot-Image - -[WAP_Browser/5.0 (compatible; YodaoBot/1.*)] -Parent=YodaoBot - -[YodaoBot/1.* (*)] -Parent=YodaoBot - -[Best Whois (http://www.bestwhois.net/)] -Parent=DNS Tools -Browser=Best Whois - -[DNSGroup/*] -Parent=DNS Tools -Browser=DNS Group Crawler - -[NG-Search/*] -Parent=Exalead -Browser=NG-SearchBot - -[TouchStone] -Parent=Feeds Syndicators -Browser=TouchStone -isSyndicationReader=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; General Crawlers - -[General Crawlers] -Parent=DefaultProperties -Browser=General Crawlers -Crawler=true - -[A .NET Web Crawler] -Parent=General Crawlers -isBanned=true - -[BabalooSpider/1.*] -Parent=General Crawlers -Browser=BabalooSpider - -[BilgiBot/*] -Parent=General Crawlers -Browser=BilgiBot -isBanned=true - -[bot/* (bot; *bot@bot.bot)] -Parent=General Crawlers -Browser=bot -isBanned=true - -[CyberPatrol*] -Parent=General Crawlers -Browser=CyberPatrol -isBanned=true - -[Cynthia 1.0] -Parent=General Crawlers -Browser=Cynthia -Version=1.0 -MajorVer=1 -MinorVer=0 - -[ddetailsbot (http://www.displaydetails.com)] -Parent=General Crawlers -Browser=ddetailsbot - -[DomainCrawler/1.0 (info@domaincrawler.com; http://www.domaincrawler.com/domains/view/*)] -Parent=General Crawlers -Browser=DomainCrawler - -[DomainsBotBot/1.*] -Parent=General Crawlers -Browser=DomainsBotBot -isBanned=true - -[DomainsDB.net MetaCrawler*] -Parent=General Crawlers -Browser=DomainsDB - -[Drupal (*)] -Parent=General Crawlers -Browser=Drupal - -[Dumbot (version *)*] -Parent=General Crawlers -Browser=Dumbfind - -[EuripBot/*] -Parent=General Crawlers -Browser=Europe Internet Portal - -[eventax/*] -Parent=General Crawlers -Browser=eventax - -[FANGCrawl/*] -Parent=General Crawlers -Browser=Safe-t.net Web Filtering Service -isBanned=true - -[favorstarbot/*] -Parent=General Crawlers -Browser=favorstarbot -isBanned=true - -[FollowSite.com (*)] -Parent=General Crawlers -Browser=FollowSite -isBanned=true - -[Gaisbot*] -Parent=General Crawlers -Browser=Gaisbot - -[Healthbot/Health_and_Longevity_Project_(HealthHaven.com) ] -Parent=General Crawlers -Browser=Healthbot -isBanned=true - -[hitcrawler_0.*] -Parent=General Crawlers -Browser=hitcrawler -isBanned=true - -[htdig/*] -Parent=General Crawlers -Browser=ht://Dig - -[http://hilfe.acont.de/bot.html ACONTBOT] -Parent=General Crawlers -Browser=ACONTBOT -isBanned=true - -[JetBrains*] -Parent=General Crawlers -Browser=Omea Pro - -[KakleBot - www.kakle.com/0.1] -Parent=General Crawlers -Browser=KakleBot - -[KBeeBot/0.*] -Parent=General Crawlers -Browser=KBeeBot -isBanned=true - -[Keyword Density/*] -Parent=General Crawlers -Browser=Keyword Density - -[LetsCrawl.com/1.0*] -Parent=General Crawlers -Browser=LetsCrawl.com -isBanned=true - -[Lincoln State Web Browser] -Parent=General Crawlers -Browser=Lincoln State Web Browser -isBanned=true - -[Links4US-Crawler,*] -Parent=General Crawlers -Browser=Links4US-Crawler -isBanned=true - -[Lorkyll *.* -- lorkyll@444.net] -Parent=General Crawlers -Browser=Lorkyll -isBanned=true - -[Lsearch/sondeur] -Parent=General Crawlers -Browser=Lsearch/sondeur -isBanned=true - -[LucidMedia ClickSense/4.?] -Parent=General Crawlers -Browser=LucidMedia-ClickSense -isBanned=true - -[MapoftheInternet.com?(?http://MapoftheInternet.com)] -Parent=General Crawlers -Browser=MapoftheInternet -isBanned=true - -[Marvin v0.3] -Parent=General Crawlers -Browser=MedHunt -Version=0.3 -MajorVer=0 -MinorVer=3 - -[masidani_bot_v0.6*] -Parent=General Crawlers -Browser=masidani_bot - -[Metaspinner/0.01 (Metaspinner; http://www.meta-spinner.de/; support@meta-spinner.de/)] -Parent=General Crawlers -Browser=Metaspinner/0.01 -Version=0.01 -MajorVer=0 -MinorVer=01 - -[metatagsdir/*] -Parent=General Crawlers -Browser=metatagsdir -isBanned=true - -[Microsoft Windows Network Diagnostics] -Parent=General Crawlers -Browser=Microsoft Windows Network Diagnostics -isBanned=true - -[Miva (AlgoFeedback@miva.com)] -Parent=General Crawlers -Browser=Miva - -[moget/*] -Parent=General Crawlers -Browser=Goo - -[Mozdex/0.7.2*] -Parent=General Crawlers -Browser=Mozdex - -[Mozilla Compatible (MS IE 3.01 WinNT)] -Parent=General Crawlers -isBanned=true - -[Mozilla/* (compatible; WebCapture*)] -Parent=General Crawlers -Browser=WebCapture - -[Mozilla/4.0 (compatible; DepSpid/*)] -Parent=General Crawlers -Browser=DepSpid - -[Mozilla/4.0 (compatible; MSIE *; Windows NT *; SV1)] -Parent=General Crawlers -Browser=AVG - -[Mozilla/4.0 (compatible; MSIE 4.01; Vonna.com b o t)] -Parent=General Crawlers -Browser=Vonna.com -isBanned=true - -[Mozilla/4.0 (compatible; MSIE 4.01; Windows95)] -Parent=General Crawlers -Win32=true - -[Mozilla/4.0 (compatible; MSIE 4.5; Windows 98; )] -Parent=General Crawlers -Win32=true - -[Mozilla/4.0 (compatible; MyFamilyBot/*)] -Parent=General Crawlers -Browser=MyFamilyBot - -[Mozilla/4.0 (compatible; N-Stealth)] -Parent=General Crawlers -Browser=N-Stealth - -[Mozilla/4.0 (compatible; Scumbot/*; Linux/*)] -Parent=General Crawlers -isBanned=true - -[Mozilla/4.0 (compatible; Spider; Linux)] -Parent=General Crawlers -isBanned=true - -[Mozilla/4.0 (compatible; Win32)] -Parent=General Crawlers -Browser=Unknown Crawler -isBanned=true - -[Mozilla/4.1] -Parent=General Crawlers -isBanned=true - -[Mozilla/4.5] -Parent=General Crawlers -isBanned=true - -[Mozilla/5.0 (*http://gnomit.com/) Gecko/* Gnomit/1.0] -Parent=General Crawlers -Browser=Gnomit -isBanned=true - -[Mozilla/5.0 (compatible; AboutUsBot/*)] -Parent=General Crawlers -Browser=AboutUsBot -isBanned=true - -[Mozilla/5.0 (compatible; BuzzRankingBot/*)] -Parent=General Crawlers -Browser=BuzzRankingBot -isBanned=true - -[Mozilla/5.0 (compatible; Diffbot/0.1; http://www.diffbot.com)] -Parent=General Crawlers -Browser=Diffbot - -[Mozilla/5.0 (compatible; FirstSearchBot/1.0; *)] -Parent=General Crawlers -Browser=FirstSearchBot - -[mozilla/5.0 (compatible; genevabot http://www.healthdash.com)] -Parent=General Crawlers -Browser=Healthdash - -[Mozilla/5.0 (compatible; JadynAveBot; *http://www.jadynave.com/robot*] -Parent=General Crawlers -Browser=JadynAveBot -isBanned=true - -[Mozilla/5.0 (compatible; Kyluka crawl; http://www.kyluka.com/crawl.html; crawl@kyluka.com)] -Parent=General Crawlers -Browser=Kyluka - -[Mozilla/5.0 (compatible; MJ12bot/v1.2.*; http://www.majestic12.co.uk/bot.php*)] -Parent=General Crawlers -Browser=MJ12bot -Version=1.2 -MajorVer=1 -MinorVer=2 - -[Mozilla/5.0 (compatible; MSIE 7.0 ?http://www.europarchive.org)] -Parent=General Crawlers -Browser=Europe Web Archive - -[Mozilla/5.0 (compatible; Seznam screenshot-generator 2.0;*)] -Parent=General Crawlers -Browser=Seznam screenshot-generator -isBanned=true - -[Mozilla/5.0 (compatible; Twingly Recon; http://www.twingly.com/)] -Parent=General Crawlers -Browser=Twingly Recon - -[Mozilla/5.0 (compatible; unwrapbot/2.*; http://www.unwrap.jp*)] -Parent=General Crawlers -Browser=UnWrap - -[Mozilla/5.0 (compatible; Vermut*)] -Parent=General Crawlers -Browser=Vermut - -[Mozilla/5.0 (compatible; Webbot/*)] -Parent=General Crawlers -Browser=Webbot.ru -isBanned=true - -[n4p_bot*] -Parent=General Crawlers -Browser=n4p_bot - -[nabot*] -Parent=General Crawlers -Browser=Nabot - -[NetCarta_WebMapper/*] -Parent=General Crawlers -Browser=NetCarta_WebMapper -isBanned=true - -[NetID.com Bot*] -Parent=General Crawlers -Browser=NetID.com Bot -isBanned=true - -[neTVision AG andreas.heidoetting@thomson-webcast.net] -Parent=General Crawlers -Browser=neTVision - -[NextopiaBOT*] -Parent=General Crawlers -Browser=NextopiaBOT - -[nicebot] -Parent=General Crawlers -Browser=nicebot -isBanned=true - -[niXXieBot?Foster*] -Parent=General Crawlers -Browser=niXXiebot-Foster - -[Nozilla/P.N (Just for IDS woring)] -Parent=General Crawlers -Browser=Nozilla/P.N -isBanned=true - -[Nudelsalat/*] -Parent=General Crawlers -Browser=Nudelsalat -isBanned=true - -[NV32ts] -Parent=General Crawlers -Browser=NV32ts -isBanned=true - -[Ocelli/*] -Parent=General Crawlers -Browser=Ocelli - -[OpenTaggerBot (http://www.opentagger.com/opentaggerbot.htm)] -Parent=General Crawlers -Browser=OpenTaggerBot - -[Oracle Enterprise Search] -Parent=General Crawlers -Browser=Oracle Enterprise Search -isBanned=true - -[Oracle Ultra Search] -Parent=General Crawlers -Browser=Oracle Ultra Search - -[Pajaczek/*] -Parent=General Crawlers -Browser=Pajaczek -isBanned=true - -[panscient.com] -Parent=General Crawlers -Browser=panscient.com -isBanned=true - -[Patwebbot (http://www.herz-power.de/technik.html)] -Parent=General Crawlers -Browser=Patwebbot - -[PDFBot (crawler@pdfind.com)] -Parent=General Crawlers -Browser=PDFBot - -[Pete-Spider/1.*] -Parent=General Crawlers -Browser=Pete-Spider -isBanned=true - -[PhpDig/*] -Parent=General Crawlers -Browser=PhpDig - -[PlantyNet_WebRobot*] -Parent=General Crawlers -Browser=PlantyNet -isBanned=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PluckIt - -[PluckItCrawler/1.0 (*)] -Parent=General Crawlers -isMobileDevice=true - -[PMAFind] -Parent=General Crawlers -Browser=PMAFind -isBanned=true - -[Poodle_predictor_1.0] -Parent=General Crawlers -Browser=Poodle Predictor - -[QuickFinder Crawler] -Parent=General Crawlers -Browser=QuickFinder -isBanned=true - -[Radiation Retriever*] -Parent=General Crawlers -Browser=Radiation Retriever -isBanned=true - -[RedCarpet/*] -Parent=General Crawlers -Browser=RedCarpet -isBanned=true - -[RixBot (http://babelserver.org/rix)] -Parent=General Crawlers -Browser=RixBot - -[Rome Client (http://tinyurl.com/64t5n) Ver: 0.*] -Parent=General Crawlers -Browser=TinyURL - -[SBIder/*] -Parent=General Crawlers -Browser=SiteSell - -[ScollSpider/2.*] -Parent=General Crawlers -Browser=ScollSpider -isBanned=true - -[Search Fst] -Parent=General Crawlers -Browser=Search Fst - -[searchbot admin@google.com] -Parent=General Crawlers -Browser=searchbot -isBanned=true - -[Seeker.lookseek.com] -Parent=General Crawlers -Browser=LookSeek -isBanned=true - -[semanticdiscovery/*] -Parent=General Crawlers -Browser=Semantic Discovery - -[SeznamBot/*] -Parent=General Crawlers -Browser=SeznamBot -isBanned=true - -[Shelob (shelob@gmx.net)] -Parent=General Crawlers -Browser=Shelob -isBanned=true - -[shelob v1.*] -Parent=General Crawlers -Browser=shelob -isBanned=true - -[ShopWiki/1.0*] -Parent=General Crawlers -Browser=ShopWiki -Version=1.0 -MajorVer=1 -MinorVer=0 - -[ShowXML/1.0 libwww/5.4.0] -Parent=General Crawlers -Browser=ShowXML -isBanned=true - -[sitecheck.internetseer.com*] -Parent=General Crawlers -Browser=Internetseer - -[SMBot/*] -Parent=General Crawlers -Browser=SMBot - -[sohu*] -Parent=General Crawlers -Browser=sohu-search -isBanned=true - -[SpankBot*] -Parent=General Crawlers -Browser=SpankBot -isBanned=true - -[spider (tspyyp@tom.com)] -Parent=General Crawlers -Browser=spider (tspyyp@tom.com) -isBanned=true - -[Sunrise/0.*] -Parent=General Crawlers -Browser=Sunrise -isBanned=true - -[Superpages URL Verification Engine] -Parent=General Crawlers -Browser=Superpages - -[Surf Knight] -Parent=General Crawlers -Browser=Surf Knight -isBanned=true - -[SurveyBot/*] -Parent=General Crawlers -Browser=SurveyBot -isBanned=true - -[SynapticSearch/AI Crawler 1.?] -Parent=General Crawlers -Browser=SynapticSearch -isBanned=true - -[SyncMgr] -Parent=General Crawlers -Browser=SyncMgr - -[Tagyu Agent/1.0] -Parent=General Crawlers -Browser=Tagyu - -[Talkro Web-Shot/*] -Parent=General Crawlers -Browser=Talkro Web-Shot -isBanned=true - -[Tecomi Bot (http://www.tecomi.com/bot.htm)] -Parent=General Crawlers -Browser=Tecomi - -[TheInformant*] -Parent=General Crawlers -Browser=TheInformant -isBanned=true - -[Toata dragostea*] -Parent=General Crawlers -Browser=Toata dragostea -isBanned=true - -[Tutorial Crawler*] -Parent=General Crawlers -isBanned=true - -[UbiCrawler/*] -Parent=General Crawlers -Browser=UbiCrawler - -[UCmore] -Parent=General Crawlers -Browser=UCmore - -[User*Agent:*] -Parent=General Crawlers -isBanned=true - -[USER_AGENT] -Parent=General Crawlers -Browser=USER_AGENT -isBanned=true - -[VadixBot] -Parent=General Crawlers -Browser=VadixBot - -[VengaBot/*] -Parent=General Crawlers -Browser=VengaBot -isBanned=true - -[Visicom Toolbar] -Parent=General Crawlers -Browser=Visicom Toolbar - -[W3C-WebCon/*] -Parent=General Crawlers -Browser=W3C-WebCon - -[Webclipping.com] -Parent=General Crawlers -Browser=Webclipping.com -isBanned=true - -[webcollage/*] -Parent=General Crawlers -Browser=WebCollage -isBanned=true - -[WebCrawler_1.*] -Parent=General Crawlers -Browser=WebCrawler - -[WebFilter Robot*] -Parent=General Crawlers -Browser=WebFilter Robot - -[WeBoX/*] -Parent=General Crawlers -Browser=WeBoX - -[WebTrends/*] -Parent=General Crawlers -Browser=WebTrends - -[West Wind Internet Protocols*] -Parent=General Crawlers -Browser=Versatel -isBanned=true - -[WhizBang] -Parent=General Crawlers -Browser=WhizBang - -[Willow Internet Crawler by Twotrees V*] -Parent=General Crawlers -Browser=Willow Internet Crawler - -[WIRE/* (Linux; i686; Bot,Robot,Spider,Crawler)] -Parent=General Crawlers -Browser=WIRE -isBanned=true - -[www.fi crawler, contact crawler@www.fi] -Parent=General Crawlers -Browser=www.fi crawler - -[Xerka WebBot v1.*] -Parent=General Crawlers -Browser=Xerka -isBanned=true - -[XML Sitemaps Generator*] -Parent=General Crawlers -Browser=XML Sitemaps Generator - -[XSpider*] -Parent=General Crawlers -Browser=XSpider -isBanned=true - -[YooW!/* (?http://www.yoow.eu)] -Parent=General Crawlers -Browser=YooW! -isBanned=true - -[HiddenMarket-*] -Parent=General RSS -Browser=HiddenMarket -isBanned=true - -[FOTOCHECKER] -Parent=Image Crawlers -Browser=FOTOCHECKER -isBanned=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Search Engines - -[Search Engines] -Parent=DefaultProperties -Browser=Search Engines -Crawler=true - -[*FDSE robot*] -Parent=Search Engines -Browser=FDSE Robot - -[*Fluffy the spider*] -Parent=Search Engines -Browser=SearchHippo - -[Abacho*] -Parent=Search Engines -Browser=Abacho - -[ah-ha.com crawler (crawler@ah-ha.com)] -Parent=Search Engines -Browser=Ah-Ha - -[AIBOT/*] -Parent=Search Engines -Browser=21Seek.Com - -[ALeadSoftbot/*] -Parent=Search Engines -Browser=ALeadSoftbot - -[Amfibibot/*] -Parent=Search Engines -Browser=Amfibi - -[AnswerBus (http://www.answerbus.com/)] -Parent=Search Engines - -[antibot-V*] -Parent=Search Engines -Browser=antibot - -[appie*(www.walhello.com)] -Parent=Search Engines -Browser=Walhello - -[ASPSeek/*] -Parent=Search Engines -Browser=ASPSeek - -[BigCliqueBOT/*] -Parent=Search Engines -Browser=BigClique.com/BigClic.com - -[Blaiz-Bee/*] -Parent=Search Engines -Browser=RawGrunt - -[btbot/*] -Parent=Search Engines -Browser=Bit Torrent Search Engine - -[Busiversebot/v1.0 (http://www.busiverse.com/bot.php)] -Parent=Search Engines -Browser=Busiversebot -isBanned=true - -[CatchBot/*; http://www.catchbot.com] -Parent=Search Engines -Browser=CatchBot -Version=1.0 -MajorVer=1 -MinorVer=0 - -[CipinetBot (http://www.cipinet.com/bot.html)] -Parent=Search Engines -Browser=CipinetBot - -[Cogentbot/1.?*] -Parent=Search Engines -Browser=Cogentbot - -[compatible; Mozilla 4.0; MSIE 5.5; (SqwidgeBot v1.01 - http://www.sqwidge.com/bot/)] -Parent=Search Engines -Browser=SqwidgeBot - -[cosmos*] -Parent=Search Engines -Browser=Xyleme - -[Deepindex] -Parent=Search Engines -Browser=Deepindex - -[DiamondBot] -Parent=Search Engines -Browser=DiamondBot - -[Dumbot*] -Parent=Search Engines -Browser=Dumbot -Version=0.2 -MajorVer=0 -MinorVer=2 -Beta=true - -[Eule?Robot*] -Parent=Search Engines -Browser=Eule-Robot - -[Faxobot/*] -Parent=Search Engines -Browser=Faxo - -[Filangy/*] -Parent=Search Engines -Browser=Filangy - -[flatlandbot/*] -Parent=Search Engines -Browser=Flatland - -[Fooky.com/ScorpionBot/ScoutOut;*] -Parent=Search Engines -Browser=ScorpionBot -isBanned=true - -[FyberSpider*] -Parent=Search Engines -Browser=FyberSpider -isBanned=true - -[Gaisbot/*] -Parent=Search Engines -Browser=Gaisbot - -[gazz/*(gazz@nttr.co.jp)] -Parent=Search Engines -Browser=gazz - -[geniebot*] -Parent=Search Engines -Browser=GenieKnows - -[GOFORITBOT (?http://www.goforit.com/about/?)] -Parent=Search Engines -Browser=GoForIt - -[GoGuidesBot/*] -Parent=Search Engines -Browser=GoGuidesBot - -[GroschoBot/*] -Parent=Search Engines -Browser=GroschoBot - -[GurujiBot/1.*] -Parent=Search Engines -Browser=GurujiBot -isBanned=true - -[HenryTheMiragoRobot*] -Parent=Search Engines -Browser=Mirago - -[HolmesBot (http://holmes.ge)] -Parent=Search Engines -Browser=HolmesBot - -[Hotzonu/*] -Parent=Search Engines -Browser=Hotzonu - -[HyperEstraier/*] -Parent=Search Engines -Browser=HyperEstraier -isBanned=true - -[i1searchbot/*] -Parent=Search Engines -Browser=i1searchbot - -[IIITBOT/1.*] -Parent=Search Engines -Browser=Indian Language Web Search Engine - -[Iltrovatore-?etaccio/*] -Parent=Search Engines -Browser=Iltrovatore-Setaccio - -[InfociousBot (?http://corp.infocious.com/tech_crawler.php)] -Parent=Search Engines -Browser=InfociousBot -isBanned=true - -[Infoseek SideWinder/*] -Parent=Search Engines -Browser=Infoseek - -[iSEEKbot/*] -Parent=Search Engines -Browser=iSEEKbot - -[Knight/0.? (Zook Knight; http://knight.zook.in/; knight@zook.in)] -Parent=Search Engines -Browser=Knight - -[Kolinka Forum Search (www.kolinka.com)] -Parent=Search Engines -Browser=Kolinka Forum Search -isBanned=true - -[KRetrieve/] -Parent=Search Engines -Browser=KRetrieve -isBanned=true - -[LapozzBot/*] -Parent=Search Engines -Browser=LapozzBot - -[Linknzbot*] -Parent=Search Engines -Browser=Linknzbot - -[LocalcomBot/*] -Parent=Search Engines -Browser=LocalcomBot - -[Mail.Ru/1.0] -Parent=Search Engines -Browser=Mail.Ru - -[MaSagool/*] -Parent=Search Engines -Browser=Sagoo -Version=1.0 -MajorVer=1 -MinorVer=0 - -[miniRank/*] -Parent=Search Engines -Browser=miniRank - -[Mnogosearch*] -Parent=Search Engines -Browser=Mnogosearch - -[Mozilla/0.9* no dos :) (Linux)] -Parent=Search Engines -Browser=goliat -isBanned=true - -[Mozilla/4.0 (compatible; Arachmo)] -Parent=Search Engines -Browser=Arachmo - -[Mozilla/4.0 (compatible; http://search.thunderstone.com/texis/websearch/about.html)] -Parent=Search Engines -Browser=ThunderStone -isBanned=true - -[Mozilla/4.0 (compatible; MSIE *; Windows NT; Girafabot; girafabot at girafa dot com; http://www.girafa.com)] -Parent=Search Engines -Browser=Girafabot -Win32=true - -[Mozilla/4.0 (compatible; Vagabondo/*; webcrawler at wise-guys dot nl; *)] -Parent=Search Engines -Browser=Vagabondo - -[Mozilla/4.0(?compatible; MSIE 6.0; Qihoo *)] -Parent=Search Engines -Browser=Qihoo - -[Mozilla/4.7 (compatible; WhizBang; http://www.whizbang.com/crawler)] -Parent=Search Engines -Browser=Inxight Software - -[Mozilla/5.0 (*) VoilaBot*] -Parent=Search Engines -Browser=VoilaBot -isBanned=true - -[Mozilla/5.0 (compatible; ActiveTouristBot*; http://www.activetourist.com)] -Parent=Search Engines -Browser=ActiveTouristBot - -[Mozilla/5.0 (compatible; Butterfly/1.0; *)*] -Parent=Search Engines -Browser=Butterfly - -[Mozilla/5.0 (compatible; Charlotte/*; *)] -Parent=Search Engines -Browser=Charlotte -Beta=true -isBanned=true - -[Mozilla/5.0 (compatible; CXL-FatAssANT*)] -Parent=Search Engines -Browser=FatAssANT - -[Mozilla/5.0 (compatible; DBLBot/1.0; ?http://www.dontbuylists.com/)] -Parent=Search Engines -Browser=DBLBot -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 (compatible; EARTHCOM.info/*)] -Parent=Search Engines -Browser=EARTHCOM - -[Mozilla/5.0 (compatible; Lipperhey Spider; http://www.lipperhey.com/)] -Parent=Search Engines -Browser=Lipperhey Spider - -[Mozilla/5.0 (compatible; MojeekBot/*; http://www.mojeek.com/bot.html)] -Parent=Search Engines -Browser=MojeekBot - -[Mozilla/5.0 (compatible; NLCrawler/*] -Parent=Search Engines -Browser=Northern Light Web Search - -[Mozilla/5.0 (compatible; OsO;*] -Parent=Search Engines -Browser=Octopodus -isBanned=true - -[Mozilla/5.0 (compatible; Pogodak.*)] -Parent=Search Engines -Browser=Pogodak - -[Mozilla/5.0 (compatible; Quantcastbot/1.*)] -Parent=Search Engines -Browser=Quantcastbot - -[Mozilla/5.0 (compatible; ScoutJet; *http://www.scoutjet.com/)] -Parent=Search Engines -Browser=ScoutJet - -[Mozilla/5.0 (compatible; Scrubby/*; http://www.scrubtheweb.com/abs/meta-check.html)] -Parent=Search Engines -Browser=Scrubby -isBanned=true - -[Mozilla/5.0 (compatible; YoudaoBot/1.*; http://www.youdao.com/help/webmaster/spider/*)] -Parent=Search Engines -Browser=YoudaoBot -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 (Twiceler*)] -Parent=Search Engines -Browser=Twiceler -isBanned=true - -[Mozilla/5.0 CostaCider Search*] -Parent=Search Engines -Browser=CostaCider Search - -[Mozilla/5.0 GurujiBot/1.0 (*)] -Parent=Search Engines -Browser=GurujiBot - -[NavissoBot] -Parent=Search Engines -Browser=NavissoBot - -[NextGenSearchBot*(for information visit *)] -Parent=Search Engines -Browser=ZoomInfo -isBanned=true - -[Norbert the Spider(Burf.com)] -Parent=Search Engines -Browser=Norbert the Spider - -[NuSearch Spider*] -Parent=Search Engines -Browser=nuSearch - -[ObjectsSearch/*] -Parent=Search Engines -Browser=ObjectsSearch - -[OpenISearch/1.*] -Parent=Search Engines -Browser=OpenISearch (Amazon) - -[Pagebull http://www.pagebull.com/] -Parent=Search Engines -Browser=Pagebull - -[PEERbot*] -Parent=Search Engines -Browser=PEERbot - -[Pompos/*] -Parent=Search Engines -Browser=Pompos - -[Popdexter/*] -Parent=Search Engines -Browser=Popdex - -[Qweery*] -Parent=Search Engines -Browser=QweeryBot - -[RedCell/* (*)] -Parent=Search Engines -Browser=RedCell - -[Scrubby/*] -Parent=Search Engines -Browser=Scrub The Web - -[Search-10/*] -Parent=Search Engines -Browser=Search-10 - -[search.ch*] -Parent=Search Engines -Browser=Swiss Search Engine - -[Searchmee! Spider*] -Parent=Search Engines -Browser=Searchmee! - -[Seekbot/*] -Parent=Search Engines -Browser=Seekbot - -[SiteSpider (http://www.SiteSpider.com/)] -Parent=Search Engines -Browser=SiteSpider - -[Spinne/*] -Parent=Search Engines -Browser=Spinne - -[sproose/*] -Parent=Search Engines -Browser=Sproose - -[Sqeobot/0.*] -Parent=Search Engines -Browser=Branzel -isBanned=true - -[SquigglebotBot/*] -Parent=Search Engines -Browser=SquigglebotBot -isBanned=true - -[StackRambler/*] -Parent=Search Engines -Browser=StackRambler - -[SygolBot*] -Parent=Search Engines -Browser=SygolBot - -[SynoBot] -Parent=Search Engines -Browser=SynoBot - -[Szukacz/*] -Parent=Search Engines -Browser=Szukacz - -[Tarantula/*] -Parent=Search Engines -Browser=Tarantula -isBanned=true - -[TerrawizBot/*] -Parent=Search Engines -Browser=TerrawizBot -isBanned=true - -[Tkensaku/*] -Parent=Search Engines -Browser=Tkensaku - -[TMCrawler] -Parent=Search Engines -Browser=TMCrawler -isBanned=true - -[Twingly Recon] -Parent=Search Engines -Browser=Twingly Recon -isBanned=true - -[updated/*] -Parent=Search Engines -Browser=Updated! - -[URL Spider Pro/*] -Parent=Search Engines -Browser=URL Spider Pro - -[URL Spider SQL*] -Parent=Search Engines -Browser=Innerprise Enterprise Search - -[VMBot/*] -Parent=Search Engines -Browser=VMBot - -[voyager/2.0 (http://www.kosmix.com/html/crawler.html)] -Parent=Search Engines -Browser=Voyager - -[wadaino.jp-crawler*] -Parent=Search Engines -Browser=wadaino.jp -isBanned=true - -[WebAlta Crawler/*] -Parent=Search Engines -Browser=WebAlta Crawler -isBanned=true - -[WebCorp/*] -Parent=Search Engines -Browser=WebCorp -isBanned=true - -[webcrawl.net] -Parent=Search Engines -Browser=webcrawl.net - -[WISEbot/*] -Parent=Search Engines -Browser=WISEbot -isBanned=true - -[Wotbox/*] -Parent=Search Engines -Browser=Wotbox - -[www.zatka.com] -Parent=Search Engines -Browser=Zatka - -[WWWeasel Robot v*] -Parent=Search Engines -Browser=World Wide Weasel - -[YadowsCrawler*] -Parent=Search Engines -Browser=YadowsCrawler - -[YodaoBot/*] -Parent=Search Engines -Browser=YodaoBot -isBanned=true - -[ZeBot_www.ze.bz*] -Parent=Search Engines -Browser=ZE.bz - -[zibber-v*] -Parent=Search Engines -Browser=Zibb - -[ZipppBot/*] -Parent=Search Engines -Browser=ZipppBot - -[ATA-Translation-Service] -Parent=Translators -Browser=ATA-Translation-Service - -[GJK_Browser_Check] -Parent=Version Checkers -Browser=GJK_Browser_Check - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Hatena - -[Hatena] -Parent=DefaultProperties -Browser=Hatena -isBanned=true -Crawler=true - -[Feed::Find/*] -Parent=Hatena -Browser=Feed Find -isSyndicationReader=true - -[Hatena Antenna/*] -Parent=Hatena -Browser=Hatena Antenna - -[Hatena Bookmark/*] -Parent=Hatena -Browser=Hatena Bookmark - -[Hatena RSS/*] -Parent=Hatena -Browser=Hatena RSS -isSyndicationReader=true - -[Hatena::Crawler/*] -Parent=Hatena -Browser=Hatena Crawler - -[HatenaScreenshot*] -Parent=Hatena -Browser=HatenaScreenshot - -[URI::Fetch/*] -Parent=Hatena -Browser=URI::Fetch - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Internet Archive - -[Internet Archive] -Parent=DefaultProperties -Browser=Internet Archive -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[*heritrix*] -Parent=Internet Archive -Browser=Heritrix -isBanned=true - -[ia_archiver*] -Parent=Internet Archive -Browser=Internet Archive - -[InternetArchive/*] -Parent=Internet Archive -Browser=InternetArchive - -[Mozilla/5.0 (compatible; archive.org_bot/1.*)] -Parent=Internet Archive - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Nutch - -[Nutch] -Parent=DefaultProperties -Browser=Nutch -isBanned=true -Crawler=true - -[*Nutch*] -Parent=Nutch -isBanned=true - -[CazoodleBot/*] -Parent=Nutch -Browser=CazoodleBot - -[LOOQ/0.1*] -Parent=Nutch -Browser=LOOQ - -[Nutch/0.? (OpenX Spider)] -Parent=Nutch - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Webaroo - -[Webaroo] -Parent=DefaultProperties -Browser=Webaroo - -[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Webaroo/*)] -Parent=Webaroo -Browser=Webaroo - -[Mozilla/5.0 (Windows; U; Windows *; *; rv:*) Gecko/* Firefox/* webaroo/*] -Parent=Webaroo -Browser=Webaroo - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Word Press - -[Word Press] -Parent=DefaultProperties -Browser=Word Press -Alpha=true -Beta=true -Win16=true -Win32=true -Win64=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -isBanned=true -isMobileDevice=true -isSyndicationReader=true -Crawler=true - -[WordPress-B-/2.*] -Parent=Word Press -Browser=WordPress-B - -[WordPress-Do-P-/2.*] -Parent=Word Press -Browser=WordPress-Do-P - -[BlueCoat ProxySG] -Parent=Blue Coat Systems -Browser=BlueCoat ProxySG - -[CerberianDrtrs/*] -Parent=Blue Coat Systems -Browser=Cerberian - -[Inne: Mozilla/4.0 (compatible; Cerberian Drtrs*)] -Parent=Blue Coat Systems -Browser=Cerberian - -[Mozilla/4.0 (compatible; Cerberian Drtrs*)] -Parent=Blue Coat Systems -Browser=Cerberian - -[Mozilla/4.0 (compatible; MSIE 6.0; Bluecoat DRTR)] -Parent=Blue Coat Systems -Browser=Bluecoat - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright/Plagiarism - -[Copyright/Plagiarism] -Parent=DefaultProperties -Browser=Copyright/Plagiarism -isBanned=true -Crawler=true - -[BDFetch] -Parent=Copyright/Plagiarism -Browser=BDFetch - -[copyright sheriff (*)] -Parent=Copyright/Plagiarism -Browser=copyright sheriff - -[CopyRightCheck*] -Parent=Copyright/Plagiarism -Browser=CopyRightCheck - -[FairAd Client*] -Parent=Copyright/Plagiarism -Browser=FairAd Client - -[iCopyright Conductor*] -Parent=Copyright/Plagiarism -Browser=iCopyright Conductor - -[IPiumBot laurion(dot)com] -Parent=Copyright/Plagiarism -Browser=IPiumBot - -[IWAgent/*] -Parent=Copyright/Plagiarism -Browser=Brand Protect - -[Mozilla/5.0 (compatible; DKIMRepBot/*)] -Parent=Copyright/Plagiarism -Browser=DKIMRepBot - -[oBot] -Parent=Copyright/Plagiarism -Browser=oBot - -[SlySearch/*] -Parent=Copyright/Plagiarism -Browser=SlySearch - -[TurnitinBot/*] -Parent=Copyright/Plagiarism -Browser=TurnitinBot - -[TutorGigBot/*] -Parent=Copyright/Plagiarism -Browser=TutorGig - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DNS Tools - -[DNS Tools] -Parent=DefaultProperties -Browser=DNS Tools -Crawler=true - -[Domain Dossier utility*] -Parent=DNS Tools -Browser=Domain Dossier - -[Mozilla/5.0 (compatible; DNS-Digger/*)] -Parent=DNS Tools -Browser=DNS-Digger - -[OpenDNS Domain Crawler noc@opendns.com] -Parent=DNS Tools -Browser=OpenDNS Domain Crawler - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Download Managers - -[Download Managers] -Parent=DefaultProperties -Browser=Download Managers -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[AndroidDownloadManager] -Parent=Download Managers -Browser=Android Download Manager - -[AutoMate5] -Parent=Download Managers -Browser=AutoMate5 - -[Beamer*] -Parent=Download Managers -Browser=Beamer - -[BitBeamer/*] -Parent=Download Managers -Browser=BitBeamer - -[BitTorrent/*] -Parent=Download Managers -Browser=BitTorrent - -[DA *] -Parent=Download Managers -Browser=Download Accelerator - -[Download Demon*] -Parent=Download Managers -Browser=Download Demon - -[Download Express*] -Parent=Download Managers -Browser=Download Express - -[Download Master*] -Parent=Download Managers -Browser=Download Master - -[Download Ninja*] -Parent=Download Managers -Browser=Download Ninja - -[Download Wonder*] -Parent=Download Managers -Browser=Download Wonder - -[DownloadSession*] -Parent=Download Managers -Browser=DownloadSession - -[EasyDL/*] -Parent=Download Managers -Browser=EasyDL - -[FDM 1.x] -Parent=Download Managers -Browser=Free Download Manager - -[FlashGet] -Parent=Download Managers -Browser=FlashGet - -[FreshDownload/*] -Parent=Download Managers -Browser=FreshDownload - -[GetRight/*] -Parent=Download Managers -Browser=GetRight - -[GetRightPro/*] -Parent=Download Managers -Browser=GetRightPro - -[GetSmart/*] -Parent=Download Managers -Browser=GetSmart - -[Go!Zilla*] -Parent=Download Managers -Browser=GoZilla - -[Gozilla/*] -Parent=Download Managers -Browser=Gozilla - -[Internet Ninja*] -Parent=Download Managers -Browser=Internet Ninja - -[Kontiki Client*] -Parent=Download Managers -Browser=Kontiki Client - -[lftp/3.2.1] -Parent=Download Managers -Browser=lftp - -[LightningDownload/*] -Parent=Download Managers -Browser=LightningDownload - -[LMQueueBot/*] -Parent=Download Managers -Browser=LMQueueBot - -[MetaProducts Download Express/*] -Parent=Download Managers -Browser=Download Express - -[Mozilla/4.0 (compatible; Getleft*)] -Parent=Download Managers -Browser=Getleft - -[Myzilla] -Parent=Download Managers -Browser=Myzilla - -[Net Vampire/*] -Parent=Download Managers -Browser=Net Vampire - -[Net_Vampire*] -Parent=Download Managers -Browser=Net_Vampire - -[NetAnts*] -Parent=Download Managers -Browser=NetAnts - -[NetPumper*] -Parent=Download Managers -Browser=NetPumper - -[NetSucker*] -Parent=Download Managers -Browser=NetSucker - -[NetZip Downloader*] -Parent=Download Managers -Browser=NetZip Downloader - -[NexTools WebAgent*] -Parent=Download Managers -Browser=NexTools WebAgent - -[Offline Downloader*] -Parent=Download Managers -Browser=Offline Downloader - -[P3P Client] -Parent=Download Managers -Browser=P3P Client - -[PageDown*] -Parent=Download Managers -Browser=PageDown - -[PicaLoader*] -Parent=Download Managers -Browser=PicaLoader - -[Prozilla*] -Parent=Download Managers -Browser=Prozilla - -[RealDownload/*] -Parent=Download Managers -Browser=RealDownload - -[sEasyDL/*] -Parent=Download Managers -Browser=EasyDL - -[shareaza*] -Parent=Download Managers -Browser=shareaza - -[SmartDownload/*] -Parent=Download Managers -Browser=SmartDownload - -[SpeedDownload/*] -Parent=Download Managers -Browser=Speed Download - -[Star*Downloader/*] -Parent=Download Managers -Browser=StarDownloader - -[STEROID Download] -Parent=Download Managers -Browser=STEROID Download - -[SuperBot/*] -Parent=Download Managers -Browser=SuperBot - -[Vegas95/*] -Parent=Download Managers -Browser=Vegas95 - -[WebZIP*] -Parent=Download Managers -Browser=WebZIP - -[Wget*] -Parent=Download Managers -Browser=Wget - -[WinTools] -Parent=Download Managers -Browser=WinTools - -[Xaldon WebSpider*] -Parent=Download Managers -Browser=Xaldon WebSpider - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; E-Mail Harvesters - -[E-Mail Harvesters] -Parent=DefaultProperties -Browser=E-Mail Harvesters -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[*E-Mail Address Extractor*] -Parent=E-Mail Harvesters -Browser=E-Mail Address Extractor - -[*Larbin*] -Parent=E-Mail Harvesters -Browser=Larbin - -[*www4mail/*] -Parent=E-Mail Harvesters -Browser=www4mail - -[8484 Boston Project*] -Parent=E-Mail Harvesters -Browser=8484 Boston Project - -[CherryPicker*/*] -Parent=E-Mail Harvesters -Browser=CherryPickerElite - -[Chilkat/*] -Parent=E-Mail Harvesters -Browser=Chilkat - -[ContactBot/*] -Parent=E-Mail Harvesters -Browser=ContactBot - -[eCatch*] -Parent=E-Mail Harvesters -Browser=eCatch - -[EmailCollector*] -Parent=E-Mail Harvesters -Browser=E-Mail Collector - -[EMAILsearcher] -Parent=E-Mail Harvesters -Browser=EMAILsearcher - -[EmailSiphon*] -Parent=E-Mail Harvesters -Browser=E-Mail Siphon - -[EmailWolf*] -Parent=E-Mail Harvesters -Browser=EMailWolf - -[Epsilon SoftWorks' MailMunky] -Parent=E-Mail Harvesters -Browser=MailMunky - -[ExtractorPro*] -Parent=E-Mail Harvesters -Browser=ExtractorPro - -[Franklin Locator*] -Parent=E-Mail Harvesters -Browser=Franklin Locator - -[Missigua Locator*] -Parent=E-Mail Harvesters -Browser=Missigua Locator - -[Mozilla/4.0 (compatible; Advanced Email Extractor*)] -Parent=E-Mail Harvesters -Browser=Advanced Email Extractor - -[Netprospector*] -Parent=E-Mail Harvesters -Browser=Netprospector - -[ProWebWalker*] -Parent=E-Mail Harvesters -Browser=ProWebWalker - -[sna-0.0.*] -Parent=E-Mail Harvesters -Browser=Mike Elliott's E-Mail Harvester - -[WebEnhancer*] -Parent=E-Mail Harvesters -Browser=WebEnhancer - -[WebMiner*] -Parent=E-Mail Harvesters -Browser=WebMiner - -[ZIBB Crawler (email address / WWW address)] -Parent=E-Mail Harvesters -Browser=ZIBB Crawler - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Feeds Blogs - -[Feeds Blogs] -Parent=DefaultProperties -Browser=Feeds Blogs -isSyndicationReader=true -Crawler=true - -[Bloglines Title Fetch/*] -Parent=Feeds Blogs -Browser=Bloglines Title Fetch - -[Bloglines/* (http://www.bloglines.com*)] -Parent=Feeds Blogs -Browser=BlogLines Web - -[BlogPulseLive (support@blogpulse.com)] -Parent=Feeds Blogs -Browser=BlogPulseLive - -[blogsearchbot-pumpkin-2] -Parent=Feeds Blogs -Browser=blogsearchbot-pumpkin -isSyndicationReader=false - -[Irish Blogs Aggregator/*1.0*] -Parent=Feeds Blogs -Browser=Irish Blogs Aggregator -Version=1.0 -MajorVer=1 -MinorVer=0 - -[kinjabot (http://www.kinja.com; *)] -Parent=Feeds Blogs -Browser=kinjabot - -[Net::Trackback/*] -Parent=Feeds Blogs -Browser=Net::Trackback - -[Reblog*] -Parent=Feeds Blogs -Browser=Reblog - -[WordPress/*] -Parent=Feeds Blogs -Browser=WordPress - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Feeds Syndicators - -[Feeds Syndicators] -Parent=DefaultProperties -Browser=Feeds Syndicators -isSyndicationReader=true - -[*LinkLint*] -Parent=Feeds Syndicators -Browser=LinkLint - -[*NetNewsWire/*] -Parent=Feeds Syndicators - -[*NetVisualize*] -Parent=Feeds Syndicators -Browser=NetVisualize - -[AideRSS 2.* (postrank.com)] -Parent=Feeds Syndicators -Browser=AideRSS - -[AideRSS/2.0 (aiderss.com)] -Parent=Feeds Syndicators -Browser=AideRSS -isBanned=true - -[Akregator/*] -Parent=Feeds Syndicators -Browser=Akregator - -[AppleSyndication/*] -Parent=Feeds Syndicators -Browser=Safari RSS -Platform=MacOSX - -[Cocoal.icio.us/* (*)*] -Parent=Feeds Syndicators -Browser=Cocoal.icio.us -isBanned=true - -[Feed43 Proxy/* (*)] -Parent=Feeds Syndicators -Browser=Feed For Free - -[FeedBurner/*] -Parent=Feeds Syndicators -Browser=FeedBurner - -[FeedDemon/* (*)] -Parent=Feeds Syndicators -Browser=FeedDemon -Platform=Win32 - -[FeedDigest/* (*)] -Parent=Feeds Syndicators -Browser=FeedDigest - -[FeedGhost/1.*] -Parent=Feeds Syndicators -Browser=FeedGhost -Version=1.0 -MajorVer=1 -MinorVer=0 - -[FeedOnFeeds/0.1.* ( http://minutillo.com/steve/feedonfeeds/)] -Parent=Feeds Syndicators -Browser=FeedOnFeeds -Version=0.1 -MajorVer=0 -MinorVer=1 - -[Feedreader * (Powered by Newsbrain)] -Parent=Feeds Syndicators -Browser=Newsbrain - -[Feedshow/* (*)] -Parent=Feeds Syndicators -Browser=Feedshow - -[Feedster Crawler/?.0; Feedster, Inc.] -Parent=Feeds Syndicators -Browser=Feedster - -[GreatNews/1.0] -Parent=Feeds Syndicators -Browser=GreatNews -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Gregarius/*] -Parent=Feeds Syndicators -Browser=Gregarius - -[intraVnews/*] -Parent=Feeds Syndicators -Browser=intraVnews - -[JetBrains Omea Reader*] -Parent=Feeds Syndicators -Browser=Omea Reader -isBanned=true - -[Liferea/1.5* (Linux; *; http://liferea.sf.net/)] -Parent=Feeds Syndicators -Browser=Liferea -isBanned=true - -[livedoor FeedFetcher/0.0* (http://reader.livedoor.com/;*)] -Parent=Feeds Syndicators -Browser=FeedFetcher -Version=0.0 -MajorVer=0 -MinorVer=0 - -[MagpieRSS/* (*)] -Parent=Feeds Syndicators -Browser=MagpieRSS - -[Mobitype * (compatible; Mozilla/*; MSIE *.*; Windows *)] -Parent=Feeds Syndicators -Browser=Mobitype -Platform=Win32 - -[Mozilla/5.0 (*; Rojo *; http://www.rojo.com/corporate/help/agg; *)*] -Parent=Feeds Syndicators -Browser=Rojo - -[Mozilla/5.0 (*aggregator:TailRank; http://tailrank.com/robot)*] -Parent=Feeds Syndicators -Browser=TailRank - -[Mozilla/5.0 (compatible; MSIE 6.0; Podtech Network; crawler_admin@podtech.net)] -Parent=Feeds Syndicators -Browser=Podtech Network - -[Mozilla/5.0 (compatible; Newz Crawler *; http://www.newzcrawler.com/?)] -Parent=Feeds Syndicators -Browser=Newz Crawler - -[Mozilla/5.0 (compatible; RSSMicro.com RSS/Atom Feed Robot)] -Parent=Feeds Syndicators -Browser=RSSMicro - -[Mozilla/5.0 (compatible;*newstin.com;*)] -Parent=Feeds Syndicators -Browser=NewsTin - -[Mozilla/5.0 (RSS Reader Panel)] -Parent=Feeds Syndicators -Browser=RSS Reader Panel - -[Mozilla/5.0 (X11; U; Linux*; *; rv:1.*; aggregator:FeedParser; *) Gecko/*] -Parent=Feeds Syndicators -Browser=FeedParser - -[Mozilla/5.0 (X11; U; Linux*; *; rv:1.*; aggregator:NewsMonster; *) Gecko/*] -Parent=Feeds Syndicators -Browser=NewsMonster - -[Mozilla/5.0 (X11; U; Linux*; *; rv:1.*; aggregator:Rojo; *) Gecko/*] -Parent=Feeds Syndicators -Browser=Rojo - -[Netvibes (*)] -Parent=Feeds Syndicators -Browser=Netvibes - -[NewsAlloy/* (*)] -Parent=Feeds Syndicators -Browser=NewsAlloy - -[Omnipelagos*] -Parent=Feeds Syndicators -Browser=Omnipelagos - -[Particls] -Parent=Feeds Syndicators -Browser=Particls - -[Protopage/* (*)] -Parent=Feeds Syndicators -Browser=Protopage - -[PubSub-RSS-Reader/* (*)] -Parent=Feeds Syndicators -Browser=PubSub-RSS-Reader - -[RSS Menu/*] -Parent=Feeds Syndicators -Browser=RSS Menu - -[RssBandit/*] -Parent=Feeds Syndicators -Browser=RssBandit - -[RssBar/1.2*] -Parent=Feeds Syndicators -Browser=RssBar -Version=1.2 -MajorVer=1 -MinorVer=2 - -[SharpReader/*] -Parent=Feeds Syndicators -Browser=SharpReader - -[SimplePie/*] -Parent=Feeds Syndicators -Browser=SimplePie - -[Strategic Board Bot (?http://www.strategicboard.com)] -Parent=Feeds Syndicators -Browser=Strategic Board Bot -isBanned=true - -[TargetYourNews.com bot] -Parent=Feeds Syndicators -Browser=TargetYourNews - -[Technoratibot/*] -Parent=Feeds Syndicators -Browser=Technoratibot - -[Tumblr/* RSS syndication ( http://www.tumblr.com/) (support@tumblr.com)] -Parent=Feeds Syndicators -Browser=Tumblr RSS syndication - -[Windows-RSS-Platform/1.0*] -Parent=Feeds Syndicators -Browser=Windows-RSS-Platform -Version=1.0 -MajorVer=1 -MinorVer=0 -Win32=true - -[Wizz RSS News Reader] -Parent=Feeds Syndicators -Browser=Wizz - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; General RSS - -[General RSS] -Parent=DefaultProperties -Browser=General RSS -isSyndicationReader=true - -[AideRSS/1.0 (aiderss.com); * subscribers] -Parent=General RSS -Browser=AideRSS -Version=1.0 -MajorVer=1 -MinorVer=0 - -[CC Metadata Scaper http://wiki.creativecommons.org/Metadata_Scraper] -Parent=General RSS -Browser=CC Metadata Scaper - -[Mozilla/5.0 (compatible) GM RSS Panel] -Parent=General RSS -Browser=RSS Panel - -[Mozilla/5.0 http://www.inclue.com; graeme@inclue.com] -Parent=General RSS -Browser=Inclue - -[Runnk online rss reader : http://www.runnk.com/ : RSS favorites : RSS ranking : RSS aggregator*] -Parent=General RSS -Browser=Ruunk - -[Windows-RSS-Platform/2.0 (MSIE 8.0; Windows NT 6.0)] -Parent=General RSS -Browser=Windows-RSS-Platform -Platform=WinVista - -[Mozilla/5.0 (X11; ?; Linux; *) AppleWebKit/* (KHTML, like Gecko, Safari/*) Arora/0.4] -Parent=Google Code -Browser=Arora -Version=0.4 -MajorVer=0 -MinorVer=4 -Platform=Linux -CssVersion=2 -supportsCSS=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Validation Checkers - -[HTML Validators] -Parent=DefaultProperties -Browser=HTML Validators -Frames=true -IFrames=true -Tables=true -Crawler=true - -[(HTML Validator http://www.searchengineworld.com/validator/)] -Parent=HTML Validators -Browser=Search Engine World HTML Validator - -[FeedValidator/1.3] -Parent=HTML Validators -Browser=FeedValidator -Version=1.3 -MajorVer=1 -MinorVer=3 - -[Jigsaw/* W3C_CSS_Validator_JFouffa/*] -Parent=HTML Validators -Browser=Jigsaw CSS Validator - -[Search Engine World Robots.txt Validator*] -Parent=HTML Validators -Browser=Search Engine World Robots.txt Validator - -[W3C_Validator/*] -Parent=HTML Validators -Browser=W3C Validator - -[W3CLineMode/*] -Parent=HTML Validators -Browser=W3C Line Mode - -[Weblide/2.? beta*] -Parent=HTML Validators -Browser=Weblide -Version=2.0 -MajorVer=2 -MinorVer=0 -Beta=true - -[WebmasterWorld StickyMail Server Header Checker*] -Parent=HTML Validators -Browser=WebmasterWorld Server Header Checker - -[WWWC/*] -Parent=HTML Validators - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Image Crawlers - -[Image Crawlers] -Parent=DefaultProperties -Browser=Image Crawlers -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[*CFNetwork*] -Parent=Image Crawlers -Browser=CFNetwork - -[*PhotoStickies/*] -Parent=Image Crawlers -Browser=PhotoStickies - -[Camcrawler*] -Parent=Image Crawlers -Browser=Camcrawler - -[CydralSpider/*] -Parent=Image Crawlers -Browser=Cydral Web Image Search -isBanned=true - -[Der gro\xdfe BilderSauger*] -Parent=Image Crawlers -Browser=Gallery Grabber - -[Extreme Picture Finder] -Parent=Image Crawlers -Browser=Extreme Picture Finder - -[FLATARTS_FAVICO] -Parent=Image Crawlers -Browser=FlatArts Favorites Icon Tool - -[HTML2JPG Blackbox, http://www.html2jpg.com] -Parent=Image Crawlers -Browser=HTML2JPG - -[IconSurf/2.*] -Parent=Image Crawlers -Browser=IconSurf - -[kalooga/KaloogaBot*] -Parent=Image Crawlers -Browser=KaloogaBot - -[Mister PIX*] -Parent=Image Crawlers -Browser=Mister PIX - -[Mozilla/5.0 (Macintosh; U; *Mac OS X; *) AppleWebKit/* (*) Pandora/2.*] -Parent=Image Crawlers -Browser=Pandora - -[naoFavicon4IE*] -Parent=Image Crawlers -Browser=naoFavicon4IE - -[pixfinder/*] -Parent=Image Crawlers -Browser=pixfinder - -[rssImagesBot/0.1 (*http://herbert.groot.jebbink.nl/?app=rssImages)] -Parent=Image Crawlers -Browser=rssImagesBot - -[Web Image Collector*] -Parent=Image Crawlers -Browser=Web Image Collector - -[WebImages * (?http://herbert.groot.jebbink.nl/?app=WebImages?)] -Parent=Image Crawlers -Browser=WebImages - -[WebPix*] -Parent=Image Crawlers -Browser=Custo - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Link Checkers - -[Link Checkers] -Parent=DefaultProperties -Browser=Link Checkers -Frames=true -IFrames=true -Tables=true -Crawler=true - -[!Susie (http://www.sync2it.com/susie)] -Parent=Link Checkers -Browser=!Susie - -[*AgentName/*] -Parent=Link Checkers -Browser=AgentName - -[*Linkman*] -Parent=Link Checkers -Browser=Linkman - -[*LinksManager.com*] -Parent=Link Checkers -Browser=LinksManager - -[*Powermarks/*] -Parent=Link Checkers -Browser=Powermarks - -[*W3C-checklink/*] -Parent=Link Checkers -Browser=W3C Link Checker - -[*Web Link Validator*] -Parent=Link Checkers -Browser=Web Link Validator - -[*Zeus*] -Parent=Link Checkers -Browser=Zeus -isBanned=true - -[ActiveBookmark *] -Parent=Link Checkers -Browser=ActiveBookmark - -[Bookdog/*] -Parent=Link Checkers -Browser=Bookdog - -[Bookmark Buddy*] -Parent=Link Checkers -Browser=Bookmark Buddy - -[Bookmark Renewal Check Agent*] -Parent=Link Checkers -Browser=Bookmark Renewal Check Agent - -[Bookmark search tool*] -Parent=Link Checkers -Browser=Bookmark search tool - -[Bookmark-Manager] -Parent=Link Checkers -Browser=Bookmark-Manager - -[Checkbot*] -Parent=Link Checkers -Browser=Checkbot - -[CheckLinks/*] -Parent=Link Checkers -Browser=CheckLinks - -[CyberSpyder Link Test/*] -Parent=Link Checkers -Browser=CyberSpyder Link Test - -[DLC/*] -Parent=Link Checkers -Browser=DLC - -[DocWeb Link Crawler (http://doc.php.net)] -Parent=Link Checkers -Browser=DocWeb Link Crawler - -[FavOrg] -Parent=Link Checkers -Browser=FavOrg - -[Favorites Sweeper v.3.*] -Parent=Link Checkers -Browser=Favorites Sweeper - -[FindLinks/*] -Parent=Link Checkers -Browser=FindLinks - -[Funnel Web Profiler*] -Parent=Link Checkers -Browser=Funnel Web Profiler - -[Html Link Validator (www.lithopssoft.com)] -Parent=Link Checkers -Browser=HTML Link Validator - -[IECheck] -Parent=Link Checkers -Browser=IECheck - -[JCheckLinks/*] -Parent=Link Checkers -Browser=JCheckLinks - -[JRTwine Software Check Favorites Utility] -Parent=Link Checkers -Browser=JRTwine - -[Link Valet Online*] -Parent=Link Checkers -Browser=Link Valet -isBanned=true - -[LinkAlarm/*] -Parent=Link Checkers -Browser=LinkAlarm - -[Linkbot*] -Parent=Link Checkers -Browser=Linkbot - -[LinkChecker/*] -Parent=Link Checkers -Browser=LinkChecker - -[LinkextractorPro*] -Parent=Link Checkers -Browser=LinkextractorPro -isBanned=true - -[LinkLint-checkonly/*] -Parent=Link Checkers -Browser=LinkLint - -[LinkScan/*] -Parent=Link Checkers -Browser=LinkScan - -[LinkSweeper/*] -Parent=Link Checkers -Browser=LinkSweeper - -[LinkWalker*] -Parent=Link Checkers -Browser=LinkWalker - -[MetaGer-LinkChecker] -Parent=Link Checkers -Browser=MetaGer-LinkChecker - -[Mozilla/* (compatible; linktiger/*; *http://www.linktiger.com*)] -Parent=Link Checkers -Browser=LinkTiger -isBanned=true - -[Mozilla/4.0 (Compatible); URLBase*] -Parent=Link Checkers -Browser=URLBase - -[Mozilla/4.0 (compatible; Link Utility; http://net-promoter.com)] -Parent=Link Checkers -Browser=NetPromoter Link Utility - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Web Link Validator*] -Parent=Link Checkers -Browser=Web Link Validator -Win32=true - -[Mozilla/4.0 (compatible; MSIE 7.0; Win32) Link Commander 3.0] -Parent=Link Checkers -Browser=Link Commander -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=Win32 - -[Mozilla/4.0 (compatible; smartBot/1.*; checking links; *)] -Parent=Link Checkers -Browser=smartBot - -[Mozilla/4.0 (compatible; SuperCleaner*;*)] -Parent=Link Checkers -Browser=SuperCleaner - -[Mozilla/5.0 gURLChecker/*] -Parent=Link Checkers -Browser=gURLChecker -isBanned=true - -[Newsgroupreporter LinkCheck] -Parent=Link Checkers -Browser=Newsgroupreporter LinkCheck - -[onCHECK Linkchecker von www.scientec.de fuer www.onsinn.de] -Parent=Link Checkers -Browser=onCHECK Linkchecker - -[online link validator (http://www.dead-links.com/)] -Parent=Link Checkers -Browser=Dead-Links.com -isBanned=true - -[REL Link Checker*] -Parent=Link Checkers -Browser=REL Link Checker - -[RLinkCheker*] -Parent=Link Checkers -Browser=RLinkCheker - -[Robozilla/*] -Parent=Link Checkers -Browser=Robozilla - -[RPT-HTTPClient/*] -Parent=Link Checkers -Browser=RPT-HTTPClient -isBanned=true - -[SafariBookmarkChecker*(?http://www.coriolis.ch/)] -Parent=Link Checkers -Browser=SafariBookmarkChecker -Platform=MacOSX -CssVersion=2 -supportsCSS=true - -[Simpy/* (Simpy; http://www.simpy.com/?ref=bot; feedback at simpy dot com)] -Parent=Link Checkers -Browser=Simpy - -[SiteBar/*] -Parent=Link Checkers -Browser=SiteBar - -[Susie (http://www.sync2it.com/bms/susie.php] -Parent=Link Checkers -Browser=Susie - -[URLBase/6.*] -Parent=Link Checkers - -[VSE/*] -Parent=Link Checkers -Browser=VSE Link Tester - -[WebTrends Link Analyzer] -Parent=Link Checkers -Browser=WebTrends Link Analyzer - -[WorQmada/*] -Parent=Link Checkers -Browser=WorQmada - -[Xenu* Link Sleuth*] -Parent=Link Checkers -Browser=Xenu's Link Sleuth -isBanned=true - -[Z-Add Link Checker*] -Parent=Link Checkers -Browser=Z-Add Link Checker - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Microsoft - -[Microsoft] -Parent=DefaultProperties -Browser=Microsoft -isBanned=true - -[Live (http://www.live.com/)] -Parent=Microsoft -Browser=Microsoft Live -isBanned=false -isSyndicationReader=true - -[MFC Foundation Class Library*] -Parent=Microsoft -Browser=MFC Foundation Class Library - -[MFHttpScan] -Parent=Microsoft -Browser=MFHttpScan - -[Microsoft BITS/*] -Parent=Microsoft -Browser=BITS - -[Microsoft Data Access Internet Publishing Provider Cache Manager] -Parent=Microsoft -Browser=MS IPP - -[Microsoft Data Access Internet Publishing Provider DAV*] -Parent=Microsoft -Browser=MS IPP DAV - -[Microsoft Data Access Internet Publishing Provider Protocol Discovery] -Parent=Microsoft -Browser=MS IPPPD - -[Microsoft Internet Explorer] -Parent=Microsoft -Browser=Fake IE - -[Microsoft Office Existence Discovery] -Parent=Microsoft -Browser=Microsoft Office Existence Discovery - -[Microsoft Office Protocol Discovery] -Parent=Microsoft -Browser=MS OPD - -[Microsoft Office/* (*Picture Manager*)] -Parent=Microsoft -Browser=Microsoft Office Picture Manager - -[Microsoft URL Control*] -Parent=Microsoft -Browser=Microsoft URL Control - -[Microsoft Visio MSIE] -Parent=Microsoft -Browser=Microsoft Visio - -[Microsoft-WebDAV-MiniRedir/*] -Parent=Microsoft -Browser=Microsoft-WebDAV - -[Mozilla/5.0 (Macintosh; Intel Mac OS X) Excel/12.*] -Parent=Microsoft -Browser=Microsoft Excel -Version=12.0 -MajorVer=12 -MinorVer=0 -Platform=MacOSX - -[MSN Feed Manager] -Parent=Microsoft -Browser=MSN Feed Manager -isBanned=false -isSyndicationReader=true - -[MSProxy/*] -Parent=Microsoft -Browser=MS Proxy - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Miscellaneous Browsers - -[Miscellaneous Browsers] -Parent=DefaultProperties -Browser=Miscellaneous Browsers -Frames=true -Tables=true -Cookies=true - -[*Amiga*] -Parent=Miscellaneous Browsers -Browser=Amiga -Platform=Amiga - -[*avantbrowser*] -Parent=Miscellaneous Browsers -Browser=Avant Browser - -[12345] -Parent=Miscellaneous Browsers -Browser=12345 -isBanned=true - -[Ace Explorer] -Parent=Miscellaneous Browsers -Browser=Ace Explorer - -[Enigma Browser*] -Parent=Miscellaneous Browsers -Browser=Enigma Browser - -[EVE-minibrowser/*] -Parent=Miscellaneous Browsers -Browser=EVE-minibrowser -IFrames=false -Tables=false -BackgroundSounds=false -VBScript=false -JavaApplets=false -JavaScript=false -ActiveXControls=false -isBanned=false -Crawler=false - -[Godzilla/* (Basic*; *; Commodore C=64; *; rv:1.*)*] -Parent=Miscellaneous Browsers -Browser=Godzilla - -[GreenBrowser] -Parent=Miscellaneous Browsers -Browser=GreenBrowser -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true - -[Kopiczek/* (WyderOS*; *)] -Parent=Miscellaneous Browsers -Browser=Kopiczek -Platform=WyderOS -IFrames=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (*) - BrowseX (*)] -Parent=Miscellaneous Browsers -Browser=BrowseX - -[Mozilla/* (Win32;*Escape?*; ?)] -Parent=Miscellaneous Browsers -Browser=Escape -Platform=Win32 - -[Mozilla/4.0 (compatible; ibisBrowser)] -Parent=Miscellaneous Browsers -Browser=ibisBrowser - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) AppleWebKit/* (*) HistoryHound/*] -Parent=Miscellaneous Browsers -Browser=HistoryHound - -[NetRecorder*] -Parent=Miscellaneous Browsers -Browser=NetRecorder - -[NetSurfer*] -Parent=Miscellaneous Browsers -Browser=NetSurfer - -[ogeb browser , Version 1.1.0] -Parent=Miscellaneous Browsers -Browser=ogeb browser -Version=1.1 -MajorVer=1 -MinorVer=1 - -[SCEJ PSP BROWSER 0102pspNavigator] -Parent=Miscellaneous Browsers -Browser=Wipeout Pure - -[SlimBrowser] -Parent=Miscellaneous Browsers -Browser=SlimBrowser - -[WWW_Browser/*] -Parent=Miscellaneous Browsers -Browser=WWW Browser -Version=1.69 -MajorVer=1 -MinorVer=69 -Platform=Win16 -CssVersion=3 -supportsCSS=true - -[*Netcraft Webserver Survey*] -Parent=Netcraft -Browser=Netcraft Webserver Survey -isBanned=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Offline Browsers - -[Offline Browsers] -Parent=DefaultProperties -Browser=Offline Browsers -Frames=true -Tables=true -Cookies=true -isBanned=true -Crawler=true - -[*Check&Get*] -Parent=Offline Browsers -Browser=Check&Get - -[*HTTrack*] -Parent=Offline Browsers -Browser=HTTrack - -[*MSIECrawler*] -Parent=Offline Browsers -Browser=IE Offline Browser - -[*TweakMASTER*] -Parent=Offline Browsers -Browser=TweakMASTER - -[BackStreet Browser *] -Parent=Offline Browsers -Browser=BackStreet Browser - -[Go-Ahead-Got-It*] -Parent=Offline Browsers -Browser=Go Ahead Got-It - -[iGetter/*] -Parent=Offline Browsers -Browser=iGetter - -[Teleport*] -Parent=Offline Browsers -Browser=Teleport - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Online Scanners - -[Online Scanners] -Parent=DefaultProperties -Browser=Online Scanners -isBanned=true - -[JoeDog/* (X11; I; Siege *)] -Parent=Online Scanners -Browser=JoeDog -isBanned=false - -[Morfeus Fucking Scanner] -Parent=Online Scanners -Browser=Morfeus Fucking Scanner - -[Mozilla/4.0 (compatible; Trend Micro tmdr 1.*] -Parent=Online Scanners -Browser=Trend Micro - -[Titanium 2005 (4.02.01)] -Parent=Online Scanners -Browser=Panda Antivirus Titanium - -[virus_detector*] -Parent=Online Scanners -Browser=Secure Computing Corporation - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Proxy Servers - -[Proxy Servers] -Parent=DefaultProperties -Browser=Proxy Servers -isBanned=true - -[*squid*] -Parent=Proxy Servers -Browser=Squid - -[Anonymisiert*] -Parent=Proxy Servers -Browser=Anonymizied - -[Anonymizer/*] -Parent=Proxy Servers -Browser=Anonymizer - -[Anonymizied*] -Parent=Proxy Servers -Browser=Anonymizied - -[Anonymous*] -Parent=Proxy Servers -Browser=Anonymous - -[Anonymous/*] -Parent=Proxy Servers -Browser=Anonymous - -[CE-Preload] -Parent=Proxy Servers -Browser=CE-Preload - -[http://Anonymouse.org/*] -Parent=Proxy Servers -Browser=Anonymouse - -[IE/6.01 (CP/M; 8-bit*)] -Parent=Proxy Servers -Browser=Squid - -[Mozilla/* (TuringOS; Turing Machine; 0.0)] -Parent=Proxy Servers -Browser=Anonymizer - -[Mozilla/4.0 (compatible; MSIE ?.0; SaferSurf*)] -Parent=Proxy Servers -Browser=SaferSurf - -[Mozilla/5.0 (compatible; del.icio.us-thumbnails/*; *) KHTML/* (like Gecko)] -Parent=Proxy Servers -Browser=Yahoo! -isBanned=true -Crawler=true - -[Nutscrape] -Parent=Proxy Servers -Browser=Squid - -[Nutscrape/* (CP/M; 8-bit*)] -Parent=Proxy Servers -Browser=Squid - -[Privoxy/*] -Parent=Proxy Servers -Browser=Privoxy - -[ProxyTester*] -Parent=Proxy Servers -Browser=ProxyTester -isBanned=true -Crawler=true - -[SilentSurf*] -Parent=Proxy Servers -Browser=SilentSurf - -[SmallProxy*] -Parent=Proxy Servers -Browser=SmallProxy - -[Space*Bison/*] -Parent=Proxy Servers -Browser=Proxomitron - -[Sqworm/*] -Parent=Proxy Servers -Browser=Websense - -[SurfControl] -Parent=Proxy Servers -Browser=SurfControl - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Research Projects - -[Research Projects] -Parent=DefaultProperties -Browser=Research Projects -isBanned=true -Crawler=true - -[*research*] -Parent=Research Projects - -[AcadiaUniversityWebCensusClient] -Parent=Research Projects -Browser=AcadiaUniversityWebCensusClient - -[Amico Alpha * (*) Gecko/* AmicoAlpha/*] -Parent=Research Projects -Browser=Amico Alpha - -[annotate_google; http://ponderer.org/*] -Parent=Research Projects -Browser=Annotate Google - -[CMS crawler (?http://buytaert.net/crawler/)] -Parent=Research Projects - -[e-SocietyRobot(http://www.yama.info.waseda.ac.jp/~yamana/es/)] -Parent=Research Projects -Browser=e-SocietyRobot - -[Forschungsportal/*] -Parent=Research Projects -Browser=Forschungsportal - -[Gulper Web *] -Parent=Research Projects -Browser=Gulper Web Bot - -[HooWWWer/*] -Parent=Research Projects -Browser=HooWWWer - -[http://buytaert.net/crawler] -Parent=Research Projects - -[inetbot/* (?http://www.inetbot.com/bot.html)] -Parent=Research Projects -Browser=inetbot - -[IRLbot/*] -Parent=Research Projects -Browser=IRLbot - -[Lachesis] -Parent=Research Projects -Browser=Lachesis - -[Mozilla/5.0 (compatible; nextthing.org/*)] -Parent=Research Projects -Browser=nextthing.org -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 (compatible; Theophrastus/*)] -Parent=Research Projects -Browser=Theophrastus - -[Mozilla/5.0 (compatible; Webscan v0.*; http://otc.dyndns.org/webscan/)] -Parent=Research Projects -Browser=Webscan - -[MQbot*] -Parent=Research Projects -Browser=MQbot - -[OutfoxBot/*] -Parent=Research Projects -Browser=OutfoxBot - -[polybot?*] -Parent=Research Projects -Browser=Polybot - -[Shim?Crawler*] -Parent=Research Projects -Browser=Shim Crawler - -[Steeler/*] -Parent=Research Projects -Browser=Steeler - -[Taiga web spider] -Parent=Research Projects -Browser=Taiga - -[Theme Spider*] -Parent=Research Projects -Browser=Theme Spider - -[UofTDB_experiment* (leehyun@cs.toronto.edu)] -Parent=Research Projects -Browser=UofTDB Experiment - -[USyd-NLP-Spider*] -Parent=Research Projects -Browser=USyd-NLP-Spider - -[woriobot*] -Parent=Research Projects -Browser=woriobot - -[wwwster/* (Beta, mailto:gue@cis.uni-muenchen.de)] -Parent=Research Projects -Browser=wwwster -Beta=true - -[Zao-Crawler] -Parent=Research Projects -Browser=Zao-Crawler - -[Zao/*] -Parent=Research Projects -Browser=Zao - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Rippers - -[Rippers] -Parent=DefaultProperties -Browser=Rippers -Frames=true -IFrames=true -Tables=true -isBanned=true -Crawler=true - -[*grub*] -Parent=Rippers -Browser=grub - -[*ickHTTP*] -Parent=Rippers -Browser=IP*Works - -[*java*] -Parent=Rippers - -[*libwww-perl*] -Parent=Rippers -Browser=libwww-perl - -[*WebGrabber*] -Parent=Rippers - -[*WinHttpRequest*] -Parent=Rippers -Browser=WinHttp - -[3D-FTP/*] -Parent=Rippers -Browser=3D-FTP - -[3wGet/*] -Parent=Rippers -Browser=3wGet - -[ActiveRefresh*] -Parent=Rippers -Browser=ActiveRefresh - -[Artera (Version *)] -Parent=Rippers -Browser=Artera - -[AutoHotkey] -Parent=Rippers -Browser=AutoHotkey - -[b2w/*] -Parent=Rippers -Browser=b2w - -[BasicHTTP/*] -Parent=Rippers -Browser=BasicHTTP - -[BlockNote.Net] -Parent=Rippers -Browser=BlockNote.Net - -[CAST] -Parent=Rippers -Browser=CAST - -[CFNetwork/*] -Parent=Rippers -Browser=CFNetwork - -[CFSCHEDULE*] -Parent=Rippers -Browser=ColdFusion Task Scheduler - -[CobWeb/*] -Parent=Rippers -Browser=CobWeb - -[ColdFusion*] -Parent=Rippers -Browser=ColdFusion - -[Crawl_Application] -Parent=Rippers -Browser=Crawl_Application - -[curl/*] -Parent=Rippers -Browser=cURL - -[Custo*] -Parent=Rippers -Browser=Custo - -[DataCha0s/*] -Parent=Rippers -Browser=DataCha0s - -[DeepIndexer*] -Parent=Rippers -Browser=DeepIndexer - -[DISCo Pump *] -Parent=Rippers -Browser=DISCo Pump - -[eStyleSearch * (compatible; MSIE 6.0; Windows NT 5.0)] -Parent=Rippers -Browser=eStyleSearch -Win32=true - -[ezic.com http agent *] -Parent=Rippers -Browser=Ezic.com - -[fetch libfetch/*] -Parent=Rippers - -[FGet*] -Parent=Rippers -Browser=FGet - -[Flaming AttackBot*] -Parent=Rippers -Browser=Flaming AttackBot - -[Foobot*] -Parent=Rippers -Browser=Foobot - -[GameSpyHTTP/*] -Parent=Rippers -Browser=GameSpyHTTP - -[gnome-vfs/*] -Parent=Rippers -Browser=gnome-vfs - -[Harvest/*] -Parent=Rippers -Browser=Harvest - -[hcat/*] -Parent=Rippers -Browser=hcat - -[HLoader] -Parent=Rippers -Browser=HLoader - -[Holmes/*] -Parent=Rippers -Browser=Holmes - -[HTMLParser/*] -Parent=Rippers -Browser=HTMLParser - -[http generic] -Parent=Rippers -Browser=http generic - -[httpclient*] -Parent=Rippers - -[httperf/*] -Parent=Rippers -Browser=httperf - -[HTTPFetch/*] -Parent=Rippers -Browser=HTTPFetch - -[HTTPGrab] -Parent=Rippers -Browser=HTTPGrab - -[HttpSession] -Parent=Rippers -Browser=HttpSession - -[httpunit/*] -Parent=Rippers -Browser=HttpUnit - -[ICE_GetFile] -Parent=Rippers -Browser=ICE_GetFile - -[iexplore.exe] -Parent=Rippers - -[Inet - Eureka App] -Parent=Rippers -Browser=Inet - Eureka App - -[INetURL/*] -Parent=Rippers -Browser=INetURL - -[InetURL:/*] -Parent=Rippers -Browser=InetURL - -[Internet Exploiter/*] -Parent=Rippers - -[Internet Explore *] -Parent=Rippers -Browser=Fake IE - -[Internet Explorer *] -Parent=Rippers -Browser=Fake IE - -[IP*Works!*/*] -Parent=Rippers -Browser=IP*Works! - -[IrssiUrlLog/*] -Parent=Rippers -Browser=IrssiUrlLog - -[JPluck/*] -Parent=Rippers -Browser=JPluck - -[Kapere (http://www.kapere.com)] -Parent=Rippers -Browser=Kapere - -[LeechFTP] -Parent=Rippers -Browser=LeechFTP - -[LeechGet*] -Parent=Rippers -Browser=LeechGet - -[libcurl-agent/*] -Parent=Rippers -Browser=libcurl - -[libWeb/clsHTTP*] -Parent=Rippers -Browser=libWeb/clsHTTP - -[lwp*] -Parent=Rippers - -[MFC_Tear_Sample] -Parent=Rippers -Browser=MFC_Tear_Sample - -[Moozilla] -Parent=Rippers -Browser=Moozilla - -[MovableType/*] -Parent=Rippers -Browser=MovableType Web Log - -[Mozilla/2.0 (compatible; NEWT ActiveX; Win32)] -Parent=Rippers -Browser=NEWT ActiveX -Platform=Win32 - -[Mozilla/3.0 (compatible)] -Parent=Rippers - -[Mozilla/3.0 (compatible; Indy Library)] -Parent=Rippers -Cookies=true - -[Mozilla/3.01 (compatible;)] -Parent=Rippers - -[Mozilla/4.0 (compatible; BorderManager*)] -Parent=Rippers -Browser=Novell BorderManager - -[Mozilla/4.0 (compatible;)] -Parent=Rippers - -[Mozilla/5.0 (compatible; IPCheck Server Monitor*)] -Parent=Rippers -Browser=IPCheck Server Monitor - -[OCN-SOC/*] -Parent=Rippers -Browser=OCN-SOC - -[Offline Explorer*] -Parent=Rippers -Browser=Offline Explorer - -[Open Web Analytics Bot*] -Parent=Rippers -Browser=Open Web Analytics Bot - -[OSSProxy*] -Parent=Rippers -Browser=OSSProxy - -[Pageload*] -Parent=Rippers -Browser=PageLoad - -[PageNest/*] -Parent=Rippers -Browser=PageNest - -[pavuk/*] -Parent=Rippers -Browser=Pavuk - -[PEAR HTTP_Request*] -Parent=Rippers -Browser=PEAR-PHP - -[PHP*] -Parent=Rippers -Browser=PHP - -[PigBlock (Windows NT 5.1; U)*] -Parent=Rippers -Browser=PigBlock -Win32=true - -[Pockey*] -Parent=Rippers -Browser=Pockey-GetHTML - -[POE-Component-Client-HTTP/*] -Parent=Rippers -Browser=POE-Component-Client-HTTP - -[PycURL/*] -Parent=Rippers -Browser=PycURL - -[Python*] -Parent=Rippers -Browser=Python - -[RepoMonkey*] -Parent=Rippers -Browser=RepoMonkey - -[SBL-BOT*] -Parent=Rippers -Browser=BlackWidow - -[ScoutAbout*] -Parent=Rippers -Browser=ScoutAbout - -[sherlock/*] -Parent=Rippers -Browser=Sherlock - -[SiteParser/*] -Parent=Rippers -Browser=SiteParser - -[SiteSnagger*] -Parent=Rippers -Browser=SiteSnagger - -[SiteSucker/*] -Parent=Rippers -Browser=SiteSucker - -[SiteWinder*] -Parent=Rippers -Browser=SiteWinder - -[Snoopy*] -Parent=Rippers -Browser=Snoopy - -[SOFTWING_TEAR_AGENT*] -Parent=Rippers -Browser=AspTear - -[SuperHTTP/*] -Parent=Rippers -Browser=SuperHTTP - -[Tcl http client package*] -Parent=Rippers -Browser=Tcl http client package - -[Twisted PageGetter] -Parent=Rippers -Browser=Twisted PageGetter - -[URL2File/*] -Parent=Rippers -Browser=URL2File - -[UtilMind HTTPGet] -Parent=Rippers -Browser=UtilMind HTTPGet - -[VCI WebViewer*] -Parent=Rippers -Browser=VCI WebViewer - -[W3CRobot/*] -Parent=Rippers -Browser=W3CRobot - -[Web Downloader*] -Parent=Rippers -Browser=Web Downloader - -[Web Downloader/*] -Parent=Rippers -Browser=Web Downloader - -[Web Magnet*] -Parent=Rippers -Browser=Web Magnet - -[WebAuto/*] -Parent=Rippers - -[webbandit/*] -Parent=Rippers -Browser=webbandit - -[WebCopier*] -Parent=Rippers -Browser=WebCopier - -[WebDownloader*] -Parent=Rippers -Browser=WebDownloader - -[WebFetch] -Parent=Rippers -Browser=WebFetch - -[webfetch/*] -Parent=Rippers -Browser=WebFetch - -[WebGatherer*] -Parent=Rippers -Browser=WebGatherer - -[WebGet] -Parent=Rippers -Browser=WebGet - -[WebReaper*] -Parent=Rippers -Browser=WebReaper - -[WebRipper] -Parent=Rippers -Browser=WebRipper - -[WebSauger*] -Parent=Rippers -Browser=WebSauger - -[Website Downloader*] -Parent=Rippers -Browser=Website Downloader - -[Website eXtractor*] -Parent=Rippers -Browser=Website eXtractor - -[Website Quester] -Parent=Rippers -Browser=Website Quester - -[WebsiteExtractor*] -Parent=Rippers -Browser=Website eXtractor - -[WebSnatcher*] -Parent=Rippers -Browser=WebSnatcher - -[Webster Pro*] -Parent=Rippers -Browser=Webster Pro - -[WebStripper*] -Parent=Rippers -Browser=WebStripper - -[WebWhacker*] -Parent=Rippers -Browser=WebWhacker - -[WinScripter iNet Tools] -Parent=Rippers -Browser=WinScripter iNet Tools - -[WWW-Mechanize/*] -Parent=Rippers -Browser=WWW-Mechanize - -[Zend_Http_Client] -Parent=Rippers -Browser=Zend_Http_Client - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Site Monitors - -[Site Monitors] -Parent=DefaultProperties -Browser=Site Monitors -Cookies=true -isBanned=true -Crawler=true - -[*EasyRider*] -Parent=Site Monitors -Browser=EasyRider - -[*maxamine.com--robot*] -Parent=Site Monitors -Browser=maxamine.com--robot -isBanned=true - -[*WebMon ?.*] -Parent=Site Monitors -Browser=WebMon - -[Kenjin Spider*] -Parent=Site Monitors -Browser=Kenjin Spider - -[Kevin http://*] -Parent=Site Monitors -Browser=Kevin -isBanned=true - -[Mozilla/4.0 (compatible; ChangeDetection/*] -Parent=Site Monitors -Browser=ChangeDetection - -[Myst Monitor Service v*] -Parent=Site Monitors -Browser=Myst Monitor Service - -[Net Probe] -Parent=Site Monitors -Browser=Net Probe - -[NetMechanic*] -Parent=Site Monitors -Browser=NetMechanic - -[NetReality*] -Parent=Site Monitors -Browser=NetReality - -[Pingdom GIGRIB*] -Parent=Site Monitors -Browser=Pingdom - -[Site Valet Online*] -Parent=Site Monitors -Browser=Site Valet -isBanned=true - -[SITECHECKER] -Parent=Site Monitors -Browser=SITECHECKER - -[sitemonitor@dnsvr.com/*] -Parent=Site Monitors -Browser=ZoneEdit Failover Monitor -isBanned=false - -[UpTime Checker*] -Parent=Site Monitors -Browser=UpTime Checker - -[URL Control*] -Parent=Site Monitors -Browser=URL Control - -[URL_Access/*] -Parent=Site Monitors - -[URLCHECK] -Parent=Site Monitors -Browser=URLCHECK - -[URLy Warning*] -Parent=Site Monitors -Browser=URLy Warning - -[Webcheck *] -Parent=Site Monitors -Browser=Webcheck -Version=1.0 -MajorVer=1 -MinorVer=0 - -[WebPatrol/*] -Parent=Site Monitors -Browser=WebPatrol - -[websitepulse checker/*] -Parent=Site Monitors -Browser=websitepulse checker - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Social Bookmarkers - -[Social Bookmarkers] -Parent=DefaultProperties -Browser=Social Bookmarkers -Frames=true -Tables=true -Cookies=true -JavaScript=true - -[BookmarkBase(2/;http://bookmarkbase.com)] -Parent=Social Bookmarkers -Browser=BookmarkBase - -[Cocoal.icio.us/1.0 (v43) (Mac OS X; http://www.scifihifi.com/cocoalicious)] -Parent=Social Bookmarkers -Browser=Cocoalicious - -[Mozilla/5.0 (compatible; FriendFeedBot/0.*; Http://friendfeed.com/about/bot)] -Parent=Social Bookmarkers -Browser=FriendFeedBot - -[Twitturly*] -Parent=Social Bookmarkers -Browser=Twitturly - -[WinkBot/*] -Parent=Social Bookmarkers -Browser=WinkBot - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Translators - -[Translators] -Parent=DefaultProperties -Browser=Translators -Frames=true -Tables=true -Cookies=true - -[Seram Server] -Parent=Translators -Browser=Seram Server - -[TeragramWebcrawler/*] -Parent=Translators -Browser=TeragramWebcrawler -Version=1.0 -MajorVer=1 -MinorVer=0 - -[WebIndexer/* (Web Indexer; *)] -Parent=Translators -Browser=WorldLingo - -[WebTrans] -Parent=Translators -Browser=WebTrans - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Version Checkers - -[Version Checkers] -Parent=DefaultProperties -Browser=Version Checkers -Crawler=true - -[Automated Browscap.ini Updater. To report issues contact us at http://www.skycomp.ca] -Parent=Version Checkers -Browser=Automated Browscap.ini Updater - -[BMC Link Validator (http://www.briansmodelcars.com/links/)] -Parent=Version Checkers -Browser=BMC Link Validator -MajorVer=1 -MinorVer=0 -Platform=Win2000 - -[Browscap updater] -Parent=Version Checkers -Browser=Browscap updater - -[BrowscapUpdater1.0] -Parent=Version Checkers - -[Browser Capabilities Project (http://browsers.garykeith.com; http://browsers.garykeith.com/sitemail/contact-me.asp)] -Parent=Version Checkers -Browser=Gary Keith's Version Checker - -[Browser Capabilities Project AutoDownloader] -Parent=Version Checkers -Browser=TKC AutoDownloader - -[browsers.garykeith.com browscap.ini bot BETA] -Parent=Version Checkers - -[Code Sample Web Client] -Parent=Version Checkers -Browser=Code Sample Web Client - -[Desktop Sidebar*] -Parent=Version Checkers -Browser=Desktop Sidebar -isBanned=true - -[Mono Browser Capabilities Updater*] -Parent=Version Checkers -Browser=Mono Browser Capabilities Updater -isBanned=true - -[Rewmi/*] -Parent=Version Checkers -isBanned=true - -[Subtext Version 1.9* - http://subtextproject.com/ (Microsoft Windows NT 5.2.*)] -Parent=Version Checkers -Browser=Subtext - -[TherapeuticResearch] -Parent=Version Checkers -Browser=TherapeuticResearch - -[UpdateBrowscap*] -Parent=Version Checkers -Browser=UpdateBrowscap - -[www.garykeith.com browscap.ini bot*] -Parent=Version Checkers -Browser=clarkson.edu - -[www.substancia.com AutoHTTPAgent (ver *)] -Parent=Version Checkers -Browser=Substncia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Become - -[Become] -Parent=DefaultProperties -Browser=Become -Frames=true -Tables=true -isSyndicationReader=true -Crawler=true - -[*BecomeBot/*] -Parent=Become -Browser=BecomeBot - -[*BecomeBot@exava.com*] -Parent=Become -Browser=BecomeBot - -[*Exabot@exava.com*] -Parent=Become -Browser=Exabot - -[MonkeyCrawl/*] -Parent=Become -Browser=MonkeyCrawl - -[Mozilla/5.0 (compatible; BecomeJPBot/2.3; *)] -Parent=Become -Browser=BecomeJPBot - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Blue Coat Systems - -[Blue Coat Systems] -Parent=DefaultProperties -Browser=Blue Coat Systems -isBanned=true -Crawler=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Browscap Abusers - -[Browscap Abusers] -Parent=DefaultProperties -Browser=Browscap Abusers -isBanned=true - -[Apple-PubSub/*] -Parent=Browscap Abusers -Browser=Apple-PubSub - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FeedHub - -[FeedHub] -Parent=DefaultProperties -Browser=FeedHub -isSyndicationReader=true - -[FeedHub FeedDiscovery/1.0 (http://www.feedhub.com)] -Parent=FeedHub -Browser=FeedHub FeedDiscovery -Version=1.0 -MajorVer=1 -MinorVer=0 - -[FeedHub FeedFetcher/1.0 (http://www.feedhub.com)] -Parent=FeedHub -Browser=FeedHub FeedFetcher -Version=1.0 -MajorVer=1 -MinorVer=0 - -[FeedHub MetaDataFetcher/1.0 (http://www.feedhub.com)] -Parent=FeedHub -Browser=FeedHub MetaDataFetcher -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Internet Content Rating Association] -Parent=DefaultProperties -Browser= -Frames=true -IFrames=true -Tables=true -Cookies=true -Crawler=true - -[ICRA_label_generator/1.?] -Parent=Internet Content Rating Association -Browser=ICRA_label_generator - -[ICRA_Semantic_spider/0.?] -Parent=Internet Content Rating Association -Browser=ICRA_Semantic_spider - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NameProtect - -[NameProtect] -Parent=DefaultProperties -Browser=NameProtect -isBanned=true -Crawler=true - -[abot/*] -Parent=NameProtect -Browser=NameProtect - -[NP/*] -Parent=NameProtect -Browser=NameProtect - -[NPBot*] -Parent=NameProtect -Browser=NameProtect - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netcraft - -[Netcraft] -Parent=DefaultProperties -Browser=Netcraft -isBanned=true -Crawler=true - -[*Netcraft Web Server Survey*] -Parent=Netcraft -Browser=Netcraft Webserver Survey -isBanned=true - -[Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; info@netcraft.com)] -Parent=Netcraft -Browser=NetcraftSurveyAgent - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NewsGator - -[NewsGator] -Parent=DefaultProperties -Browser=NewsGator -isSyndicationReader=true - -[MarsEdit*] -Parent=NewsGator -Browser=MarsEdit - -[NetNewsWire*/*] -Parent=NewsGator -Browser=NetNewsWire -Platform=MacOSX - -[NewsFire/*] -Parent=NewsGator -Browser=NewsFire - -[NewsGator FetchLinks extension/*] -Parent=NewsGator -Browser=NewsGator FetchLinks - -[NewsGator/*] -Parent=NewsGator -Browser=NewsGator -isBanned=true - -[NewsGatorOnline/*] -Parent=NewsGator -Browser=NewsGatorOnline - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 0.2 - -[Chrome 0.2] -Parent=DefaultProperties -Browser=Chrome -Version=0.2 -MinorVer=2 -Beta=true -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.2.* Safari/*] -Parent=Chrome 0.2 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.2.* Safari/*] -Parent=Chrome 0.2 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.2.* Safari/*] -Parent=Chrome 0.2 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 0.3 - -[Chrome 0.3] -Parent=DefaultProperties -Browser=Chrome -Version=0.3 -MinorVer=3 -Beta=true -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.3.* Safari/*] -Parent=Chrome 0.3 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.3.* Safari/*] -Parent=Chrome 0.3 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.3.* Safari/*] -Parent=Chrome 0.3 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 0.4 - -[Chrome 0.4] -Parent=DefaultProperties -Browser=Chrome -Version=0.4 -MinorVer=4 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.4.* Safari/*] -Parent=Chrome 0.4 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.4.* Safari/*] -Parent=Chrome 0.4 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.4.* Safari/*] -Parent=Chrome 0.4 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 0.5 - -[Chrome 0.5] -Parent=DefaultProperties -Browser=Chrome -Version=0.5 -MinorVer=5 -Beta=true -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.5.* Safari/*] -Parent=Chrome 0.5 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.5.* Safari/*] -Parent=Chrome 0.5 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/0.5.* Safari/*] -Parent=Chrome 0.5 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 1.0 - -[Chrome 1.0] -Parent=DefaultProperties -Browser=Chrome -Version=1.0 -MajorVer=1 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/1.0.* Safari/*] -Parent=Chrome 1.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Chrome/1.0.* Safari/*] -Parent=Chrome 1.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/1.0.* Safari/*] -Parent=Chrome 1.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/1.0.* Safari/*] -Parent=Chrome 1.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; U; Windows NT 7.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/1.0.* Safari/*] -Parent=Chrome 1.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 2.0 - -[Chrome 2.0] -Parent=DefaultProperties -Browser=Chrome -Version=2.0 -MajorVer=2 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/2.0.* Safari/*] -Parent=Chrome 2.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Chrome/2.0.* Safari/*] -Parent=Chrome 2.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/2.0.* Safari/*] -Parent=Chrome 2.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/2.0.* Safari/*] -Parent=Chrome 2.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; U; Windows NT 7.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/2.0.* Safari/*] -Parent=Chrome 2.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chrome 3.0 - -[Chrome 3.0] -Parent=DefaultProperties -Browser=Chrome -Version=3.0 -MajorVer=3 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/3.0.* Safari/*] -Parent=Chrome 3.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Chrome/3.0.* Safari/*] -Parent=Chrome 3.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/3.0.* Safari/*] -Parent=Chrome 3.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/3.0.* Safari/*] -Parent=Chrome 3.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; U; Windows NT 7.0; *) AppleWebKit/* (KHTML, like Gecko) Chrome/3.0.* Safari/*] -Parent=Chrome 3.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Google Code - -[Google Code] -Parent=DefaultProperties -Browser=Google Code -Tables=true -Cookies=true -JavaApplets=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 0.2 - -[Iron 0.2] -Parent=DefaultProperties -Browser=Iron -Version=0.2 -MinorVer=2 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.2.* Safari/*] -Parent=Iron 0.2 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.2.* Safari/*] -Parent=Iron 0.2 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.2.* Safari/*] -Parent=Iron 0.2 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 0.3 - -[Iron 0.3] -Parent=DefaultProperties -Browser=Iron -Version=0.3 -MinorVer=3 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.3.* Safari/*] -Parent=Iron 0.3 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.3.* Safari/*] -Parent=Iron 0.3 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.3.* Safari/*] -Parent=Iron 0.3 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iron 0.4 - -[Iron 0.4] -Parent=DefaultProperties -Browser=Iron -Version=0.4 -MinorVer=4 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.4.* Safari/*] -Parent=Iron 0.4 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.4.* Safari/*] -Parent=Iron 0.4 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *) AppleWebKit/* (KHTML, like Gecko) Iron/0.4.* Safari/*] -Parent=Iron 0.4 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iPod - -[iPod] -Parent=DefaultProperties -Browser=iPod -Platform=iPhone OSX -isMobileDevice=true - -[Mozilla/5.0 (iPod; U; *Mac OS X; *) AppleWebKit/* (*) Version/3.0 Mobile/* Safari/*] -Parent=iPod -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=MacOSX - -[Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2 like Mac OS X; en-us) AppleWebKit/* (KHTML, like Gecko) Mobile/*] -Parent=iPod - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iTunes - -[iTunes] -Parent=DefaultProperties -Browser=iTunes -Platform=iPhone OSX - -[iTunes/* (Windows; ?)] -Parent=iTunes -Browser=iTunes -Platform=Win32 -Win32=true - -[MOT-* iTunes/* MIB/* Profile/MIDP-* Configuration/CLDC-* UP.Link/*] -Parent=iTunes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Media Players - -[Media Players] -Parent=DefaultProperties -Browser=Media Players -Cookies=true - -[Microsoft NetShow(TM) Player with RealVideo(R)] -Parent=Media Players -Browser=Microsoft NetShow - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; *) AppleWebKit/* RealPlayer] -Parent=Media Players -Browser=RealPlayer -Platform=MacOSX - -[MPlayer 0.9*] -Parent=Media Players -Browser=MPlayer -Version=0.9 -MajorVer=0 -MinorVer=9 - -[MPlayer 1.*] -Parent=Media Players -Browser=MPlayer -Version=1.0 -MajorVer=1 -MinorVer=0 - -[MPlayer HEAD CVS] -Parent=Media Players -Browser=MPlayer - -[RealPlayer*] -Parent=Media Players -Browser=RealPlayer - -[RMA/*] -Parent=Media Players -Browser=RMA - -[VLC media player*] -Parent=Media Players -Browser=VLC - -[vobsub] -Parent=Media Players -Browser=vobsub -isBanned=true - -[WinampMPEG/*] -Parent=Media Players -Browser=WinAmp - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Nintendo - -[Nintendo Wii] -Parent=DefaultProperties -Browser= -isMobileDevice=true - -[Opera/* (Nintendo DSi; Opera/*; *; *)] -Parent=Nintendo Wii -Browser=DSi - -[Opera/* (Nintendo Wii; U; *)] -Parent=Nintendo Wii -Browser=Wii - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Windows Media Player - -[Windows Media Player] -Parent=DefaultProperties -Browser=Windows Media Player -Cookies=true - -[NSPlayer/10.*] -Parent=Windows Media Player -Version=10.0 -MajorVer=10 -MinorVer=0 - -[NSPlayer/11.*] -Parent=Windows Media Player -Browser=Windows Media Player -Version=11.0 -MajorVer=11 -MinorVer=0 - -[NSPlayer/4.*] -Parent=Windows Media Player -Browser=Windows Media Player -Version=4.0 -MajorVer=4 -MinorVer=0 - -[NSPlayer/7.*] -Parent=Windows Media Player -Browser=Windows Media Player -Version=7.0 -MajorVer=7 -MinorVer=0 - -[NSPlayer/8.*] -Parent=Windows Media Player -Browser=Windows Media Player -Version=8.0 -MajorVer=8 -MinorVer=0 - -[NSPlayer/9.*] -Parent=Windows Media Player -Browser=Windows Media Player -Version=9.0 -MajorVer=9 -MinorVer=0 - -[Windows-Media-Player/10.*] -Parent=Windows Media Player -Browser=Windows-Media-Player -Version=10.0 -MajorVer=10 -MinorVer=0 -Win32=true - -[Windows-Media-Player/11.*] -Parent=Windows Media Player -Version=11.0 -MajorVer=11 -MinorVer=0 -Win32=true - -[Windows-Media-Player/7.*] -Parent=Windows Media Player -Browser=Windows Media Player -Version=7.0 -MajorVer=7 -MinorVer=0 -Win32=true - -[Windows-Media-Player/8.*] -Parent=Windows Media Player -Browser=Windows Media Player -Version=8.0 -MajorVer=8 -MinorVer=0 -Win32=true - -[Windows-Media-Player/9.*] -Parent=Windows Media Player -Version=9.0 -MajorVer=9 -MinorVer=0 -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Zune - -[Zune] -Parent=DefaultProperties -Browser=Zune -Cookies=true - -[Mozilla/4.0 (compatible; MSIE ?.0; *Zune 2.0*)*] -Parent=Zune -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/4.0 (compatible; MSIE ?.0; *Zune 2.5*)*] -Parent=Zune -Version=2.5 -MajorVer=2 -MinorVer=5 - -[Mozilla/4.0 (compatible; MSIE ?.0; *Zune 3.0*)*] -Parent=Zune -Version=3.0 -MajorVer=3 -MinorVer=0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 7.0 - -[QuickTime 7.0] -Parent=DefaultProperties -Browser=QuickTime -Version=7.0 -MajorVer=7 -Cookies=true - -[QuickTime (qtver=7.0*;cpu=PPC;os=Mac 10.*)] -Parent=QuickTime 7.0 -Platform=MacOSX - -[QuickTime (qtver=7.0*;cpu=PPC;os=Mac 9.*)] -Parent=QuickTime 7.0 -Platform=MacPPC - -[QuickTime (qtver=7.0*;os=Windows 95*)] -Parent=QuickTime 7.0 -Platform=Win95 -Win32=true - -[QuickTime (qtver=7.0*;os=Windows 98*)] -Parent=QuickTime 7.0 -Platform=Win98 -Win32=true - -[QuickTime (qtver=7.0*;os=Windows Me*)] -Parent=QuickTime 7.0 -Platform=WinME -Win32=true - -[QuickTime (qtver=7.0*;os=Windows NT 4.0*)] -Parent=QuickTime 7.0 -Platform=WinNT -Win32=true - -[QuickTime (qtver=7.0*;os=Windows NT 5.0*)] -Parent=QuickTime 7.0 -Platform=Win2000 -Win32=true - -[QuickTime (qtver=7.0*;os=Windows NT 5.1*)] -Parent=QuickTime 7.0 -Platform=WinXP -Win32=true - -[QuickTime (qtver=7.0*;os=Windows NT 5.2*)] -Parent=QuickTime 7.0 -Platform=Win2003 -Win32=true - -[QuickTime/7.0.* (qtver=7.0.*;*;os=Mac 10.*)*] -Parent=QuickTime 7.0 -Platform=MacOSX - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 7.1 - -[QuickTime 7.1] -Parent=DefaultProperties -Browser=QuickTime -Version=7.1 -MajorVer=7 -MinorVer=1 -Cookies=true - -[QuickTime (qtver=7.1*;cpu=PPC;os=Mac 10.*)] -Parent=QuickTime 7.1 -Platform=MacOSX - -[QuickTime (qtver=7.1*;cpu=PPC;os=Mac 9.*)] -Parent=QuickTime 7.1 -Platform=MacPPC - -[QuickTime (qtver=7.1*;os=Windows 98*)] -Parent=QuickTime 7.1 -Platform=Win98 -Win32=true - -[QuickTime (qtver=7.1*;os=Windows NT 4.0*)] -Parent=QuickTime 7.1 -Platform=WinNT -Win32=true - -[QuickTime (qtver=7.1*;os=Windows NT 5.0*)] -Parent=QuickTime 7.1 -Platform=Win2000 -Win32=true - -[QuickTime (qtver=7.1*;os=Windows NT 5.1*)] -Parent=QuickTime 7.1 -Platform=WinXP -Win32=true - -[QuickTime (qtver=7.1*;os=Windows NT 5.2*)] -Parent=QuickTime 7.1 -Platform=Win2003 -Win32=true - -[QuickTime/7.1.* (qtver=7.1.*;*;os=Mac 10.*)*] -Parent=QuickTime 7.1 -Platform=MacOSX - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 7.2 - -[QuickTime 7.2] -Parent=DefaultProperties -Browser=QuickTime -Version=7.2 -MajorVer=7 -MinorVer=2 -Platform=MacOSX -Cookies=true - -[QuickTime (qtver=7.2*;cpu=PPC;os=Mac 10.*)] -Parent=QuickTime 7.2 -Platform=MacOSX - -[QuickTime (qtver=7.2*;cpu=PPC;os=Mac 9.*)] -Parent=QuickTime 7.2 -Platform=MacPPC - -[QuickTime (qtver=7.2*;os=Windows 98*)] -Parent=QuickTime 7.2 -Platform=Win98 -Win32=true - -[QuickTime (qtver=7.2*;os=Windows NT 4.0*)] -Parent=QuickTime 7.2 -Platform=WinNT -Win32=true - -[QuickTime (qtver=7.2*;os=Windows NT 5.0*)] -Parent=QuickTime 7.2 -Platform=Win2000 -Win32=true - -[QuickTime (qtver=7.2*;os=Windows NT 5.1*)] -Parent=QuickTime 7.2 -Platform=WinXP -Win32=true - -[QuickTime (qtver=7.2*;os=Windows NT 5.2*)] -Parent=QuickTime 7.2 -Platform=Win2003 -Win32=true - -[QuickTime/7.2.* (qtver=7.2.*;*;os=Mac 10.*)*] -Parent=QuickTime 7.2 -Platform=MacOSX - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 7.3 - -[QuickTime 7.3] -Parent=DefaultProperties -Browser=QuickTime -Version=7.3 -MajorVer=7 -MinorVer=3 -Platform=MacOSX -Cookies=true - -[QuickTime (qtver=7.3*;cpu=PPC;os=Mac 10.*)] -Parent=QuickTime 7.3 -Platform=MacOSX - -[QuickTime (qtver=7.3*;cpu=PPC;os=Mac 9.*)] -Parent=QuickTime 7.3 -Platform=MacPPC - -[QuickTime (qtver=7.3*;os=Windows 98*)] -Parent=QuickTime 7.3 -Platform=Win98 -Win32=true - -[QuickTime (qtver=7.3*;os=Windows NT 4.0*)] -Parent=QuickTime 7.3 -Platform=WinNT -Win32=true - -[QuickTime (qtver=7.3*;os=Windows NT 5.0*)] -Parent=QuickTime 7.3 -Platform=Win2000 -Win32=true - -[QuickTime (qtver=7.3*;os=Windows NT 5.1*)] -Parent=QuickTime 7.3 -Platform=WinXP -Win32=true - -[QuickTime (qtver=7.3*;os=Windows NT 5.2*)] -Parent=QuickTime 7.3 -Platform=Win2003 -Win32=true - -[QuickTime/7.3.* (qtver=7.3.*;*;os=Mac 10.*)*] -Parent=QuickTime 7.3 -Platform=MacOSX - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; QuickTime 7.4 - -[QuickTime 7.4] -Parent=DefaultProperties -Browser=QuickTime -Version=7.4 -MajorVer=7 -MinorVer=4 -Platform=MacOSX -Cookies=true - -[QuickTime (qtver=7.4*;cpu=PPC;os=Mac 10.*)] -Parent=QuickTime 7.4 -Platform=MacOSX - -[QuickTime (qtver=7.4*;cpu=PPC;os=Mac 9.*)] -Parent=QuickTime 7.4 -Platform=MacPPC - -[QuickTime (qtver=7.4*;os=Windows 98*)] -Parent=QuickTime 7.4 -Platform=Win98 -Win32=true - -[QuickTime (qtver=7.4*;os=Windows NT 4.0*)] -Parent=QuickTime 7.4 -Platform=WinNT -Win32=true - -[QuickTime (qtver=7.4*;os=Windows NT 5.0*)] -Parent=QuickTime 7.4 -Platform=Win2000 -Win32=true - -[QuickTime (qtver=7.4*;os=Windows NT 5.1*)] -Parent=QuickTime 7.4 -Platform=WinXP -Win32=true - -[QuickTime (qtver=7.4*;os=Windows NT 5.2*)] -Parent=QuickTime 7.4 -Platform=Win2003 -Win32=true - -[QuickTime/7.4.* (qtver=7.4.*;*;os=Mac 10.*)*] -Parent=QuickTime 7.4 -Platform=MacOSX - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Google Android - -[Android] -Parent=DefaultProperties -Browser=Android -Frames=true -Tables=true -Cookies=true -JavaScript=true -isMobileDevice=true - -[Mozilla/5.0 (Linux; U; Android *; *) AppleWebKit/* (KHTML, like Gecko) Safari/*] -Parent=Android -Browser=Android -Platform=Linux -isMobileDevice=true - -[Mozilla/5.0 (Linux; U; Android *; *) AppleWebKit/* (KHTML, like Gecko) Version/3.0.* Mobile Safari/*] -Parent=Android -Browser=Android -Platform=Linux -isMobileDevice=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BlackBerry - -[BlackBerry] -Parent=DefaultProperties -Browser=BlackBerry -Frames=true -Tables=true -Cookies=true -JavaScript=true -isMobileDevice=true - -[*BlackBerry*] -Parent=BlackBerry - -[*BlackBerrySimulator/*] -Parent=BlackBerry - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Handspring Blazer - -[Blazer] -Parent=DefaultProperties -Browser=Handspring Blazer -Platform=Palm -Frames=true -Tables=true -Cookies=true -isMobileDevice=true - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows 95; PalmSource; Blazer 3.0) 16;160x160] -Parent=Blazer -Version=3.0 -MajorVer=3 -MinorVer=0 - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.0) 16;320x448] -Parent=Blazer -Version=4.0 -MajorVer=4 -MinorVer=0 - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.1) 16;320x320] -Parent=Blazer -Version=4.1 -MajorVer=4 -MinorVer=1 - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.2) 16;320x320] -Parent=Blazer -Version=4.2 -MajorVer=4 -MinorVer=2 - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.4) 16;320x320] -Parent=Blazer -Version=4.4 -MajorVer=4 -MinorVer=4 - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/*; Blazer/4.5) 16;320x320] -Parent=Blazer -Version=4.5 -MajorVer=4 -MinorVer=5 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DoCoMo - -[DoCoMo] -Parent=DefaultProperties -Browser=DoCoMo -Frames=true -Tables=true -Cookies=true -JavaScript=true -isMobileDevice=true - -[DoCoMo/1.0*] -Parent=DoCoMo -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WAP - -[DoCoMo/2.0*] -Parent=DoCoMo -Version=2.0 -MajorVer=2 -MinorVer=0 -Platform=WAP - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IEMobile - -[IEMobile] -Parent=DefaultProperties -Browser=IEMobile -Platform=WinCE -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -VBScript=true -JavaScript=true -ActiveXControls=true -isMobileDevice=true -CssVersion=2 -supportsCSS=true - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.*)*] -Parent=IEMobile -Version=6.0 -MajorVer=6 -MinorVer=0 - -[Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.*)*] -Parent=IEMobile -Version=7.0 -MajorVer=7 -MinorVer=0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iPhone - -[iPhone] -Parent=DefaultProperties -Browser=iPhone -Platform=iPhone OSX -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -isMobileDevice=true -CssVersion=3 -supportsCSS=true - -[Mozilla/4.0 (iPhone; *)] -Parent=iPhone - -[Mozilla/4.0 (iPhone; U; CPU like Mac OS X; *)] -Parent=iPhone - -[Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_* like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko) Version/3.1* Mobile/* Safari/*] -Parent=iPhone -Browser=iPhone Simulator -Version=3.1 -MajorVer=3 -MinorVer=1 - -[Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_0_1 like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko) Version/3.1* Mobile/* Safari/*] -Parent=iPhone -Browser=iPhone Simulator -Version=3.1 -MajorVer=3 -MinorVer=1 - -[Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_1 like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko) Version/3.1* Mobile/* Safari/*] -Parent=iPhone -Browser=iPhone Simulator -Version=3.1 -MajorVer=3 -MinorVer=1 - -[Mozilla/5.0 (iPhone)] -Parent=iPhone - -[Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_* like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko)] -Parent=iPhone -Version=3.1 -MajorVer=3 -MinorVer=1 - -[Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_* like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko) Version/3.1* Mobile/* Safari/*] -Parent=iPhone -Version=3.1 -MajorVer=3 -MinorVer=1 - -[Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0* like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko) Version/3.1* Mobile/* Safari/*] -Parent=iPhone -Version=3.1 -MajorVer=3 -MinorVer=1 - -[Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_2 like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko)] -Parent=iPhone - -[Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; *)*] -Parent=iPhone - -[Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; *)] -Parent=iPhone - -[Mozilla/5.0 (iPhone; U; CPU like Mac OS X; *) AppleWebKit/* (KHTML, like Gecko) Version/3.0 Mobile/* Safari/*] -Parent=iPhone -Version=3.0 -MajorVer=3 -MinorVer=0 - -[Mozilla/5.0 (iPod; U; *Mac OS X; *) AppleWebKit/* (*) Version/* Mobile/*] -Parent=iPhone -Browser=iTouch - -[Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2* like Mac OS X; *)*] -Parent=iPhone -Browser=iTouch -Version=2.2 -MajorVer=2 -MinorVer=2 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KDDI - -[KDDI] -Parent=DefaultProperties -Browser=KDDI -Frames=true -Tables=true -Cookies=true -BackgroundSounds=true -VBScript=true -JavaScript=true -ActiveXControls=true -isMobileDevice=true -CssVersion=1 -supportsCSS=true - -[KDDI-* UP.Browser/* (GUI) MMP/*] -Parent=KDDI - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Miscellaneous Mobile - -[Miscellaneous Mobile] -Parent=DefaultProperties -Browser= -IFrames=true -Tables=true -Cookies=true -JavaScript=true -isMobileDevice=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (X11; *; CentOS; *) AppleWebKit/* (KHTML, like Gecko) Bolt/0.* Version/3.0 Safari/*] -Parent=Miscellaneous Mobile -Browser=Bolt - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Motorola Internet Browser - -[Motorola Internet Browser] -Parent=DefaultProperties -Browser=Motorola Internet Browser -Frames=true -Tables=true -Cookies=true -isMobileDevice=true - -[MOT-*/*] -Parent=Motorola Internet Browser - -[MOT-1*/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-8700_/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-A-0A/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-A-2B/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-A-88/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-C???/* MIB/*] -Parent=Motorola Internet Browser - -[MOT-GATW_/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-L6/* MIB/*] -Parent=Motorola Internet Browser - -[MOT-L7/* MIB/*] -Parent=Motorola Internet Browser - -[MOT-M*/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-MP*/* Mozilla/* (compatible; MSIE *; Windows CE; *)] -Parent=Motorola Internet Browser -Win32=true - -[MOT-MP*/* Mozilla/4.0 (compatible; MSIE *; Windows CE; *)] -Parent=Motorola Internet Browser -Win32=true - -[MOT-SAP4_/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-T*/*] -Parent=Motorola Internet Browser - -[MOT-T7*/* MIB/*] -Parent=Motorola Internet Browser - -[MOT-T721*] -Parent=Motorola Internet Browser - -[MOT-TA02/* MIB/*] -Parent=Motorola Internet Browser - -[MOT-V*/*] -Parent=Motorola Internet Browser - -[MOT-V*/* MIB/*] -Parent=Motorola Internet Browser - -[MOT-V*/* UP.Browser/*] -Parent=Motorola Internet Browser - -[MOT-V3/* MIB/*] -Parent=Motorola Internet Browser - -[MOT-V4*/* MIB/*] -Parent=Motorola Internet Browser - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MSN Mobile Proxy - -[MSN Mobile Proxy] -Parent=DefaultProperties -Browser=MSN Mobile Proxy -Win32=true -Frames=true -Tables=true -Cookies=true -JavaScript=true -ActiveXControls=true -isMobileDevice=true - -[Mozilla/* (compatible; MSIE *; Windows*; MSN Mobile Proxy)] -Parent=MSN Mobile Proxy - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NetFront - -[NetFront] -Parent=DefaultProperties -Browser=NetFront -Frames=true -Tables=true -Cookies=true -JavaScript=true -isMobileDevice=true - -[*NetFront/*] -Parent=NetFront - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Nokia - -[Nokia] -Parent=DefaultProperties -Browser=Nokia -Tables=true -Cookies=true -isMobileDevice=true - -[*Nokia*/*] -Parent=Nokia - -[Mozilla/* (SymbianOS/*; ?; *) AppleWebKit/* (KHTML, like Gecko) Safari/*] -Parent=Nokia -Platform=SymbianOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Openwave Mobile Browser - -[Openwave Mobile Browser] -Parent=DefaultProperties -Browser=Openwave Mobile Browser -Alpha=true -Win32=true -Win64=true -Frames=true -Tables=true -Cookies=true -isMobileDevice=true - -[*UP.Browser/*] -Parent=Openwave Mobile Browser - -[*UP.Link/*] -Parent=Openwave Mobile Browser - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mini - -[Opera Mini] -Parent=DefaultProperties -Browser=Opera Mini -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true -isMobileDevice=true - -[Opera/* (J2ME/MIDP; Opera Mini/1.0*)*] -Parent=Opera Mini -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Opera/* (J2ME/MIDP; Opera Mini/1.1*)*] -Parent=Opera Mini -Version=1.1 -MajorVer=1 -MinorVer=1 - -[Opera/* (J2ME/MIDP; Opera Mini/1.2*)*] -Parent=Opera Mini -Version=1.2 -MajorVer=1 -MinorVer=2 - -[Opera/* (J2ME/MIDP; Opera Mini/2.0*)*] -Parent=Opera Mini -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Opera/* (J2ME/MIDP; Opera Mini/3.0*)*] -Parent=Opera Mini -Version=3.0 -MajorVer=3 -MinorVer=0 - -[Opera/* (J2ME/MIDP; Opera Mini/3.1*)*] -Parent=Opera Mini -Version=3.1 -MajorVer=3 -MinorVer=1 - -[Opera/* (J2ME/MIDP; Opera Mini/4.0*)*] -Parent=Opera Mini -Version=4.0 -MajorVer=4 -MinorVer=0 - -[Opera/* (J2ME/MIDP; Opera Mini/4.1*)*] -Parent=Opera Mini -Version=4.1 -MajorVer=4 -MinorVer=1 - -[Opera/* (J2ME/MIDP; Opera Mini/4.2*)*] -Parent=Opera Mini -Version=4.2 -MajorVer=4 -MinorVer=2 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera Mobile - -[Opera Mobile] -Parent=DefaultProperties -Browser=Opera Mobi -Frames=true -Tables=true -Cookies=true -isMobileDevice=true - -[Opera/9.5 (Microsoft Windows; PPC; *Opera Mobile/*)] -Parent=Opera Mobile -Version=9.5 -MajorVer=9 -MinorVer=5 - -[Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/*)] -Parent=Opera Mobile -Version=9.5 -MajorVer=9 -MinorVer=5 - -[Opera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/*)*] -Parent=Opera Mobile -Version=9.51 -MajorVer=9 -MinorVer=51 -Beta=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Playstation - -[Playstation] -Parent=DefaultProperties -Browser=Playstation -Platform=WAP -Frames=true -Tables=true -Cookies=true -isMobileDevice=true - -[Mozilla/* (PLAYSTATION *; *)] -Parent=Playstation -Browser=PlayStation 3 -Frames=false - -[Mozilla/* (PSP (PlayStation Portable); *)] -Parent=Playstation - -[Sony PS2 (Linux)] -Parent=Playstation -Browser=Sony PS2 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Pocket PC - -[Pocket PC] -Parent=DefaultProperties -Browser=Pocket PC -Platform=WinCE -Win32=true -Frames=true -Tables=true -Cookies=true -JavaScript=true -ActiveXControls=true -isMobileDevice=true -CssVersion=1 -supportsCSS=true - -[*(compatible; MSIE *.*; Windows CE; PPC; *)] -Parent=Pocket PC - -[HTC-*/* Mozilla/* (compatible; MSIE *.*; Windows CE*)*] -Parent=Pocket PC -Win32=true - -[Mozilla/* (compatible; MSPIE *.*; *Windows CE*)*] -Parent=Pocket PC -Win32=true - -[T-Mobile* Mozilla/* (compatible; MSIE *.*; Windows CE; *)] -Parent=Pocket PC - -[Vodafone* Mozilla/* (compatible; MSIE *.*; Windows CE; *)*] -Parent=Pocket PC - -[Windows CE (Pocket PC) - Version *.*] -Parent=Pocket PC -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SEMC Browser - -[SEMC Browser] -Parent=DefaultProperties -Browser=SEMC Browser -Platform=JAVA -Tables=true -isMobileDevice=true -CssVersion=1 -supportsCSS=true - -[*SEMC-Browser/*] -Parent=SEMC Browser - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SonyEricsson - -[SonyEricsson] -Parent=DefaultProperties -Browser=SonyEricsson -Frames=true -Tables=true -Cookies=true -JavaScript=true -isMobileDevice=true -CssVersion=1 -supportsCSS=true - -[*Ericsson*] -Parent=SonyEricsson - -[*SonyEricsson*] -Parent=SonyEricsson - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netbox - -[Netbox] -Parent=DefaultProperties -Browser=Netbox -Frames=true -Tables=true -Cookies=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[Mozilla/3.01 (compatible; Netbox/*; Linux*)] -Parent=Netbox -Browser=Netbox -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PowerTV - -[PowerTV] -Parent=DefaultProperties -Browser=PowerTV -Platform=PowerTV -Frames=true -Tables=true -Cookies=true -JavaScript=true - -[Mozilla/4.0 PowerTV/1.5 (Compatible; Spyglass DM 3.2.1, EXPLORER)] -Parent=PowerTV -Version=1.5 -MajorVer=1 -MinorVer=5 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WebTV/MSNTV - -[WebTV] -Parent=DefaultProperties -Browser=WebTV/MSNTV -Platform=WebTV -Frames=true -Tables=true -Cookies=true -JavaScript=true - -[Mozilla/3.0 WebTV/1.*(compatible; MSIE 2.0)] -Parent=WebTV -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/4.0 WebTV/2.0*(compatible; MSIE 3.0)] -Parent=WebTV -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/4.0 WebTV/2.1*(compatible; MSIE 3.0)] -Parent=WebTV -Version=2.1 -MajorVer=2 -MinorVer=1 - -[Mozilla/4.0 WebTV/2.2*(compatible; MSIE 3.0)] -Parent=WebTV -Version=2.2 -MajorVer=2 -MinorVer=2 - -[Mozilla/4.0 WebTV/2.3*(compatible; MSIE 3.0)] -Parent=WebTV -Version=2.3 -MajorVer=2 -MinorVer=3 - -[Mozilla/4.0 WebTV/2.4*(compatible; MSIE 3.0)] -Parent=WebTV -Version=2.4 -MajorVer=2 -MinorVer=4 - -[Mozilla/4.0 WebTV/2.5*(compatible; MSIE 4.0)] -Parent=WebTV -Version=2.5 -MajorVer=2 -MinorVer=5 -CssVersion=1 -supportsCSS=true - -[Mozilla/4.0 WebTV/2.6*(compatible; MSIE 4.0)] -Parent=WebTV -Version=2.6 -MajorVer=2 -MinorVer=6 -CssVersion=1 -supportsCSS=true - -[Mozilla/4.0 WebTV/2.7*(compatible; MSIE 4.0)] -Parent=WebTV -Version=2.7 -MajorVer=2 -MinorVer=7 -CssVersion=1 -supportsCSS=true - -[Mozilla/4.0 WebTV/2.8*(compatible; MSIE 4.0)] -Parent=WebTV -Version=2.8 -MajorVer=2 -MinorVer=8 -JavaApplets=true -CssVersion=1 -supportsCSS=true - -[Mozilla/4.0 WebTV/2.9*(compatible; MSIE 4.0)] -Parent=WebTV -Version=2.9 -MajorVer=2 -MinorVer=9 -JavaApplets=true -CssVersion=1 -supportsCSS=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Amaya - -[Amaya] -Parent=DefaultProperties -Browser=Amaya -Tables=true -Cookies=true - -[amaya/7.*] -Parent=Amaya -Version=7.0 -MajorVer=7 -MinorVer=0 - -[amaya/8.0*] -Parent=Amaya -Version=8.0 -MajorVer=8 -MinorVer=0 -CssVersion=2 -supportsCSS=true - -[amaya/8.1*] -Parent=Amaya -Version=8.1 -MajorVer=8 -MinorVer=1 -CssVersion=2 -supportsCSS=true - -[amaya/8.2*] -Parent=Amaya -Version=8.2 -MajorVer=8 -MinorVer=2 -CssVersion=2 -supportsCSS=true - -[amaya/8.3*] -Parent=Amaya -Version=8.3 -MajorVer=8 -MinorVer=3 -CssVersion=2 -supportsCSS=true - -[amaya/8.4*] -Parent=Amaya -Version=8.4 -MajorVer=8 -MinorVer=4 -CssVersion=2 -supportsCSS=true - -[amaya/8.5*] -Parent=Amaya -Version=8.5 -MajorVer=8 -MinorVer=5 -CssVersion=2 -supportsCSS=true - -[amaya/8.6*] -Parent=Amaya -Version=8.6 -MajorVer=8 -MinorVer=6 -CssVersion=2 -supportsCSS=true - -[amaya/8.7*] -Parent=Amaya -Version=8.7 -MajorVer=8 -MinorVer=7 -CssVersion=2 -supportsCSS=true - -[amaya/8.8*] -Parent=Amaya -Version=8.8 -MajorVer=8 -MinorVer=8 -CssVersion=2 -supportsCSS=true - -[amaya/8.9*] -Parent=Amaya -Version=8.9 -MajorVer=8 -MinorVer=9 -CssVersion=2 -supportsCSS=true - -[amaya/9.0*] -Parent=Amaya -Version=9.0 -MajorVer=8 -MinorVer=0 -CssVersion=2 -supportsCSS=true - -[amaya/9.1*] -Parent=Amaya -Version=9.1 -MajorVer=9 -MinorVer=1 -CssVersion=2 -supportsCSS=true - -[amaya/9.2*] -Parent=Amaya -Version=9.2 -MajorVer=9 -MinorVer=2 -CssVersion=2 -supportsCSS=true - -[amaya/9.3*] -Parent=Amaya -Version=9.3 -MajorVer=9 -MinorVer=3 - -[amaya/9.4*] -Parent=Amaya -Version=9.4 -MajorVer=9 -MinorVer=4 - -[amaya/9.5*] -Parent=Amaya -Version=9.5 -MajorVer=9 -MinorVer=5 - -[Emacs-w3m/*] -Parent=Emacs/W3 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Links - -[Links] -Parent=DefaultProperties -Browser=Links -Frames=true -Tables=true - -[Links (0.9*; CYGWIN_NT-5.1*)] -Parent=Links -Browser=Links -Version=0.9 -MajorVer=0 -MinorVer=9 -Platform=WinXP - -[Links (0.9*; Darwin*)] -Parent=Links -Version=0.9 -MajorVer=0 -MinorVer=9 -Platform=MacPPC - -[Links (0.9*; FreeBSD*)] -Parent=Links -Browser=Links -Version=0.9 -MajorVer=0 -MinorVer=9 -Platform=FreeBSD - -[Links (0.9*; Linux*)] -Parent=Links -Browser=Links -Version=0.9 -MajorVer=0 -MinorVer=9 -Platform=Linux - -[Links (0.9*; OS/2*)] -Parent=Links -Browser=Links -Version=0.9 -MajorVer=0 -MinorVer=9 -Platform=OS/2 - -[Links (0.9*; Unix*)] -Parent=Links -Browser=Links -Version=0.9 -MajorVer=0 -MinorVer=9 -Platform=Unix - -[Links (0.9*; Win32*)] -Parent=Links -Browser=Links -Version=0.9 -MajorVer=0 -MinorVer=9 -Platform=Win32 -Win32=true - -[Links (1.0*; CYGWIN_NT-5.1*)] -Parent=Links -Browser=Links -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WinXP - -[Links (1.0*; FreeBSD*)] -Parent=Links -Browser=Links -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=FreeBSD - -[Links (1.0*; Linux*)] -Parent=Links -Browser=Links -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Linux - -[Links (1.0*; OS/2*)] -Parent=Links -Browser=Links -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=OS/2 - -[Links (1.0*; Unix*)] -Parent=Links -Browser=Links -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Unix - -[Links (1.0*; Win32*)] -Parent=Links -Browser=Links -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win32 -Win32=true - -[Links (2.0*; Linux*)] -Parent=Links -Browser=Links -Version=2.0 -MajorVer=2 -MinorVer=0 -Platform=Linux - -[Links (2.1*; FreeBSD*)] -Parent=Links -Browser=Links -Version=2.1 -MajorVer=2 -MinorVer=1 -Platform=FreeBSD - -[Links (2.1*; Linux *)] -Parent=Links -Browser=Links -Version=2.1 -MajorVer=2 -MinorVer=1 -Platform=Linux - -[Links (2.1*; OpenBSD*)] -Parent=Links -Browser=Links -Version=2.1 -MajorVer=2 -MinorVer=1 -Platform=OpenBSD - -[Links (2.2*; FreeBSD*)] -Parent=Links -Version=2.2 -MajorVer=2 -MinorVer=2 -Platform=FreeBSD - -[Links (2.2*; Linux *)] -Parent=Links -Version=2.2 -MajorVer=2 -MinorVer=2 -Platform=Linux - -[Links (2.2*; OpenBSD*)] -Parent=Links -Version=2.2 -MajorVer=2 -MinorVer=2 -Platform=OpenBSD - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lynx - -[Lynx] -Parent=DefaultProperties -Browser=Lynx -Frames=true -Tables=true - -[Lynx *] -Parent=Lynx -Browser=Lynx - -[Lynx/2.3*] -Parent=Lynx -Browser=Lynx -Version=2.3 -MajorVer=2 -MinorVer=3 - -[Lynx/2.4*] -Parent=Lynx -Browser=Lynx -Version=2.4 -MajorVer=2 -MinorVer=4 - -[Lynx/2.5*] -Parent=Lynx -Browser=Lynx -Version=2.5 -MajorVer=2 -MinorVer=5 - -[Lynx/2.6*] -Parent=Lynx -Browser=Lynx -Version=2.6 -MajorVer=2 -MinorVer=6 - -[Lynx/2.7*] -Parent=Lynx -Browser=Lynx -Version=2.7 -MajorVer=2 -MinorVer=7 - -[Lynx/2.8*] -Parent=Lynx -Browser=Lynx -Version=2.8 -MajorVer=2 -MinorVer=8 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NCSA Mosaic - -[Mosaic] -Parent=DefaultProperties -Browser=Mosaic - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; w3m - -[w3m] -Parent=DefaultProperties -Browser=w3m -Frames=true -Tables=true - -[w3m/0.1*] -Parent=w3m -Browser=w3m -Version=0.1 -MajorVer=0 -MinorVer=1 - -[w3m/0.2*] -Parent=w3m -Browser=w3m -Version=0.2 -MajorVer=0 -MinorVer=2 - -[w3m/0.3*] -Parent=w3m -Browser=w3m -Version=0.3 -MajorVer=0 -MinorVer=3 - -[w3m/0.4*] -Parent=w3m -Browser=w3m -Version=0.4 -MajorVer=0 -MinorVer=4 -Cookies=true - -[w3m/0.5*] -Parent=w3m -Browser=w3m -Version=0.5 -MajorVer=0 -MinorVer=5 -Cookies=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.10 - -[ELinks 0.10] -Parent=DefaultProperties -Browser=ELinks -Version=0.10 -MinorVer=10 -Frames=true -Tables=true - -[ELinks (0.10*; *AIX*)] -Parent=ELinks 0.10 -Platform=AIX - -[ELinks (0.10*; *BeOS*)] -Parent=ELinks 0.10 -Platform=BeOS - -[ELinks (0.10*; *CygWin*)] -Parent=ELinks 0.10 -Platform=CygWin - -[ELinks (0.10*; *Darwin*)] -Parent=ELinks 0.10 -Platform=Darwin - -[ELinks (0.10*; *Digital Unix*)] -Parent=ELinks 0.10 -Platform=Digital Unix - -[ELinks (0.10*; *FreeBSD*)] -Parent=ELinks 0.10 -Platform=FreeBSD - -[ELinks (0.10*; *HPUX*)] -Parent=ELinks 0.10 -Platform=HP-UX - -[ELinks (0.10*; *IRIX*)] -Parent=ELinks 0.10 -Platform=IRIX - -[ELinks (0.10*; *Linux*)] -Parent=ELinks 0.10 -Platform=Linux - -[ELinks (0.10*; *NetBSD*)] -Parent=ELinks 0.10 -Platform=NetBSD - -[ELinks (0.10*; *OpenBSD*)] -Parent=ELinks 0.10 -Platform=OpenBSD - -[ELinks (0.10*; *OS/2*)] -Parent=ELinks 0.10 -Platform=OS/2 - -[ELinks (0.10*; *RISC*)] -Parent=ELinks 0.10 -Platform=RISC OS - -[ELinks (0.10*; *Solaris*)] -Parent=ELinks 0.10 -Platform=Solaris - -[ELinks (0.10*; *Unix*)] -Parent=ELinks 0.10 -Platform=Unix - -[ELinks/0.10* (*AIX*)] -Parent=ELinks 0.10 -Platform=AIX - -[ELinks/0.10* (*BeOS*)] -Parent=ELinks 0.10 -Platform=BeOS - -[ELinks/0.10* (*CygWin*)] -Parent=ELinks 0.10 -Platform=CygWin - -[ELinks/0.10* (*Darwin*)] -Parent=ELinks 0.10 -Platform=Darwin - -[ELinks/0.10* (*Digital Unix*)] -Parent=ELinks 0.10 -Platform=Digital Unix - -[ELinks/0.10* (*FreeBSD*)] -Parent=ELinks 0.10 -Platform=FreeBSD - -[ELinks/0.10* (*HPUX*)] -Parent=ELinks 0.10 -Platform=HP-UX - -[ELinks/0.10* (*IRIX*)] -Parent=ELinks 0.10 -Platform=IRIX - -[ELinks/0.10* (*Linux*)] -Parent=ELinks 0.10 -Platform=Linux - -[ELinks/0.10* (*NetBSD*)] -Parent=ELinks 0.10 -Platform=NetBSD - -[ELinks/0.10* (*OpenBSD*)] -Parent=ELinks 0.10 -Platform=OpenBSD - -[ELinks/0.10* (*OS/2*)] -Parent=ELinks 0.10 -Platform=OS/2 - -[ELinks/0.10* (*RISC*)] -Parent=ELinks 0.10 -Platform=RISC OS - -[ELinks/0.10* (*Solaris*)] -Parent=ELinks 0.10 -Platform=Solaris - -[ELinks/0.10* (*Unix*)] -Parent=ELinks 0.10 -Platform=Unix - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.11 - -[ELinks 0.11] -Parent=DefaultProperties -Browser=ELinks -Version=0.11 -MinorVer=11 -Frames=true -Tables=true - -[ELinks (0.11*; *AIX*)] -Parent=ELinks 0.11 -Platform=AIX - -[ELinks (0.11*; *BeOS*)] -Parent=ELinks 0.11 -Platform=BeOS - -[ELinks (0.11*; *CygWin*)] -Parent=ELinks 0.11 -Platform=CygWin - -[ELinks (0.11*; *Darwin*)] -Parent=ELinks 0.11 -Platform=Darwin - -[ELinks (0.11*; *Digital Unix*)] -Parent=ELinks 0.11 -Platform=Digital Unix - -[ELinks (0.11*; *FreeBSD*)] -Parent=ELinks 0.11 -Platform=FreeBSD - -[ELinks (0.11*; *HPUX*)] -Parent=ELinks 0.11 -Platform=HP-UX - -[ELinks (0.11*; *IRIX*)] -Parent=ELinks 0.11 -Platform=IRIX - -[ELinks (0.11*; *Linux*)] -Parent=ELinks 0.11 -Platform=Linux - -[ELinks (0.11*; *NetBSD*)] -Parent=ELinks 0.11 -Platform=NetBSD - -[ELinks (0.11*; *OpenBSD*)] -Parent=ELinks 0.11 -Platform=OpenBSD - -[ELinks (0.11*; *OS/2*)] -Parent=ELinks 0.11 -Platform=OS/2 - -[ELinks (0.11*; *RISC*)] -Parent=ELinks 0.11 -Platform=RISC OS - -[ELinks (0.11*; *Solaris*)] -Parent=ELinks 0.11 -Platform=Solaris - -[ELinks (0.11*; *Unix*)] -Parent=ELinks 0.11 -Platform=Unix - -[ELinks/0.11* (*AIX*)] -Parent=ELinks 0.11 -Platform=AIX - -[ELinks/0.11* (*BeOS*)] -Parent=ELinks 0.11 -Platform=BeOS - -[ELinks/0.11* (*CygWin*)] -Parent=ELinks 0.11 -Platform=CygWin - -[ELinks/0.11* (*Darwin*)] -Parent=ELinks 0.11 -Platform=Darwin - -[ELinks/0.11* (*Digital Unix*)] -Parent=ELinks 0.11 -Platform=Digital Unix - -[ELinks/0.11* (*FreeBSD*)] -Parent=ELinks 0.11 -Platform=FreeBSD - -[ELinks/0.11* (*HPUX*)] -Parent=ELinks 0.11 -Platform=HP-UX - -[ELinks/0.11* (*IRIX*)] -Parent=ELinks 0.11 -Platform=IRIX - -[ELinks/0.11* (*Linux*)] -Parent=ELinks 0.11 -Platform=Linux - -[ELinks/0.11* (*NetBSD*)] -Parent=ELinks 0.11 -Platform=NetBSD - -[ELinks/0.11* (*OpenBSD*)] -Parent=ELinks 0.11 -Platform=OpenBSD - -[ELinks/0.11* (*OS/2*)] -Parent=ELinks 0.11 -Platform=OS/2 - -[ELinks/0.11* (*RISC*)] -Parent=ELinks 0.11 -Platform=RISC OS - -[ELinks/0.11* (*Solaris*)] -Parent=ELinks 0.11 -Platform=Solaris - -[ELinks/0.11* (*Unix*)] -Parent=ELinks 0.11 -Platform=Unix - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.12 - -[ELinks 0.12] -Parent=DefaultProperties -Browser=ELinks -Version=0.12 -MinorVer=12 -Frames=true -Tables=true - -[ELinks (0.12*; *AIX*)] -Parent=ELinks 0.12 -Platform=AIX - -[ELinks (0.12*; *BeOS*)] -Parent=ELinks 0.12 -Platform=BeOS - -[ELinks (0.12*; *CygWin*)] -Parent=ELinks 0.12 -Platform=CygWin - -[ELinks (0.12*; *Darwin*)] -Parent=ELinks 0.12 -Platform=Darwin - -[ELinks (0.12*; *Digital Unix*)] -Parent=ELinks 0.12 -Platform=Digital Unix - -[ELinks (0.12*; *FreeBSD*)] -Parent=ELinks 0.12 -Platform=FreeBSD - -[ELinks (0.12*; *HPUX*)] -Parent=ELinks 0.12 -Platform=HP-UX - -[ELinks (0.12*; *IRIX*)] -Parent=ELinks 0.12 -Platform=IRIX - -[ELinks (0.12*; *Linux*)] -Parent=ELinks 0.12 -Platform=Linux - -[ELinks (0.12*; *NetBSD*)] -Parent=ELinks 0.12 -Platform=NetBSD - -[ELinks (0.12*; *OpenBSD*)] -Parent=ELinks 0.12 -Platform=OpenBSD - -[ELinks (0.12*; *OS/2*)] -Parent=ELinks 0.12 -Platform=OS/2 - -[ELinks (0.12*; *RISC*)] -Parent=ELinks 0.12 -Platform=RISC OS - -[ELinks (0.12*; *Solaris*)] -Parent=ELinks 0.12 -Platform=Solaris - -[ELinks (0.12*; *Unix*)] -Parent=ELinks 0.12 -Platform=Unix - -[ELinks/0.12* (*AIX*)] -Parent=ELinks 0.12 -Platform=AIX - -[ELinks/0.12* (*BeOS*)] -Parent=ELinks 0.12 -Platform=BeOS - -[ELinks/0.12* (*CygWin*)] -Parent=ELinks 0.12 -Platform=CygWin - -[ELinks/0.12* (*Darwin*)] -Parent=ELinks 0.12 -Platform=Darwin - -[ELinks/0.12* (*Digital Unix*)] -Parent=ELinks 0.12 -Platform=Digital Unix - -[ELinks/0.12* (*FreeBSD*)] -Parent=ELinks 0.12 -Platform=FreeBSD - -[ELinks/0.12* (*HPUX*)] -Parent=ELinks 0.12 -Platform=HP-UX - -[ELinks/0.12* (*IRIX*)] -Parent=ELinks 0.12 -Platform=IRIX - -[ELinks/0.12* (*Linux*)] -Parent=ELinks 0.12 -Platform=Linux - -[ELinks/0.12* (*NetBSD*)] -Parent=ELinks 0.12 -Platform=NetBSD - -[ELinks/0.12* (*OpenBSD*)] -Parent=ELinks 0.12 -Platform=OpenBSD - -[ELinks/0.12* (*OS/2*)] -Parent=ELinks 0.12 -Platform=OS/2 - -[ELinks/0.12* (*RISC*)] -Parent=ELinks 0.12 -Platform=RISC OS - -[ELinks/0.12* (*Solaris*)] -Parent=ELinks 0.12 -Platform=Solaris - -[ELinks/0.12* (*Unix*)] -Parent=ELinks 0.12 -Platform=Unix - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ELinks 0.9 - -[ELinks 0.9] -Parent=DefaultProperties -Browser=ELinks -Version=0.9 -MinorVer=9 -Frames=true -Tables=true - -[ELinks (0.9*; *AIX*)] -Parent=ELinks 0.9 -Platform=AIX - -[ELinks (0.9*; *BeOS*)] -Parent=ELinks 0.9 -Platform=BeOS - -[ELinks (0.9*; *CygWin*)] -Parent=ELinks 0.9 -Platform=CygWin - -[ELinks (0.9*; *Darwin*)] -Parent=ELinks 0.9 -Platform=Darwin - -[ELinks (0.9*; *Digital Unix*)] -Parent=ELinks 0.9 -Platform=Digital Unix - -[ELinks (0.9*; *FreeBSD*)] -Parent=ELinks 0.9 -Platform=FreeBSD - -[ELinks (0.9*; *HPUX*)] -Parent=ELinks 0.9 -Platform=HP-UX - -[ELinks (0.9*; *IRIX*)] -Parent=ELinks 0.9 -Platform=IRIX - -[ELinks (0.9*; *Linux*)] -Parent=ELinks 0.9 -Platform=Linux - -[ELinks (0.9*; *NetBSD*)] -Parent=ELinks 0.9 -Platform=NetBSD - -[ELinks (0.9*; *OpenBSD*)] -Parent=ELinks 0.9 -Platform=OpenBSD - -[ELinks (0.9*; *OS/2*)] -Parent=ELinks 0.9 -Platform=OS/2 - -[ELinks (0.9*; *RISC*)] -Parent=ELinks 0.9 -Platform=RISC OS - -[ELinks (0.9*; *Solaris*)] -Parent=ELinks 0.9 -Platform=Solaris - -[ELinks (0.9*; *Unix*)] -Parent=ELinks 0.9 -Platform=Unix - -[ELinks/0.9* (*AIX*)] -Parent=ELinks 0.9 -Platform=AIX - -[ELinks/0.9* (*BeOS*)] -Parent=ELinks 0.9 -Platform=BeOS - -[ELinks/0.9* (*CygWin*)] -Parent=ELinks 0.9 -Platform=CygWin - -[ELinks/0.9* (*Darwin*)] -Parent=ELinks 0.9 -Platform=Darwin - -[ELinks/0.9* (*Digital Unix*)] -Parent=ELinks 0.9 -Platform=Digital Unix - -[ELinks/0.9* (*FreeBSD*)] -Parent=ELinks 0.9 -Platform=FreeBSD - -[ELinks/0.9* (*HPUX*)] -Parent=ELinks 0.9 -Platform=HP-UX - -[ELinks/0.9* (*IRIX*)] -Parent=ELinks 0.9 -Platform=IRIX - -[ELinks/0.9* (*Linux*)] -Parent=ELinks 0.9 -Platform=Linux - -[ELinks/0.9* (*NetBSD*)] -Parent=ELinks 0.9 -Platform=NetBSD - -[ELinks/0.9* (*OpenBSD*)] -Parent=ELinks 0.9 -Platform=OpenBSD - -[ELinks/0.9* (*OS/2*)] -Parent=ELinks 0.9 -Platform=OS/2 - -[ELinks/0.9* (*RISC*)] -Parent=ELinks 0.9 -Platform=RISC OS - -[ELinks/0.9* (*Solaris*)] -Parent=ELinks 0.9 -Platform=Solaris - -[ELinks/0.9* (*Unix*)] -Parent=ELinks 0.9 -Platform=Unix - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AppleWebKit - -[AppleWebKit] -Parent=DefaultProperties -Browser=AppleWebKit -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (KHTML, like Gecko)] -Parent=AppleWebKit - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Camino - -[Camino] -Parent=DefaultProperties -Browser=Camino -Platform=MacOSX -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/0.7*] -Parent=Camino -Version=0.7 -MajorVer=0 -MinorVer=7 -Beta=true - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/0.8*] -Parent=Camino -Version=0.8 -MajorVer=0 -MinorVer=8 -Beta=true - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/0.9*] -Parent=Camino -Version=0.9 -MajorVer=0 -MinorVer=9 -Beta=true - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.0*] -Parent=Camino -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.2*] -Parent=Camino -Version=1.2 -MajorVer=1 -MinorVer=2 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.3*] -Parent=Camino -Version=1.3 -MajorVer=1 -MinorVer=3 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.4*] -Parent=Camino -Version=1.4 -MajorVer=1 -MinorVer=4 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.5*] -Parent=Camino -Version=1.5 -MajorVer=1 -MinorVer=5 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; *Mac OS X*) Gecko/* Camino/1.6*] -Parent=Camino -Version=1.6 -MajorVer=1 -MinorVer=6 -Platform=MacOSX - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Chimera - -[Chimera] -Parent=DefaultProperties -Browser=Chimera -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true - -[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *; rv:1.*) Gecko/* Chimera/*] -Parent=Chimera -Platform=MacOSX - -[Mozilla/5.0 Gecko/* Chimera/*] -Parent=Chimera - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Dillo - -[Dillo] -Parent=DefaultProperties -Browser=Dillo -Platform=Linux -Frames=true -IFrames=true -Tables=true -Cookies=true -CssVersion=2 -supportsCSS=true - -[Dillo/0.6*] -Parent=Dillo -Version=0.6 -MajorVer=0 -MinorVer=6 - -[Dillo/0.7*] -Parent=Dillo -Version=0.7 -MajorVer=0 -MinorVer=7 - -[Dillo/0.8*] -Parent=Dillo -Version=0.8 -MajorVer=0 -MinorVer=8 - -[Dillo/2.0] -Parent=Dillo -Version=2.0 -MajorVer=2 -MinorVer=0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Emacs/W3 - -[Emacs/W3] -Parent=DefaultProperties -Browser=Emacs/W3 -Frames=true -Tables=true -Cookies=true - -[Emacs/W3/2.* (Unix*] -Parent=Emacs/W3 -Version=2.0 -MajorVer=2 -MinorVer=0 -Platform=Unix - -[Emacs/W3/2.* (X11*] -Parent=Emacs/W3 -Version=2.0 -MajorVer=2 -MinorVer=0 -Platform=Linux - -[Emacs/W3/3.* (Unix*] -Parent=Emacs/W3 -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=Unix - -[Emacs/W3/3.* (X11*] -Parent=Emacs/W3 -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=Linux - -[Emacs/W3/4.* (Unix*] -Parent=Emacs/W3 -Version=4.0 -MajorVer=4 -MinorVer=0 -Platform=Unix - -[Emacs/W3/4.* (X11*] -Parent=Emacs/W3 -Version=4.0 -MajorVer=4 -MinorVer=0 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; fantomas - -[fantomas] -Parent=DefaultProperties -Browser=fantomas -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true - -[Mozilla/4.0 (cloakBrowser)] -Parent=fantomas -Browser=fantomas cloakBrowser - -[Mozilla/4.0 (fantomas shadowMaker Browser)] -Parent=fantomas -Browser=fantomas shadowMaker Browser - -[Mozilla/4.0 (fantomBrowser)] -Parent=fantomas -Browser=fantomas fantomBrowser - -[Mozilla/4.0 (fantomCrew Browser)] -Parent=fantomas -Browser=fantomas fantomCrew Browser - -[Mozilla/4.0 (stealthBrowser)] -Parent=fantomas -Browser=fantomas stealthBrowser - -[multiBlocker browser*] -Parent=fantomas -Browser=fantomas multiBlocker browser - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FrontPage - -[FrontPage] -Parent=DefaultProperties -Browser=FrontPage -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true - -[Mozilla/?* (compatible; MS FrontPage*)] -Parent=FrontPage - -[MSFrontPage/*] -Parent=FrontPage - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Galeon - -[Galeon] -Parent=DefaultProperties -Browser=Galeon -Platform=Linux -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (X11; U; Linux*) Gecko/* Galeon/1.*] -Parent=Galeon -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 (X11; U; Linux*) Gecko/* Galeon/2.*] -Parent=Galeon -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/5.0 Galeon/1.* (X11; Linux*)*] -Parent=Galeon -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 Galeon/2.* (X11; Linux*)*] -Parent=Galeon -Version=2.0 -MajorVer=2 -MinorVer=0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; HP Secure Web Browser - -[HP Secure Web Browser] -Parent=DefaultProperties -Browser=HP Secure Web Browser -Platform=OpenVMS -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.0*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.1*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.1 -MajorVer=1 -MinorVer=1 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.2*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.2 -MajorVer=1 -MinorVer=2 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.3*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.3 -MajorVer=1 -MinorVer=3 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.4*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.4 -MajorVer=1 -MinorVer=4 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.5*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.5 -MajorVer=1 -MinorVer=5 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.6*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.6 -MajorVer=1 -MinorVer=6 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.7*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.7 -MajorVer=1 -MinorVer=7 - -[Mozilla/5.0 (X11; U; OpenVMS*; *; rv:1.8*) Gecko/*] -Parent=HP Secure Web Browser -Version=1.8 -MajorVer=1 -MinorVer=8 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IBrowse - -[IBrowse] -Parent=DefaultProperties -Browser=IBrowse -Platform=Amiga -Frames=true -Tables=true -Cookies=true -JavaScript=true - -[Arexx (compatible; MSIE 6.0; AmigaOS5.0) IBrowse 4.0] -Parent=IBrowse -Version=4.0 -MajorVer=4 -MinorVer=0 - -[IBrowse/1.22 (AmigaOS *)] -Parent=IBrowse -Version=1.22 -MajorVer=1 -MinorVer=22 - -[IBrowse/2.1 (AmigaOS *)] -Parent=IBrowse -Version=2.1 -MajorVer=2 -MinorVer=1 - -[IBrowse/2.2 (AmigaOS *)] -Parent=IBrowse -Version=2.2 -MajorVer=2 -MinorVer=2 - -[IBrowse/2.3 (AmigaOS *)] -Parent=IBrowse -Version=2.2 -MajorVer=2 -MinorVer=3 - -[Mozilla/* (Win98; I) IBrowse/2.1 (AmigaOS 3.1)] -Parent=IBrowse -Version=2.1 -MajorVer=2 -MinorVer=1 - -[Mozilla/* (Win98; I) IBrowse/2.2 (AmigaOS 3.1)] -Parent=IBrowse -Version=2.2 -MajorVer=2 -MinorVer=2 - -[Mozilla/* (Win98; I) IBrowse/2.3 (AmigaOS 3.1)] -Parent=IBrowse -Version=2.3 -MajorVer=2 -MinorVer=3 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iCab - -[iCab] -Parent=DefaultProperties -Browser=iCab -Frames=true -Tables=true -Cookies=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[iCab/2.7* (Macintosh; ?; 68K*)] -Parent=iCab -Version=2.7 -MajorVer=2 -MinorVer=7 -Platform=Mac68K - -[iCab/2.7* (Macintosh; ?; PPC*)] -Parent=iCab -Version=2.7 -MajorVer=2 -MinorVer=7 -Platform=MacPPC - -[iCab/2.8* (Macintosh; ?; *Mac OS X*)] -Parent=iCab -Version=2.8 -MajorVer=2 -MinorVer=8 -Platform=MacOSX - -[iCab/2.8* (Macintosh; ?; 68K*)] -Parent=iCab -Version=2.8 -MajorVer=2 -MinorVer=8 -Platform=Mac68K - -[iCab/2.8* (Macintosh; ?; PPC)] -Parent=iCab -Version=2.8 -MajorVer=2 -MinorVer=8 -Platform=MacPPC - -[iCab/2.9* (Macintosh; ?; *Mac OS X*)] -Parent=iCab -Version=2.9 -MajorVer=2 -MinorVer=9 -Platform=MacOSX - -[iCab/2.9* (Macintosh; ?; 68K*)] -Parent=iCab -Version=2.9 -MajorVer=2 -MinorVer=9 -Platform=Mac68K - -[iCab/2.9* (Macintosh; ?; PPC*)] -Parent=iCab -Version=2.9 -MajorVer=2 -MinorVer=9 -Platform=MacPPC - -[iCab/3.0* (Macintosh; ?; *Mac OS X*)] -Parent=iCab -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=MacOSX -CssVersion=2 -supportsCSS=true - -[iCab/3.0* (Macintosh; ?; PPC*)] -Parent=iCab -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=MacPPC -CssVersion=2 -supportsCSS=true - -[iCab/4.0 (Macintosh; U; *Mac OS X)] -Parent=iCab -Version=4.0 -MajorVer=4 -MinorVer=0 -Platform=MacOSX - -[Mozilla/* (compatible; iCab 3.0*; Macintosh; *Mac OS X*)] -Parent=iCab -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=MacOSX -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; iCab 3.0*; Macintosh; ?; PPC*)] -Parent=iCab -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=MacPPC -CssVersion=2 -supportsCSS=true - -[Mozilla/4.5 (compatible; iCab 2.7*; Macintosh; ?; 68K*)] -Parent=iCab -Version=2.7 -MajorVer=2 -MinorVer=7 -Platform=Mac68K - -[Mozilla/4.5 (compatible; iCab 2.7*; Macintosh; ?; PPC*)] -Parent=iCab -Version=2.7 -MajorVer=2 -MinorVer=7 -Platform=MacPPC - -[Mozilla/4.5 (compatible; iCab 2.8*; Macintosh; ?; *Mac OS X*)] -Parent=iCab -Version=2.8 -MajorVer=2 -MinorVer=8 -Platform=MacOSX - -[Mozilla/4.5 (compatible; iCab 2.8*; Macintosh; ?; PPC*)] -Parent=iCab -Version=2.8 -MajorVer=2 -MinorVer=8 -Platform=MacPPC - -[Mozilla/4.5 (compatible; iCab 2.9*; Macintosh; *Mac OS X*)] -Parent=iCab -Version=2.9 -MajorVer=2 -MinorVer=9 -Platform=MacOSX - -[Mozilla/4.5 (compatible; iCab 2.9*; Macintosh; ?; PPC*)] -Parent=iCab -Version=2.9 -MajorVer=2 -MinorVer=9 -Platform=MacPPC - -[Mozilla/4.5 (compatible; iCab 4.2*; Macintosh; *Mac OS X*)] -Parent=iCab -Version=4.2 -MajorVer=4 -MinorVer=2 -Platform=MacOSX - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; iSiloX - -[iSiloX] -Parent=DefaultProperties -Browser=iSiloX -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true -Crawler=true -CssVersion=2 -supportsCSS=true - -[iSiloX/4.0* MacOS] -Parent=iSiloX -Version=4.0 -MajorVer=4 -MinorVer=0 -Platform=MacPPC - -[iSiloX/4.0* Windows/32] -Parent=iSiloX -Version=4.0 -MajorVer=4 -MinorVer=0 -Platform=Win32 -Win32=true - -[iSiloX/4.1* MacOS] -Parent=iSiloX -Version=4.1 -MajorVer=4 -MinorVer=1 -Platform=MacPPC - -[iSiloX/4.1* Windows/32] -Parent=iSiloX -Version=4.1 -MajorVer=4 -MinorVer=1 -Platform=Win32 -Win32=true - -[iSiloX/4.2* MacOS] -Parent=iSiloX -Version=4.2 -MajorVer=4 -MinorVer=2 -Platform=MacPPC - -[iSiloX/4.2* Windows/32] -Parent=iSiloX -Version=4.2 -MajorVer=4 -MinorVer=2 -Platform=Win32 -Win32=true - -[iSiloX/4.3* MacOS] -Parent=iSiloX -Version=4.3 -MajorVer=4 -MinorVer=4 -Platform=MacOSX - -[iSiloX/4.3* Windows/32] -Parent=iSiloX -Version=4.3 -MajorVer=4 -MinorVer=3 -Platform=Win32 -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lycoris Desktop/LX - -[Lycoris Desktop/LX] -Parent=DefaultProperties -Browser=Lycoris Desktop/LX -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -Crawler=true - -[Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.*: Desktop/LX Amethyst) Gecko/*] -Parent=Lycoris Desktop/LX -Version=1.1 -MajorVer=1 -MinorVer=1 -Platform=Linux - -[Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.*; Desktop/LX Amethyst) Gecko/*] -Parent=Lycoris Desktop/LX -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mosaic - -[Mosaic] -Parent=DefaultProperties -Browser=Mosaic -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true - -[Mozilla/4.0 (VMS_Mosaic)] -Parent=Mosaic -Platform=OpenVMS - -[VMS_Mosaic/3.7*] -Parent=Mosaic -Version=3.7 -MajorVer=3 -MinorVer=7 -Platform=OpenVMS - -[VMS_Mosaic/3.8*] -Parent=Mosaic -Version=3.8 -MajorVer=3 -MinorVer=8 -Platform=OpenVMS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NetPositive - -[NetPositive] -Parent=DefaultProperties -Browser=NetPositive -Platform=BeOS -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true - -[*NetPositive/2.2*] -Parent=NetPositive -Version=2.2 -MajorVer=2 -MinorVer=2 - -[*NetPositive/2.2*BeOS*] -Parent=NetPositive -Version=2.2 -MajorVer=2 -MinorVer=2 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OmniWeb - -[OmniWeb] -Parent=DefaultProperties -Browser=OmniWeb -Platform=MacOSX -Frames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -isMobileDevice=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (Macintosh; ?; *Mac OS X; *) AppleWebKit/* (*) OmniWeb/v4*] -Parent=OmniWeb -Version=4.5 -MajorVer=4 -MinorVer=5 -Platform=MacOSX - -[Mozilla/* (Macintosh; ?; *Mac OS X; *) AppleWebKit/* (*) OmniWeb/v5*] -Parent=OmniWeb -Version=5. -MajorVer=5 -MinorVer=0 -Platform=MacOSX - -[Mozilla/* (Macintosh; ?; *Mac OS X; *) AppleWebKit/* (*) OmniWeb/v6*] -Parent=OmniWeb -Version=6.0 -MajorVer=6 -MinorVer=0 -Platform=MacOSX - -[Mozilla/* (Macintosh; ?; PPC) OmniWeb/4*] -Parent=OmniWeb -Version=4.0 -MajorVer=4 -MinorVer=0 -Platform=MacPPC - -[Mozilla/* (Macintosh; ?; PPC) OmniWeb/5*] -Parent=OmniWeb -Version=5.0 -MajorVer=5 -MinorVer=0 -Platform=MacOSX - -[Mozilla/* (Macintosh; ?; PPC) OmniWeb/6*] -Parent=OmniWeb -Version=6.0 -MajorVer=6 -MinorVer=0 -Platform=MacPPC - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.34] -Parent=OmniWeb -Version=5.1 -MajorVer=5 -MinorVer=1 - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.34] -Parent=OmniWeb -Version=5.1 -MajorVer=5 -MinorVer=1 - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/420+ (KHTML, like Gecko, Safari/420) OmniWeb/v607] -Parent=OmniWeb -Version=5.5 -MajorVer=5 -MinorVer=5 - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/420+ (KHTML, like Gecko, Safari/420) OmniWeb/v607] -Parent=OmniWeb -Version=5.5 -MajorVer=5 -MinorVer=5 - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/522+ (KHTML, like Gecko, Safari/522) OmniWeb/v613] -Parent=OmniWeb -Version=5.6 -MajorVer=5 -MinorVer=6 - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/522+ (KHTML, like Gecko, Safari/522) OmniWeb/v613] -Parent=OmniWeb -Version=5.6 -MajorVer=5 -MinorVer=6 - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v496] -Parent=OmniWeb -Version=4.5 -MajorVer=4 -MinorVer=5 - -[Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.36 ] -Parent=OmniWeb -Version=5.0 -MajorVer=5 -MinorVer=0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Shiira - -[Shiira] -Parent=DefaultProperties -Browser=Shiira -Platform=MacOSX -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Shiira/0.9*] -Parent=Shiira -Version=0.9 -MajorVer=0 -MinorVer=9 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Shiira/1.0*] -Parent=Shiira -Version=1.0 -MajorVer=1 -MinorVer=0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Shiira/1.1*] -Parent=Shiira -Version=1.1 -MajorVer=1 -MinorVer=1 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Shiira/1.2*] -Parent=Shiira -Version=1.2 -MajorVer=1 -MinorVer=2 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Shiira/2.1*] -Parent=Shiira -Version=2.1 -MajorVer=2 -MinorVer=1 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Shiira/2.2*] -Parent=Shiira -Version=2.2 -MajorVer=2 -MinorVer=2 - -[Windows Maker] -Parent=DefaultProperties -Browser=WMaker -Platform=Linux -Frames=true -IFrames=true -Tables=true -Cookies=true -VBScript=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[WMaker*] -Parent=Windows Maker - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; K-Meleon 1.0 - -[K-Meleon 1.0] -Parent=DefaultProperties -Browser=K-Meleon -Version=1.0 -MajorVer=1 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* K-Meleon/1.0*] -Parent=K-Meleon 1.0 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* K-Meleon/1.0*] -Parent=K-Meleon 1.0 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* K-Meleon?1.0*] -Parent=K-Meleon 1.0 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* K-Meleon/1.0*] -Parent=K-Meleon 1.0 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* K-Meleon/1.0*] -Parent=K-Meleon 1.0 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* K-Meleon/1.0*] -Parent=K-Meleon 1.0 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WinNT -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; K-Meleon 1.1 - -[K-Meleon 1.1] -Parent=DefaultProperties -Browser=K-Meleon -Version=1.1 -MajorVer=1 -MinorVer=1 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* K-Meleon/1.1*] -Parent=K-Meleon 1.1 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* K-Meleon/1.1*] -Parent=K-Meleon 1.1 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* K-Meleon?1.1*] -Parent=K-Meleon 1.1 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* K-Meleon/1.1*] -Parent=K-Meleon 1.1 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* K-Meleon/1.1*] -Parent=K-Meleon 1.1 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* K-Meleon/1.1*] -Parent=K-Meleon 1.1 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WinNT -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; K-Meleon 1.5 - -[K-Meleon 1.5] -Parent=DefaultProperties -Browser=K-Meleon -Version=1.5 -MajorVer=1 -MinorVer=5 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* K-Meleon/1.5*] -Parent=K-Meleon 1.5 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* K-Meleon/1.5*] -Parent=K-Meleon 1.5 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* K-Meleon?1.5*] -Parent=K-Meleon 1.5 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* K-Meleon/1.5*] -Parent=K-Meleon 1.5 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* K-Meleon/1.5*] -Parent=K-Meleon 1.5 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.*) Gecko/* K-Meleon/1.5*] -Parent=K-Meleon 1.5 -Platform=WinVista - -[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.*) Gecko/* K-Meleon/1.5*] -Parent=K-Meleon 1.5 -Platform=Win7 - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* K-Meleon/1.5*] -Parent=K-Meleon 1.5 -Version=1.0 -MajorVer=1 -MinorVer=0 -Platform=WinNT -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 3.0 - -[Konqueror 3.0] -Parent=DefaultProperties -Browser=Konqueror -Platform=Linux -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[*Konqueror/3.0*] -Parent=Konqueror 3.0 -Version=3.0 -MajorVer=3 -MinorVer=0 -IFrames=false - -[*Konqueror/3.0*FreeBSD*] -Parent=Konqueror 3.0 -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=FreeBSD -IFrames=false - -[*Konqueror/3.0*Linux*] -Parent=Konqueror 3.0 -Version=3.0 -MajorVer=3 -MinorVer=0 -Platform=Linux -IFrames=false - -[*Konqueror/3.1*] -Parent=Konqueror 3.0 -Version=3.1 -MajorVer=3 -MinorVer=1 - -[*Konqueror/3.1*FreeBSD*] -Parent=Konqueror 3.0 -Version=3.1 -MajorVer=3 -MinorVer=1 -Platform=FreeBSD - -[*Konqueror/3.1*Linux*] -Parent=Konqueror 3.0 -Version=3.1 -MajorVer=3 -MinorVer=1 - -[*Konqueror/3.2*] -Parent=Konqueror 3.0 -Version=3.2 -MajorVer=3 -MinorVer=2 - -[*Konqueror/3.2*FreeBSD*] -Parent=Konqueror 3.0 -Version=3.2 -MajorVer=3 -MinorVer=2 -Platform=FreeBSD - -[*Konqueror/3.2*Linux*] -Parent=Konqueror 3.0 -Version=3.2 -MajorVer=3 -MinorVer=2 -Platform=Linux - -[*Konqueror/3.3*] -Parent=Konqueror 3.0 -Version=3.3 -MajorVer=3 -MinorVer=3 - -[*Konqueror/3.3*FreeBSD*] -Parent=Konqueror 3.0 -Version=3.3 -MajorVer=3 -MinorVer=3 -Platform=FreeBSD - -[*Konqueror/3.3*Linux*] -Parent=Konqueror 3.0 -Version=3.3 -MajorVer=3 -MinorVer=3 -Platform=Linux - -[*Konqueror/3.3*OpenBSD*] -Parent=Konqueror 3.0 -Version=3.3 -MajorVer=3 -MinorVer=3 -Platform=OpenBSD - -[*Konqueror/3.4*] -Parent=Konqueror 3.0 -Version=3.4 -MajorVer=3 -MinorVer=4 - -[*Konqueror/3.4*FreeBSD*] -Parent=Konqueror 3.0 -Version=3.4 -MajorVer=3 -MinorVer=4 -Platform=FreeBSD - -[*Konqueror/3.4*Linux*] -Parent=Konqueror 3.0 -Version=3.4 -MajorVer=3 -MinorVer=4 -Platform=Linux - -[*Konqueror/3.4*OpenBSD*] -Parent=Konqueror 3.0 -Version=3.4 -MajorVer=3 -MinorVer=4 -Platform=OpenBSD - -[*Konqueror/3.5*] -Parent=Konqueror 3.0 -Version=3.5 -MajorVer=3 -MinorVer=5 - -[*Konqueror/3.5*FreeBSD*] -Parent=Konqueror 3.0 -Version=3.5 -MajorVer=3 -MinorVer=5 -Platform=FreeBSD - -[*Konqueror/3.5*Linux*] -Parent=Konqueror 3.0 -Version=3.5 -MajorVer=3 -MinorVer=5 -Platform=Linux - -[*Konqueror/3.5*OpenBSD*] -Parent=Konqueror 3.0 -Version=3.5 -MajorVer=3 -MinorVer=5 -Platform=OpenBSD - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.0 - -[Konqueror 4.0] -Parent=DefaultProperties -Browser=Konqueror -Version=4.0 -MajorVer=4 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (compatible; Konqueror/4.0*; Debian) KHTML/4.* (like Gecko)] -Parent=Konqueror 4.0 -Platform=Debian - -[Mozilla/5.0 (compatible; Konqueror/4.0.*; *Linux) KHTML/4.* (like Gecko)] -Parent=Konqueror 4.0 -Platform=Linux - -[Mozilla/5.0 (compatible; Konqueror/4.0.*; FreeBSD) KHTML/4.* (like Gecko)] -Parent=Konqueror 4.0 -Platform=FreeBSD - -[Mozilla/5.0 (compatible; Konqueror/4.0.*; NetBSD) KHTML/4.* (like Gecko)] -Parent=Konqueror 4.0 -Platform=NetBSD - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.1 - -[Konqueror 4.1] -Parent=DefaultProperties -Browser=Konqueror -Version=4.1 -MajorVer=4 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (compatible; Konqueror/4.1*; *Linux*) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.1 -Platform=Linux - -[Mozilla/5.0 (compatible; Konqueror/4.1*; Debian) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.1 -Platform=Debian - -[Mozilla/5.0 (compatible; Konqueror/4.1*; FreeBSD) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.1 -Platform=FreeBSD - -[Mozilla/5.0 (compatible; Konqueror/4.1*; NetBSD) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.1 -Platform=NetBSD - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Konqueror 4.2 - -[Konqueror 4.2] -Parent=DefaultProperties -Browser=Konqueror -Version=4.2 -MajorVer=4 -MinorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (compatible; Konqueror/4.2*; *Linux*) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.2 -Platform=Linux - -[Mozilla/5.0 (compatible; Konqueror/4.2*; Debian) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.2 -Platform=Debian - -[Mozilla/5.0 (compatible; Konqueror/4.2*; FreeBSD) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.2 -Platform=FreeBSD - -[Mozilla/5.0 (compatible; Konqueror/4.2*; NetBSD) KHTML/4.* (like Gecko)*] -Parent=Konqueror 4.2 -Platform=NetBSD - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari - -[Safari] -Parent=DefaultProperties -Browser=Safari -Platform=MacOSX -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.3 -w3cdomversion=1.0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/100*] -Parent=Safari -Version=1.1 -MajorVer=1 -MinorVer=1 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/125*] -Parent=Safari -Version=1.2 -MajorVer=1 -MinorVer=2 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/312*] -Parent=Safari -Version=1.3 -MajorVer=1 -MinorVer=3 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/412*] -Parent=Safari -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/416*] -Parent=Safari -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/417*] -Parent=Safari -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/418*] -Parent=Safari -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/419*] -Parent=Safari -Version=2.0 -MajorVer=2 -MinorVer=0 - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/52*] -Parent=Safari -Beta=true - -[Mozilla/5.0 (Macintosh; *Mac OS X*) AppleWebKit/* (*) Safari/85*] -Parent=Safari -Version=1.0 -MajorVer=1 -MinorVer=0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 3.0 - -[Safari 3.0] -Parent=DefaultProperties -Browser=Safari -Version=3.0 -MajorVer=3 -Platform=MacOSX -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*) AppleWebKit/* (*) Version/3.0* Safari/*] -Parent=Safari 3.0 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) AppleWebKit/* (*) Version/3.0* Safari/*] -Parent=Safari 3.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) AppleWebKit/* (*) Version/3.0* Safari/*] -Parent=Safari 3.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) AppleWebKit/* (*) Version/3.0* Safari/*] -Parent=Safari 3.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) AppleWebKit/* (*) Version/3.0* Safari/*] -Parent=Safari 3.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 3.1 - -[Safari 3.1] -Parent=DefaultProperties -Browser=Safari -Version=3.1 -MajorVer=3 -MinorVer=1 -Platform=MacOSX -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*) AppleWebKit/* (*) Version/3.1* Safari/*] -Parent=Safari 3.1 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) AppleWebKit/* (*) Version/3.1* Safari/*] -Parent=Safari 3.1 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) AppleWebKit/* (*) Version/3.1* Safari/*] -Parent=Safari 3.1 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) AppleWebKit/* (*) Version/3.1* Safari/*] -Parent=Safari 3.1 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) AppleWebKit/* (*) Version/3.1* Safari/*] -Parent=Safari 3.1 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 3.2 - -[Safari 3.2] -Parent=DefaultProperties -Browser=Safari -Version=3.2 -MajorVer=3 -MinorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*) AppleWebKit/* (*) Version/3.2* Safari/*] -Parent=Safari 3.2 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) AppleWebKit/* (*) Version/3.2* Safari/*] -Parent=Safari 3.2 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) AppleWebKit/* (*) Version/3.2* Safari/*] -Parent=Safari 3.2 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) AppleWebKit/* (*) Version/3.2* Safari/*] -Parent=Safari 3.2 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) AppleWebKit/* (*) Version/3.2* Safari/*] -Parent=Safari 3.2 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Safari 4.0 - -[Safari 4.0] -Parent=DefaultProperties -Browser=Safari -Version=4.0 -MajorVer=4 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *) AppleWebKit/* (KHTML, like Gecko) Version/4.0* Safari/*] -Parent=Safari 4.0 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *) AppleWebKit/* (KHTML, like Gecko) Version/4 Public Beta Safari/*] -Parent=Safari 4.0 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) AppleWebKit/* (*) Version/4 Public Beta Safari/*] -Parent=Safari 4.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) AppleWebKit/* (*) Version/4.0* Safari/*] -Parent=Safari 4.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) AppleWebKit/* (*) Version/4 Public Beta Safari/*] -Parent=Safari 4.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) AppleWebKit/* (*) Version/4.0* Safari/*] -Parent=Safari 4.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) AppleWebKit/* (*) Version/4 Public Beta Safari/*] -Parent=Safari 4.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) AppleWebKit/* (*) Version/4.0* Safari/*] -Parent=Safari 4.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) AppleWebKit/* (*) Version/4 Public Beta Safari/*] -Parent=Safari 4.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) AppleWebKit/* (*) Version/4.0* Safari/*] -Parent=Safari 4.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; Windows NT 7.0; *) AppleWebKit/* (*) Version/4 Public Beta Safari/*] -Parent=Safari 4.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; Windows NT 7.0; *) AppleWebKit/* (*) Version/4.0* Safari/*] -Parent=Safari 4.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 10.0 - -[Opera 10.0] -Parent=DefaultProperties -Browser=Opera -Version=10.0 -MajorVer=10 -Alpha=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC) Opera 10.0*] -Parent=Opera 10.0 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.1*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win7 - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 10.0*] -Parent=Opera 10.0 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 10.0*] -Parent=Opera 10.0 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 10.0*] -Parent=Opera 10.0 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win2003 -Win32=true - -[Mozilla/* (Windows NT 6.0;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=WinVista - -[Mozilla/* (Windows NT 6.1;*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Win7 - -[Mozilla/* (X11; Linux*) Opera 10.0*] -Parent=Opera 10.0 -Platform=Linux - -[Opera/10.0* (Linux*)*] -Parent=Opera 10.0 -Platform=Linux - -[Opera/10.0* (Macintosh; *Mac OS X;*)*] -Parent=Opera 10.0 -Platform=MacOSX - -[Opera/10.0* (Windows 95*)*] -Parent=Opera 10.0 -Platform=Win95 -Win32=true - -[Opera/10.0* (Windows 98*)*] -Parent=Opera 10.0 -Platform=Win98 -Win32=true - -[Opera/10.0* (Windows CE*)*] -Parent=Opera 10.0 -Platform=WinCE -Win32=true - -[Opera/10.0* (Windows ME*)*] -Parent=Opera 10.0 -Platform=WinME -Win32=true - -[Opera/10.0* (Windows NT 4.0*)*] -Parent=Opera 10.0 -Platform=WinNT -Win32=true - -[Opera/10.0* (Windows NT 5.0*)*] -Parent=Opera 10.0 -Platform=Win2000 -Win32=true - -[Opera/10.0* (Windows NT 5.1*)*] -Parent=Opera 10.0 -Platform=WinXP -Win32=true - -[Opera/10.0* (Windows NT 5.2*)*] -Parent=Opera 10.0 -Platform=Win2003 -Win32=true - -[Opera/10.0* (Windows NT 6.0*)*] -Parent=Opera 10.0 -Platform=WinVista -Win32=true - -[Opera/10.0* (Windows NT 6.1*)*] -Parent=Opera 10.0 -Platform=Win7 - -[Opera/10.0* (Windows XP*)*] -Parent=Opera 10.0 -Platform=WinXP -Win32=true - -[Opera/10.0* (X11; FreeBSD*)*] -Parent=Opera 10.0 -Platform=FreeBSD - -[Opera/10.0* (X11; Linux*)*] -Parent=Opera 10.0 -Platform=Linux - -[Opera/10.0* (X11; SunOS*)*] -Parent=Opera 10.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 7.0 - -[Opera 7.0] -Parent=DefaultProperties -Browser=Opera -Version=7.0 -MajorVer=7 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/3.0 (Windows 2000; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/3.0 (Windows 95; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win95 -Win32=true - -[Mozilla/3.0 (Windows 98; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win98 -Win32=true - -[Mozilla/3.0 (Windows ME; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinME -Win32=true - -[Mozilla/3.0 (Windows NT 4.0; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinNT -Win32=true - -[Mozilla/3.0 (Windows XP; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 2000) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 95) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win95 -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win98 -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinME -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 4.0) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinNT -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows XP) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Mozilla/4.78 (Windows 2000; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/4.78 (Windows 95; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win95 -Win32=true - -[Mozilla/4.78 (Windows 98; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win98 -Win32=true - -[Mozilla/4.78 (Windows ME; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinME -Win32=true - -[Mozilla/4.78 (Windows NT 4.0; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinNT -Win32=true - -[Mozilla/4.78 (Windows NT 5.1; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Mozilla/4.78 (Windows Windows NT 5.0; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/4.78 (Windows XP; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows 2000; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows 95; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows 98; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows ME; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows NT 4.0; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows NT 5.1; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows XP; ?) Opera 7.0*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Opera/7.0* (Windows 2000; ?)*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Opera/7.0* (Windows 95; ?)*] -Parent=Opera 7.0 -Platform=Win95 -Win32=true - -[Opera/7.0* (Windows 98; ?)*] -Parent=Opera 7.0 -Platform=Win98 -Win32=true - -[Opera/7.0* (Windows ME; ?)*] -Parent=Opera 7.0 -Platform=WinME -Win32=true - -[Opera/7.0* (Windows NT 4.0; ?)*] -Parent=Opera 7.0 -Platform=WinNT -Win32=true - -[Opera/7.0* (Windows NT 5.0; ?)*] -Parent=Opera 7.0 -Platform=Win2000 -Win32=true - -[Opera/7.0* (Windows NT 5.1; ?)*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -[Opera/7.0* (Windows XP; ?)*] -Parent=Opera 7.0 -Platform=WinXP -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 7.1 - -[Opera 7.1] -Parent=DefaultProperties -Browser=Opera -Version=7.1 -MajorVer=7 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 2000) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 95) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win95 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 98) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win98 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows ME) Opera 7.1*] -Parent=Opera 7.1 -Platform=WinME -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 4.0) Opera 7.1*] -Parent=Opera 7.1 -Platform=WinNT -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.0) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.1) Opera 7.1*] -Parent=Opera 7.1 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows XP) Opera 7.1*] -Parent=Opera 7.1 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows 2000; ?) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows 95; ?) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win95 -Win32=true - -[Mozilla/?.* (Windows 98; ?) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win98 -Win32=true - -[Mozilla/?.* (Windows ME; ?) Opera 7.1*] -Parent=Opera 7.1 -Platform=WinME -Win32=true - -[Mozilla/?.* (Windows NT 4.0; U) Opera 7.1*] -Parent=Opera 7.1 -Platform=WinNT -Win32=true - -[Mozilla/?.* (Windows NT 5.0; U) Opera 7.1*] -Parent=Opera 7.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows NT 5.1; ?) Opera 7.1*] -Parent=Opera 7.1 -Platform=WinXP -Win32=true - -[Opera/7.1* (Linux*; ?)*] -Parent=Opera 7.1 -Platform=Linux - -[Opera/7.1* (Windows 95; ?)*] -Parent=Opera 7.1 -Platform=Win95 -Win32=true - -[Opera/7.1* (Windows 98; ?)*] -Parent=Opera 7.1 -Platform=Win98 -Win32=true - -[Opera/7.1* (Windows ME; ?)*] -Parent=Opera 7.1 -Platform=WinME -Win32=true - -[Opera/7.1* (Windows NT 4.0; ?)*] -Parent=Opera 7.1 -Platform=WinNT -Win32=true - -[Opera/7.1* (Windows NT 5.0; ?)*] -Parent=Opera 7.1 -Platform=Win2000 -Win32=true - -[Opera/7.1* (Windows NT 5.1; ?)*] -Parent=Opera 7.1 -Platform=WinXP -Win32=true - -[Opera/7.1* (Windows XP; ?)*] -Parent=Opera 7.1 -Platform=WinXP -Win32=true - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 7.2 - -[Opera 7.2] -Parent=DefaultProperties -Browser=Opera -Version=7.2 -MajorVer=7 -MinorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (compatible; MSIE ?.*; Linux*) Opera 7.2*] -Parent=Opera 7.2 -Platform=Linux - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 2000) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 95) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win95 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 98) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win98 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows ME) Opera 7.2*] -Parent=Opera 7.2 -Platform=WinME -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 4.0) Opera 7.2*] -Parent=Opera 7.2 -Platform=WinNT -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.0) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.1) Opera 7.2*] -Parent=Opera 7.2 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.2) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows XP) Opera 7.2*] -Parent=Opera 7.2 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows 2000; ?) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows 95; ?) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win95 -Win32=true - -[Mozilla/?.* (Windows 98; ?) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win98 -Win32=true - -[Mozilla/?.* (Windows ME; ?) Opera 7.2*] -Parent=Opera 7.2 -Platform=WinME -Win32=true - -[Mozilla/?.* (Windows NT 4.0; U) Opera 7.2*] -Parent=Opera 7.2 -Platform=WinNT -Win32=true - -[Mozilla/?.* (Windows NT 5.0; U) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows NT 5.1; ?) Opera 7.2*] -Parent=Opera 7.2 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows NT 5.2; ?) Opera 7.2*] -Parent=Opera 7.2 -Platform=Win2003 -Win32=true - -[Opera/7.2* (Linux*; ?)*] -Parent=Opera 7.2 -Platform=Linux - -[Opera/7.2* (Windows 95; ?)*] -Parent=Opera 7.2 -Platform=Win95 -Win32=true - -[Opera/7.2* (Windows 98; ?)*] -Parent=Opera 7.2 -Platform=Win98 -Win32=true - -[Opera/7.2* (Windows ME; ?)*] -Parent=Opera 7.2 -Platform=WinME -Win32=true - -[Opera/7.2* (Windows NT 4.0; ?)*] -Parent=Opera 7.2 -Platform=WinNT -Win32=true - -[Opera/7.2* (Windows NT 5.0; ?)*] -Parent=Opera 7.2 -Platform=Win2000 -Win32=true - -[Opera/7.2* (Windows NT 5.1; ?)*] -Parent=Opera 7.2 -Platform=WinXP -Win32=true - -[Opera/7.2* (Windows NT 5.2; ?)*] -Parent=Opera 7.2 -Platform=Win2003 -Win32=true - -[Opera/7.2* (Windows XP; ?)*] -Parent=Opera 7.2 -Platform=WinXP -Win32=true - -[Opera/7.2* (X11; FreeBSD*; ?)*] -Parent=Opera 7.2 -Platform=FreeBSD - -[Opera/7.2* (X11; Linux*; ?)*] -Parent=Opera 7.2 -Platform=Linux - -[Opera/7.2* (X11; SunOS*)*] -Parent=Opera 7.2 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 7.5 - -[Opera 7.5] -Parent=DefaultProperties -Browser=Opera -Version=7.5 -MajorVer=7 -MinorVer=5 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (compatible; MSIE ?.*; Linux*) Opera 7.5*] -Parent=Opera 7.5 -Platform=Linux - -[Mozilla/?.* (compatible; MSIE ?.*; Mac_PowerPC) Opera 7.5*] -Parent=Opera 7.5 -Platform=MacPPC - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 2000) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 95) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win95 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 98) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win98 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows ME) Opera 7.5*] -Parent=Opera 7.5 -Platform=WinME -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 4.0) Opera 7.5*] -Parent=Opera 7.5 -Platform=WinNT -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.0) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.1) Opera 7.5*] -Parent=Opera 7.5 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.2) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows XP) Opera 7.5*] -Parent=Opera 7.5 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; X11; Linux*) Opera 7.5*] -Parent=Opera 7.5 -Platform=Linux - -[Mozilla/?.* (Macintosh; *Mac OS X; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=MacOSX - -[Mozilla/?.* (Windows 2000; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows 95; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win95 -Win32=true - -[Mozilla/?.* (Windows 98; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win98 -Win32=true - -[Mozilla/?.* (Windows ME; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=WinME -Win32=true - -[Mozilla/?.* (Windows NT 4.0; U) Opera 7.5*] -Parent=Opera 7.5 -Platform=WinNT -Win32=true - -[Mozilla/?.* (Windows NT 5.0; U) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows NT 5.1; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows NT 5.2; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (X11; Linux*; ?) Opera 7.5*] -Parent=Opera 7.5 -Platform=Linux - -[Opera/7.5* (Linux*; ?)*] -Parent=Opera 7.5 -Platform=Linux - -[Opera/7.5* (Macintosh; *Mac OS X; ?)*] -Parent=Opera 7.5 -Platform=MacOSX - -[Opera/7.5* (Windows 95; ?)*] -Parent=Opera 7.5 -Platform=Win95 -Win32=true - -[Opera/7.5* (Windows 98; ?)*] -Parent=Opera 7.5 -Platform=Win98 -Win32=true - -[Opera/7.5* (Windows ME; ?)*] -Parent=Opera 7.5 -Platform=WinME -Win32=true - -[Opera/7.5* (Windows NT 4.0; ?)*] -Parent=Opera 7.5 -Platform=WinNT -Win32=true - -[Opera/7.5* (Windows NT 5.0; ?)*] -Parent=Opera 7.5 -Platform=Win2000 -Win32=true - -[Opera/7.5* (Windows NT 5.1; ?)*] -Parent=Opera 7.5 -Platform=WinXP -Win32=true - -[Opera/7.5* (Windows NT 5.2; ?)*] -Parent=Opera 7.5 -Platform=Win2003 -Win32=true - -[Opera/7.5* (Windows XP; ?)*] -Parent=Opera 7.5 -Platform=WinXP -Win32=true - -[Opera/7.5* (X11; FreeBSD*; ?)*] -Parent=Opera 7.5 -Platform=FreeBSD - -[Opera/7.5* (X11; Linux*; ?)*] -Parent=Opera 7.5 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 7.6 - -[Opera 7.6] -Parent=DefaultProperties -Browser=Opera -Version=7.6 -MajorVer=7 -MinorVer=6 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (compatible; MSIE ?.*; Linux*) Opera 7.6*] -Parent=Opera 7.6 -Platform=Linux - -[Mozilla/?.* (compatible; MSIE ?.*; Mac_PowerPC) Opera 7.6*] -Parent=Opera 7.6 -Platform=MacPPC - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 2000) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 95) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win95 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 98) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win98 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows ME) Opera 7.6*] -Parent=Opera 7.6 -Platform=WinME -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 4.0) Opera 7.6*] -Parent=Opera 7.6 -Platform=WinNT -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.0) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.1) Opera 7.6*] -Parent=Opera 7.6 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.2) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows XP) Opera 7.6*] -Parent=Opera 7.6 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; X11; Linux*) Opera 7.6*] -Parent=Opera 7.6 -Platform=Linux - -[Mozilla/?.* (Macintosh; *Mac OS X; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=MacOSX - -[Mozilla/?.* (Windows 2000; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows 95; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win95 -Win32=true - -[Mozilla/?.* (Windows 98; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win98 -Win32=true - -[Mozilla/?.* (Windows ME; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=WinME -Win32=true - -[Mozilla/?.* (Windows NT 4.0; U) Opera 7.6*] -Parent=Opera 7.6 -Platform=WinNT -Win32=true - -[Mozilla/?.* (Windows NT 5.0; U) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows NT 5.1; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows NT 5.2; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (X11; Linux*; ?) Opera 7.6*] -Parent=Opera 7.6 -Platform=Linux - -[Opera/7.6* (Linux*)*] -Parent=Opera 7.6 -Platform=Linux - -[Opera/7.6* (Macintosh; *Mac OS X; ?)*] -Parent=Opera 7.6 -Platform=MacOSX - -[Opera/7.6* (Windows 95*)*] -Parent=Opera 7.6 -Platform=Win95 -Win32=true - -[Opera/7.6* (Windows 98*)*] -Parent=Opera 7.6 -Platform=Win98 -Win32=true - -[Opera/7.6* (Windows ME*)*] -Parent=Opera 7.6 -Platform=WinME -Win32=true - -[Opera/7.6* (Windows NT 4.0*)*] -Parent=Opera 7.6 -Platform=WinNT -Win32=true - -[Opera/7.6* (Windows NT 5.0*)*] -Parent=Opera 7.6 -Platform=Win2000 -Win32=true - -[Opera/7.6* (Windows NT 5.1*)*] -Parent=Opera 7.6 -Platform=WinXP -Win32=true - -[Opera/7.6* (Windows NT 5.2*)*] -Parent=Opera 7.6 -Platform=Win2003 -Win32=true - -[Opera/7.6* (Windows XP*)*] -Parent=Opera 7.6 -Platform=WinXP -Win32=true - -[Opera/7.6* (X11; FreeBSD*)*] -Parent=Opera 7.6 -Platform=FreeBSD - -[Opera/7.6* (X11; Linux*)*] -Parent=Opera 7.6 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 8.0 - -[Opera 8.0] -Parent=DefaultProperties -Browser=Opera -Version=8.0 -MajorVer=8 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (compatible; MSIE ?.*; Linux*) Opera 8.0*] -Parent=Opera 8.0 -Platform=Linux - -[Mozilla/?.* (compatible; MSIE ?.*; Mac_PowerPC Mac OS X; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=MacOSX - -[Mozilla/?.* (compatible; MSIE ?.*; Mac_PowerPC) Opera 8.0*] -Parent=Opera 8.0 -Platform=MacPPC - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 2000*) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 95*) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win95 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 98*) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win98 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows CE) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinCE -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows ME*) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinME -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 4.0*) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinNT -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.0*) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.1*) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.2*) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows XP*) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; X11; FreeBSD*) Opera 8.0*] -Parent=Opera 8.0 -Platform=FreeBSD - -[Mozilla/?.* (compatible; MSIE ?.*; X11; Linux*) Opera 8.0*] -Parent=Opera 8.0 -Platform=Linux - -[Mozilla/?.* (Macintosh; *Mac OS X; ?) Opera 8.0*] -Parent=Opera 8.0 -Platform=MacOSX - -[Mozilla/?.* (Windows 2000; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows 95; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win95 -Win32=true - -[Mozilla/?.* (Windows 98; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win98 -Win32=true - -[Mozilla/?.* (Windows ME; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinME -Win32=true - -[Mozilla/?.* (Windows NT 4.0; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinNT -Win32=true - -[Mozilla/?.* (Windows NT 5.0; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows NT 5.1; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows NT 5.2; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (X11; Linux*; *) Opera 8.0*] -Parent=Opera 8.0 -Platform=Linux - -[Opera/8.0* (Linux*)*] -Parent=Opera 8.0 -Platform=Linux - -[Opera/8.0* (Macintosh; *Mac OS X; *)*] -Parent=Opera 8.0 -Platform=MacOSX - -[Opera/8.0* (Windows 95*)*] -Parent=Opera 8.0 -Platform=Win95 -Win32=true - -[Opera/8.0* (Windows 98*)*] -Parent=Opera 8.0 -Platform=Win98 -Win32=true - -[Opera/8.0* (Windows CE*)*] -Parent=Opera 8.0 -Platform=WinCE -Win32=true - -[Opera/8.0* (Windows ME*)*] -Parent=Opera 8.0 -Platform=WinME -Win32=true - -[Opera/8.0* (Windows NT 4.0*)*] -Parent=Opera 8.0 -Platform=WinNT -Win32=true - -[Opera/8.0* (Windows NT 5.0*)*] -Parent=Opera 8.0 -Platform=Win2000 -Win32=true - -[Opera/8.0* (Windows NT 5.1*)*] -Parent=Opera 8.0 -Platform=WinXP -Win32=true - -[Opera/8.0* (Windows NT 5.2*)*] -Parent=Opera 8.0 -Platform=Win2003 -Win32=true - -[Opera/8.0* (Windows XP*)*] -Parent=Opera 8.0 -Platform=WinXP -Win32=true - -[Opera/8.0* (X11; FreeBSD*)*] -Parent=Opera 8.0 -Platform=FreeBSD - -[Opera/8.0* (X11; Linux*)*] -Parent=Opera 8.0 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 8.1 - -[Opera 8.1] -Parent=DefaultProperties -Browser=Opera -Version=8.1 -MajorVer=8 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (compatible; MSIE ?.*; Linux*) Opera 8.1*] -Parent=Opera 8.1 -Platform=Linux - -[Mozilla/?.* (compatible; MSIE ?.*; Mac_PowerPC) Opera 8.1*] -Parent=Opera 8.1 -Platform=MacPPC - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 2000*) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 95*) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win95 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 98*) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win98 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows CE) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinCE -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows ME*) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinME -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 4.0*) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinNT -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.0*) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.1*) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.2*) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows XP*) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; X11; FreeBSD*) Opera 8.1*] -Parent=Opera 8.1 -Platform=FreeBSD - -[Mozilla/?.* (compatible; MSIE ?.*; X11; Linux*) Opera 8.1*] -Parent=Opera 8.1 -Platform=Linux - -[Mozilla/?.* (Macintosh; *Mac OS X; ?) Opera 8.1*] -Parent=Opera 8.1 -Platform=MacOSX - -[Mozilla/?.* (Windows 2000; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows 95; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win95 -Win32=true - -[Mozilla/?.* (Windows 98; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win98 -Win32=true - -[Mozilla/?.* (Windows ME; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinME -Win32=true - -[Mozilla/?.* (Windows NT 4.0; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinNT -Win32=true - -[Mozilla/?.* (Windows NT 5.0; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows NT 5.1; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows NT 5.2; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (X11; Linux*; *) Opera 8.1*] -Parent=Opera 8.1 -Platform=Linux - -[Opera/8.1* (Linux*)*] -Parent=Opera 8.1 -Platform=Linux - -[Opera/8.1* (Macintosh; *Mac OS X; *)*] -Parent=Opera 8.1 -Platform=MacOSX - -[Opera/8.1* (Windows 95*)*] -Parent=Opera 8.1 -Platform=Win95 -Win32=true - -[Opera/8.1* (Windows 98*)*] -Parent=Opera 8.1 -Platform=Win98 -Win32=true - -[Opera/8.1* (Windows CE*)*] -Parent=Opera 8.1 -Platform=WinCE -Win32=true - -[Opera/8.1* (Windows ME*)*] -Parent=Opera 8.1 -Platform=WinME -Win32=true - -[Opera/8.1* (Windows NT 4.0*)*] -Parent=Opera 8.1 -Platform=WinNT -Win32=true - -[Opera/8.1* (Windows NT 5.0*)*] -Parent=Opera 8.1 -Platform=Win2000 -Win32=true - -[Opera/8.1* (Windows NT 5.1*)*] -Parent=Opera 8.1 -Platform=WinXP -Win32=true - -[Opera/8.1* (Windows NT 5.2*)*] -Parent=Opera 8.1 -Platform=Win2003 -Win32=true - -[Opera/8.1* (Windows XP*)*] -Parent=Opera 8.1 -Platform=WinXP -Win32=true - -[Opera/8.1* (X11; FreeBSD*)*] -Parent=Opera 8.1 -Platform=FreeBSD - -[Opera/8.1* (X11; Linux*)*] -Parent=Opera 8.1 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 8.5 - -[Opera 8.5] -Parent=DefaultProperties -Browser=Opera -Version=8.5 -MajorVer=8 -MinorVer=5 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.3 -w3cdomversion=1.0 - -[Mozilla/?.* (compatible; MSIE ?.*; Linux*) Opera 8.5*] -Parent=Opera 8.5 -Platform=Linux - -[Mozilla/?.* (compatible; MSIE ?.*; Mac_PowerPC Mac OS X;*) Opera 8.5*] -Parent=Opera 8.5 -Platform=MacOSX - -[Mozilla/?.* (compatible; MSIE ?.*; Mac_PowerPC) Opera 8.5*] -Parent=Opera 8.5 -Platform=MacPPC - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 2000*) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 95*) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win95 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows 98*) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win98 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows CE) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinCE -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows ME*) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinME -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 4.0*) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinNT -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.0*) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.1*) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows NT 5.2*) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; Windows XP*) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinXP -Win32=true - -[Mozilla/?.* (compatible; MSIE ?.*; X11; FreeBSD*) Opera 8.5*] -Parent=Opera 8.5 -Platform=FreeBSD - -[Mozilla/?.* (compatible; MSIE ?.*; X11; Linux*) Opera 8.5*] -Parent=Opera 8.5 -Platform=Linux - -[Mozilla/?.* (Macintosh; *Mac OS X; ?) Opera 8.5*] -Parent=Opera 8.5 -Platform=MacOSX - -[Mozilla/?.* (Macintosh; PPC Mac OS X;*) Opera 8.5*] -Parent=Opera 8.5 -Platform=MacOSX - -[Mozilla/?.* (Windows 2000; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows 95; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win95 -Win32=true - -[Mozilla/?.* (Windows 98; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win98 -Win32=true - -[Mozilla/?.* (Windows ME; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinME -Win32=true - -[Mozilla/?.* (Windows NT 4.0; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinNT -Win32=true - -[Mozilla/?.* (Windows NT 5.0; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win2000 -Win32=true - -[Mozilla/?.* (Windows NT 5.1; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=WinXP -Win32=true - -[Mozilla/?.* (Windows NT 5.2; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=Win2003 -Win32=true - -[Mozilla/?.* (X11; Linux*; *) Opera 8.5*] -Parent=Opera 8.5 -Platform=Linux - -[Opera/8.5* (Linux*)*] -Parent=Opera 8.5 -Platform=Linux - -[Opera/8.5* (Macintosh; *Mac OS X; *)*] -Parent=Opera 8.5 -Platform=MacOSX - -[Opera/8.5* (Windows 95*)*] -Parent=Opera 8.5 -Platform=Win95 -Win32=true - -[Opera/8.5* (Windows 98*)*] -Parent=Opera 8.5 -Platform=Win98 -Win32=true - -[Opera/8.5* (Windows CE*)*] -Parent=Opera 8.5 -Platform=WinCE -Win32=true - -[Opera/8.5* (Windows ME*)*] -Parent=Opera 8.5 -Platform=WinME -Win32=true - -[Opera/8.5* (Windows NT 4.0*)*] -Parent=Opera 8.5 -Platform=WinNT -Win32=true - -[Opera/8.5* (Windows NT 5.0*)*] -Parent=Opera 8.5 -Platform=Win2000 -Win32=true - -[Opera/8.5* (Windows NT 5.1*)*] -Parent=Opera 8.5 -Platform=WinXP -Win32=true - -[Opera/8.5* (Windows NT 5.2*)*] -Parent=Opera 8.5 -Platform=Win2003 -Win32=true - -[Opera/8.5* (Windows XP*)*] -Parent=Opera 8.5 -Platform=WinXP -Win32=true - -[Opera/8.5* (X11; FreeBSD*)*] -Parent=Opera 8.5 -Platform=FreeBSD - -[Opera/8.5* (X11; Linux*)*] -Parent=Opera 8.5 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.0 - -[Opera 9.0] -Parent=DefaultProperties -Browser=Opera -Version=9.0 -MajorVer=9 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.5 -w3cdomversion=1.0 - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC) Opera 9.0*] -Parent=Opera 9.0 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 9.0*] -Parent=Opera 9.0 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 9.0*] -Parent=Opera 9.0 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 9.0*] -Parent=Opera 9.0 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Win2003 -Win32=true - -[Mozilla/* (X11; Linux*) Opera 9.0*] -Parent=Opera 9.0 -Platform=Linux - -[Opera/9.0* (Linux*)*] -Parent=Opera 9.0 -Platform=Linux - -[Opera/9.0* (Macintosh; *Mac OS X;*)*] -Parent=Opera 9.0 -Platform=MacOSX - -[Opera/9.0* (Windows 95*)*] -Parent=Opera 9.0 -Platform=Win95 -Win32=true - -[Opera/9.0* (Windows 98*)*] -Parent=Opera 9.0 -Platform=Win98 -Win32=true - -[Opera/9.0* (Windows CE*)*] -Parent=Opera 9.0 -Platform=WinCE -Win32=true - -[Opera/9.0* (Windows ME*)*] -Parent=Opera 9.0 -Platform=WinME -Win32=true - -[Opera/9.0* (Windows NT 4.0*)*] -Parent=Opera 9.0 -Platform=WinNT -Win32=true - -[Opera/9.0* (Windows NT 5.0*)*] -Parent=Opera 9.0 -Platform=Win2000 -Win32=true - -[Opera/9.0* (Windows NT 5.1*)*] -Parent=Opera 9.0 -Platform=WinXP -Win32=true - -[Opera/9.0* (Windows NT 5.2*)*] -Parent=Opera 9.0 -Platform=Win2003 -Win32=true - -[Opera/9.0* (Windows NT 6.0*)*] -Parent=Opera 9.0 -Platform=WinVista -Win32=true - -[Opera/9.0* (Windows XP*)*] -Parent=Opera 9.0 -Platform=WinXP -Win32=true - -[Opera/9.0* (X11; FreeBSD*)*] -Parent=Opera 9.0 -Platform=FreeBSD - -[Opera/9.0* (X11; Linux*)*] -Parent=Opera 9.0 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.1 - -[Opera 9.1] -Parent=DefaultProperties -Browser=Opera -Version=9.1 -MajorVer=9 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 9.1*] -Parent=Opera 9.1 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 9.1*] -Parent=Opera 9.1 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 9.1*] -Parent=Opera 9.1 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Win2003 -Win32=true - -[Mozilla/* (X11; Linux*) Opera 9.1*] -Parent=Opera 9.1 -Platform=Linux - -[Opera/9.1* (Linux*)*] -Parent=Opera 9.1 -Platform=Linux - -[Opera/9.1* (Macintosh; *Mac OS X;*)*] -Parent=Opera 9.1 -Platform=MacOSX - -[Opera/9.1* (Windows 95*)*] -Parent=Opera 9.1 -Platform=Win95 -Win32=true - -[Opera/9.1* (Windows 98*)*] -Parent=Opera 9.1 -Platform=Win98 -Win32=true - -[Opera/9.1* (Windows CE*)*] -Parent=Opera 9.1 -Platform=WinCE -Win32=true - -[Opera/9.1* (Windows ME*)*] -Parent=Opera 9.1 -Platform=WinME -Win32=true - -[Opera/9.1* (Windows NT 4.0*)*] -Parent=Opera 9.1 -Platform=WinNT -Win32=true - -[Opera/9.1* (Windows NT 5.0*)*] -Parent=Opera 9.1 -Platform=Win2000 -Win32=true - -[Opera/9.1* (Windows NT 5.1*)*] -Parent=Opera 9.1 -Platform=WinXP -Win32=true - -[Opera/9.1* (Windows NT 5.2*)*] -Parent=Opera 9.1 -Platform=Win2003 -Win32=true - -[Opera/9.1* (Windows NT 6.0*)*] -Parent=Opera 9.1 -Platform=WinVista -Win32=true - -[Opera/9.1* (Windows XP*)*] -Parent=Opera 9.1 -Platform=WinXP -Win32=true - -[Opera/9.1* (X11; FreeBSD*)*] -Parent=Opera 9.1 -Platform=FreeBSD - -[Opera/9.1* (X11; Linux*)*] -Parent=Opera 9.1 -Platform=Linux - -[Opera/9.1* (X11; SunOS*)*] -Parent=Opera 9.1 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.2 - -[Opera 9.2] -Parent=DefaultProperties -Browser=Opera -Version=9.2 -MajorVer=9 -MinorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC) Opera 9.2*] -Parent=Opera 9.2 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.1*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win7 - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 9.2*] -Parent=Opera 9.2 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 9.2*] -Parent=Opera 9.2 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 9.2*] -Parent=Opera 9.2 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win2003 -Win32=true - -[Mozilla/* (Windows NT 6.0;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=WinVista - -[Mozilla/* (Windows NT 6.1;*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Win7 - -[Mozilla/* (X11; Linux*) Opera 9.2*] -Parent=Opera 9.2 -Platform=Linux - -[Opera/9.2* (Linux*)*] -Parent=Opera 9.2 -Platform=Linux - -[Opera/9.2* (Macintosh; *Mac OS X;*)*] -Parent=Opera 9.2 -Platform=MacOSX - -[Opera/9.2* (Windows 95*)*] -Parent=Opera 9.2 -Platform=Win95 -Win32=true - -[Opera/9.2* (Windows 98*)*] -Parent=Opera 9.2 -Platform=Win98 -Win32=true - -[Opera/9.2* (Windows CE*)*] -Parent=Opera 9.2 -Platform=WinCE -Win32=true - -[Opera/9.2* (Windows ME*)*] -Parent=Opera 9.2 -Platform=WinME -Win32=true - -[Opera/9.2* (Windows NT 4.0*)*] -Parent=Opera 9.2 -Platform=WinNT -Win32=true - -[Opera/9.2* (Windows NT 5.0*)*] -Parent=Opera 9.2 -Platform=Win2000 -Win32=true - -[Opera/9.2* (Windows NT 5.1*)*] -Parent=Opera 9.2 -Platform=WinXP -Win32=true - -[Opera/9.2* (Windows NT 5.2*)*] -Parent=Opera 9.2 -Platform=Win2003 -Win32=true - -[Opera/9.2* (Windows NT 6.0*)*] -Parent=Opera 9.2 -Platform=WinVista -Win32=true - -[Opera/9.2* (Windows NT 6.1*)*] -Parent=Opera 9.2 -Platform=Win7 - -[Opera/9.2* (Windows XP*)*] -Parent=Opera 9.2 -Platform=WinXP -Win32=true - -[Opera/9.2* (X11; FreeBSD*)*] -Parent=Opera 9.2 -Platform=FreeBSD - -[Opera/9.2* (X11; Linux*)*] -Parent=Opera 9.2 -Platform=Linux - -[Opera/9.2* (X11; SunOS*)*] -Parent=Opera 9.2 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.3 - -[Opera 9.3] -Parent=DefaultProperties -Browser=Opera -Version=9.3 -MajorVer=9 -MinorVer=3 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC) Opera 9.3*] -Parent=Opera 9.3 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.1*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win7 - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 9.3*] -Parent=Opera 9.3 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 9.3*] -Parent=Opera 9.3 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 9.3*] -Parent=Opera 9.3 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win2003 -Win32=true - -[Mozilla/* (Windows NT 6.0;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=WinVista - -[Mozilla/* (Windows NT 6.1;*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Win7 - -[Mozilla/* (X11; Linux*) Opera 9.3*] -Parent=Opera 9.3 -Platform=Linux - -[Opera/9.3* (Linux*)*] -Parent=Opera 9.3 -Platform=Linux - -[Opera/9.3* (Macintosh; *Mac OS X;*)*] -Parent=Opera 9.3 -Platform=MacOSX - -[Opera/9.3* (Windows 95*)*] -Parent=Opera 9.3 -Platform=Win95 -Win32=true - -[Opera/9.3* (Windows 98*)*] -Parent=Opera 9.3 -Platform=Win98 -Win32=true - -[Opera/9.3* (Windows CE*)*] -Parent=Opera 9.3 -Platform=WinCE -Win32=true - -[Opera/9.3* (Windows ME*)*] -Parent=Opera 9.3 -Platform=WinME -Win32=true - -[Opera/9.3* (Windows NT 4.0*)*] -Parent=Opera 9.3 -Platform=WinNT -Win32=true - -[Opera/9.3* (Windows NT 5.0*)*] -Parent=Opera 9.3 -Platform=Win2000 -Win32=true - -[Opera/9.3* (Windows NT 5.1*)*] -Parent=Opera 9.3 -Platform=WinXP -Win32=true - -[Opera/9.3* (Windows NT 5.2*)*] -Parent=Opera 9.3 -Platform=Win2003 -Win32=true - -[Opera/9.3* (Windows NT 6.0*)*] -Parent=Opera 9.3 -Platform=WinVista -Win32=true - -[Opera/9.3* (Windows NT 6.1*)*] -Parent=Opera 9.3 -Platform=Win7 - -[Opera/9.3* (Windows XP*)*] -Parent=Opera 9.3 -Platform=WinXP -Win32=true - -[Opera/9.3* (X11; FreeBSD*)*] -Parent=Opera 9.3 -Platform=FreeBSD - -[Opera/9.3* (X11; Linux*)*] -Parent=Opera 9.3 -Platform=Linux - -[Opera/9.3* (X11; SunOS*)*] -Parent=Opera 9.3 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.4 - -[Opera 9.4] -Parent=DefaultProperties -Browser=Opera -Version=9.4 -MajorVer=9 -MinorVer=4 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC) Opera 9.4*] -Parent=Opera 9.4 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.1*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win7 - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 9.4*] -Parent=Opera 9.4 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 9.4*] -Parent=Opera 9.4 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 9.4*] -Parent=Opera 9.4 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win2003 -Win32=true - -[Mozilla/* (Windows NT 6.0;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=WinVista - -[Mozilla/* (Windows NT 6.1;*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Win7 - -[Mozilla/* (X11; Linux*) Opera 9.4*] -Parent=Opera 9.4 -Platform=Linux - -[Opera/9.4* (Linux*)*] -Parent=Opera 9.4 -Platform=Linux - -[Opera/9.4* (Macintosh; *Mac OS X;*)*] -Parent=Opera 9.4 -Platform=MacOSX - -[Opera/9.4* (Windows 95*)*] -Parent=Opera 9.4 -Platform=Win95 -Win32=true - -[Opera/9.4* (Windows 98*)*] -Parent=Opera 9.4 -Platform=Win98 -Win32=true - -[Opera/9.4* (Windows CE*)*] -Parent=Opera 9.4 -Platform=WinCE -Win32=true - -[Opera/9.4* (Windows ME*)*] -Parent=Opera 9.4 -Platform=WinME -Win32=true - -[Opera/9.4* (Windows NT 4.0*)*] -Parent=Opera 9.4 -Platform=WinNT -Win32=true - -[Opera/9.4* (Windows NT 5.0*)*] -Parent=Opera 9.4 -Platform=Win2000 -Win32=true - -[Opera/9.4* (Windows NT 5.1*)*] -Parent=Opera 9.4 -Platform=WinXP -Win32=true - -[Opera/9.4* (Windows NT 5.2*)*] -Parent=Opera 9.4 -Platform=Win2003 -Win32=true - -[Opera/9.4* (Windows NT 6.0*)*] -Parent=Opera 9.4 -Platform=WinVista -Win32=true - -[Opera/9.4* (Windows NT 6.1*)*] -Parent=Opera 9.4 -Platform=Win7 - -[Opera/9.4* (Windows XP*)*] -Parent=Opera 9.4 -Platform=WinXP -Win32=true - -[Opera/9.4* (X11; FreeBSD*)*] -Parent=Opera 9.4 -Platform=FreeBSD - -[Opera/9.4* (X11; Linux*)*] -Parent=Opera 9.4 -Platform=Linux - -[Opera/9.4* (X11; SunOS*)*] -Parent=Opera 9.4 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.5 - -[Opera 9.5] -Parent=DefaultProperties -Browser=Opera -Version=9.5 -MajorVer=9 -MinorVer=5 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC) Opera 9.5*] -Parent=Opera 9.5 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.1*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win7 - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 9.5*] -Parent=Opera 9.5 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 9.5*] -Parent=Opera 9.5 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 9.5*] -Parent=Opera 9.5 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win2003 -Win32=true - -[Mozilla/* (Windows NT 6.0;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=WinVista - -[Mozilla/* (Windows NT 6.1;*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Win7 - -[Mozilla/* (X11; Linux*) Opera 9.5*] -Parent=Opera 9.5 -Platform=Linux - -[Opera/9.5* (Linux*)*] -Parent=Opera 9.5 -Platform=Linux - -[Opera/9.5* (Macintosh; *Mac OS X;*)*] -Parent=Opera 9.5 -Platform=MacOSX - -[Opera/9.5* (Windows 95*)*] -Parent=Opera 9.5 -Platform=Win95 -Win32=true - -[Opera/9.5* (Windows 98*)*] -Parent=Opera 9.5 -Platform=Win98 -Win32=true - -[Opera/9.5* (Windows CE*)*] -Parent=Opera 9.5 -Platform=WinCE -Win32=true - -[Opera/9.5* (Windows ME*)*] -Parent=Opera 9.5 -Platform=WinME -Win32=true - -[Opera/9.5* (Windows NT 4.0*)*] -Parent=Opera 9.5 -Platform=WinNT -Win32=true - -[Opera/9.5* (Windows NT 5.0*)*] -Parent=Opera 9.5 -Platform=Win2000 -Win32=true - -[Opera/9.5* (Windows NT 5.1*)*] -Parent=Opera 9.5 -Platform=WinXP -Win32=true - -[Opera/9.5* (Windows NT 5.2*)*] -Parent=Opera 9.5 -Platform=Win2003 -Win32=true - -[Opera/9.5* (Windows NT 6.0*)*] -Parent=Opera 9.5 -Platform=WinVista -Win32=true - -[Opera/9.5* (Windows NT 6.1*)*] -Parent=Opera 9.5 -Platform=Win7 - -[Opera/9.5* (Windows XP*)*] -Parent=Opera 9.5 -Platform=WinXP -Win32=true - -[Opera/9.5* (X11; FreeBSD*)*] -Parent=Opera 9.5 -Platform=FreeBSD - -[Opera/9.5* (X11; Linux*)*] -Parent=Opera 9.5 -Platform=Linux - -[Opera/9.5* (X11; SunOS*)*] -Parent=Opera 9.5 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Opera 9.6 - -[Opera 9.6] -Parent=DefaultProperties -Browser=Opera -Version=9.6 -MajorVer=9 -MinorVer=6 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/* (compatible; MSIE*; Linux*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC Mac OS X;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=MacOSX - -[Mozilla/* (compatible; MSIE*; Mac_PowerPC) Opera 9.6*] -Parent=Opera 9.6 -Platform=MacPPC - -[Mozilla/* (compatible; MSIE*; Windows 2000*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 95*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win95 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows 98*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win98 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows CE*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinCE -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows ME*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinME -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 4.0*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinNT -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.0*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win2000 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.1*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 5.2*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win2003 -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.0*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinVista -Win32=true - -[Mozilla/* (compatible; MSIE*; Windows NT 6.1*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win7 - -[Mozilla/* (compatible; MSIE*; Windows XP*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinXP -Win32=true - -[Mozilla/* (compatible; MSIE*; X11; FreeBSD*) Opera 9.6*] -Parent=Opera 9.6 -Platform=FreeBSD - -[Mozilla/* (compatible; MSIE*; X11; Linux*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Linux - -[Mozilla/* (compatible; MSIE*; X11; SunOS*) Opera 9.6*] -Parent=Opera 9.6 -Platform=SunOS - -[Mozilla/* (Macintosh; *Mac OS X; ?) Opera 9.6*] -Parent=Opera 9.6 -Platform=MacOSX - -[Mozilla/* (Windows 2000;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows 95;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win95 -Win32=true - -[Mozilla/* (Windows 98;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win98 -Win32=true - -[Mozilla/* (Windows ME;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinME -Win32=true - -[Mozilla/* (Windows NT 4.0;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinNT -Win32=true - -[Mozilla/* (Windows NT 5.0;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win2000 -Win32=true - -[Mozilla/* (Windows NT 5.1;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinXP -Win32=true - -[Mozilla/* (Windows NT 5.2;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win2003 -Win32=true - -[Mozilla/* (Windows NT 6.0;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=WinVista - -[Mozilla/* (Windows NT 6.1;*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Win7 - -[Mozilla/* (X11; Linux*) Opera 9.6*] -Parent=Opera 9.6 -Platform=Linux - -[Opera/9.6* (Linux*)*] -Parent=Opera 9.6 -Platform=Linux - -[Opera/9.6* (Macintosh; *Mac OS X;*)*] -Parent=Opera 9.6 -Platform=MacOSX - -[Opera/9.6* (Windows 95*)*] -Parent=Opera 9.6 -Platform=Win95 -Win32=true - -[Opera/9.6* (Windows 98*)*] -Parent=Opera 9.6 -Platform=Win98 -Win32=true - -[Opera/9.6* (Windows CE*)*] -Parent=Opera 9.6 -Platform=WinCE -Win32=true - -[Opera/9.6* (Windows ME*)*] -Parent=Opera 9.6 -Platform=WinME -Win32=true - -[Opera/9.6* (Windows NT 4.0*)*] -Parent=Opera 9.6 -Platform=WinNT -Win32=true - -[Opera/9.6* (Windows NT 5.0*)*] -Parent=Opera 9.6 -Platform=Win2000 -Win32=true - -[Opera/9.6* (Windows NT 5.1*)*] -Parent=Opera 9.6 -Platform=WinXP -Win32=true - -[Opera/9.6* (Windows NT 5.2*)*] -Parent=Opera 9.6 -Platform=Win2003 -Win32=true - -[Opera/9.6* (Windows NT 6.0*)*] -Parent=Opera 9.6 -Platform=WinVista -Win32=true - -[Opera/9.6* (Windows NT 6.1*)*] -Parent=Opera 9.6 -Platform=Win7 - -[Opera/9.6* (Windows XP*)*] -Parent=Opera 9.6 -Platform=WinXP -Win32=true - -[Opera/9.6* (X11; FreeBSD*)*] -Parent=Opera 9.6 -Platform=FreeBSD - -[Opera/9.6* (X11; Linux*)*] -Parent=Opera 9.6 -Platform=Linux - -[Opera/9.6* (X11; SunOS*)*] -Parent=Opera 9.6 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 4.0 - -[Netscape 4.0] -Parent=DefaultProperties -Browser=Netscape -Version=4.0 -MajorVer=4 -Frames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[Mozilla/4.0*(Macintosh*] -Parent=Netscape 4.0 -Version=4.03 -MinorVer=03 -Platform=MacPPC - -[Mozilla/4.0*(Win95;*] -Parent=Netscape 4.0 -Platform=Win95 - -[Mozilla/4.0*(Win98;*] -Parent=Netscape 4.0 -Version=4.03 -MinorVer=03 -Platform=Win98 - -[Mozilla/4.0*(WinNT*] -Parent=Netscape 4.0 -Version=4.03 -MinorVer=03 -Platform=WinNT - -[Mozilla/4.0*(X11;*)] -Parent=Netscape 4.0 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 4.5 - -[Netscape 4.5] -Parent=DefaultProperties -Browser=Netscape -Version=4.5 -MajorVer=4 -MinorVer=5 -Frames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[Mozilla/4.5*(Macintosh; ?; PPC)] -Parent=Netscape 4.5 -Platform=MacPPC - -[Mozilla/4.5*(Win2000; ?)] -Parent=Netscape 4.5 -Platform=Win2000 - -[Mozilla/4.5*(Win95; ?)] -Parent=Netscape 4.5 -Platform=Win95 - -[Mozilla/4.5*(Win98; ?)] -Parent=Netscape 4.5 -Platform=Win98 - -[Mozilla/4.5*(WinME; ?)] -Parent=Netscape 4.5 -Platform=WinME - -[Mozilla/4.5*(WinNT; ?)] -Parent=Netscape 4.5 -Platform=WinNT - -[Mozilla/4.5*(WinXP; ?)] -Parent=Netscape 4.5 -Platform=WinXP - -[Mozilla/4.5*(X11*)] -Parent=Netscape 4.5 -Platform=Linux - -[Mozilla/4.51*(Macintosh; ?; PPC)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 - -[Mozilla/4.51*(Win2000; ?)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 -Platform=Win2000 - -[Mozilla/4.51*(Win95; ?)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 -Platform=Win95 - -[Mozilla/4.51*(Win98; ?)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 -Platform=Win98 - -[Mozilla/4.51*(WinME; ?)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 -Platform=WinME - -[Mozilla/4.51*(WinNT; ?)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 -Platform=WinNT - -[Mozilla/4.51*(WinXP; ?)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 -Platform=WinXP - -[Mozilla/4.51*(X11*)] -Parent=Netscape 4.5 -Version=4.51 -MinorVer=51 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 4.6 - -[Netscape 4.6] -Parent=DefaultProperties -Browser=Netscape -Version=4.6 -MajorVer=4 -MinorVer=6 -Frames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[Mozilla/4.6 * (OS/2; ?)] -Parent=Netscape 4.6 -Platform=OS/2 - -[Mozilla/4.6*(Macintosh; ?; PPC)] -Parent=Netscape 4.6 -Platform=MacPPC - -[Mozilla/4.6*(Win95; ?)] -Parent=Netscape 4.6 -Platform=Win95 - -[Mozilla/4.6*(Win98; ?)] -Parent=Netscape 4.6 -Platform=Win98 - -[Mozilla/4.6*(WinNT; ?)] -Parent=Netscape 4.6 -Platform=WinNT - -[Mozilla/4.61*(Macintosh; ?; PPC)] -Parent=Netscape 4.6 -Version=4.61 -MajorVer=4 -MinorVer=61 -Platform=MacPPC - -[Mozilla/4.61*(OS/2; ?)] -Parent=Netscape 4.6 -Version=4.61 -MajorVer=4 -MinorVer=61 -Platform=OS/2 - -[Mozilla/4.61*(Win95; ?)] -Parent=Netscape 4.6 -Version=4.61 -MajorVer=4 -MinorVer=61 -Platform=Win95 - -[Mozilla/4.61*(Win98; ?)] -Parent=Netscape 4.6 -Version=4.61 -Platform=Win98 - -[Mozilla/4.61*(WinNT; ?)] -Parent=Netscape 4.6 -Version=4.61 -MajorVer=4 -MinorVer=61 -Platform=WinNT - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 4.7 - -[Netscape 4.7] -Parent=DefaultProperties -Browser=Netscape -Version=4.7 -MajorVer=4 -MinorVer=7 -Frames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[Mozilla/4.7 * (Win2000; ?)] -Parent=Netscape 4.7 -Platform=Win2000 - -[Mozilla/4.7*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=7 -Platform=MacPPC - -[Mozilla/4.7*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=7 -Platform=Win95 - -[Mozilla/4.7*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=7 -Platform=Win98 - -[Mozilla/4.7*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=7 -Platform=WinNT -Win32=true - -[Mozilla/4.7*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=7 -Platform=Win2000 -Win32=true - -[Mozilla/4.7*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=7 -Platform=WinXP -Win32=true - -[Mozilla/4.7*(WinNT; ?)*] -Parent=Netscape 4.7 -Platform=WinNT - -[Mozilla/4.7*(X11*)*] -Parent=Netscape 4.7 -Platform=Linux - -[Mozilla/4.7*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -Platform=SunOS - -[Mozilla/4.71*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=MacPPC - -[Mozilla/4.71*(Win95; ?)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=Win95 - -[Mozilla/4.71*(Win98; ?)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=Win98 - -[Mozilla/4.71*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=WinNT -Win32=true - -[Mozilla/4.71*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=Win2000 -Win32=true - -[Mozilla/4.71*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=WinXP -Win32=true - -[Mozilla/4.71*(WinNT; ?)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=WinNT - -[Mozilla/4.71*(X11*)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=Linux - -[Mozilla/4.71*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -Version=4.71 -MinorVer=71 -Platform=SunOS - -[Mozilla/4.72*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=MacPPC - -[Mozilla/4.72*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=Win95 - -[Mozilla/4.72*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=Win98 - -[Mozilla/4.72*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=WinNT -Win32=true - -[Mozilla/4.72*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=Win2000 -Win32=true - -[Mozilla/4.72*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=WinXP -Win32=true - -[Mozilla/4.72*(WinNT; ?)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=WinNT - -[Mozilla/4.72*(X11*)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=Linux - -[Mozilla/4.72*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -MinorVer=72 -Platform=SunOS - -[Mozilla/4.73*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=MacPPC - -[Mozilla/4.73*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=Win95 - -[Mozilla/4.73*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=Win98 - -[Mozilla/4.73*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=WinNT -Win32=true - -[Mozilla/4.73*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=Win2000 -Win32=true - -[Mozilla/4.73*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=WinXP -Win32=true - -[Mozilla/4.73*(WinNT; ?)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=WinNT - -[Mozilla/4.73*(X11*)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=Linux - -[Mozilla/4.73*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -MinorVer=73 -Platform=SunOS - -[Mozilla/4.74*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=MacPPC - -[Mozilla/4.74*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=Win95 - -[Mozilla/4.74*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=Win98 - -[Mozilla/4.74*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=WinNT -Win32=true - -[Mozilla/4.74*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=Win2000 -Win32=true - -[Mozilla/4.74*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=WinXP -Win32=true - -[Mozilla/4.74*(WinNT; ?)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=WinNT - -[Mozilla/4.74*(X11*)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=Linux - -[Mozilla/4.74*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -MinorVer=74 -Platform=SunOS - -[Mozilla/4.75*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=MacPPC - -[Mozilla/4.75*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=Win95 - -[Mozilla/4.75*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=Win98 - -[Mozilla/4.75*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=WinNT -Win32=true - -[Mozilla/4.75*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=Win2000 -Win32=true - -[Mozilla/4.75*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=WinXP -Win32=true - -[Mozilla/4.75*(WinNT; ?)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=WinNT - -[Mozilla/4.75*(X11*)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=Linux - -[Mozilla/4.75*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -MinorVer=75 -Platform=SunOS - -[Mozilla/4.76*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=MacPPC - -[Mozilla/4.76*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=Win95 - -[Mozilla/4.76*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=Win98 - -[Mozilla/4.76*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=WinNT -Win32=true - -[Mozilla/4.76*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=Win2000 -Win32=true - -[Mozilla/4.76*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=WinXP -Win32=true - -[Mozilla/4.76*(WinNT; ?)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=WinNT - -[Mozilla/4.76*(X11*)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=Linux - -[Mozilla/4.76*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -MinorVer=76 -Platform=SunOS - -[Mozilla/4.77*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=MacPPC - -[Mozilla/4.77*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=Win95 - -[Mozilla/4.77*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=Win98 - -[Mozilla/4.77*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=WinNT -Win32=true - -[Mozilla/4.77*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=Win2000 -Win32=true - -[Mozilla/4.77*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=WinXP -Win32=true - -[Mozilla/4.77*(WinNT; ?)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=WinNT - -[Mozilla/4.77*(X11*)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=Linux - -[Mozilla/4.77*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -MinorVer=77 -Platform=SunOS - -[Mozilla/4.78*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=MacPPC - -[Mozilla/4.78*(Win95; ?)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=Win95 - -[Mozilla/4.78*(Win98; ?)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=Win98 - -[Mozilla/4.78*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=WinNT -Win32=true - -[Mozilla/4.78*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=Win2000 -Win32=true - -[Mozilla/4.78*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=WinXP -Win32=true - -[Mozilla/4.78*(WinNT; ?)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=WinNT - -[Mozilla/4.78*(X11*)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=Linux - -[Mozilla/4.78*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -MinorVer=78 -Platform=SunOS - -[Mozilla/4.79*(Macintosh; ?; PPC)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=MacPPC - -[Mozilla/4.79*(Win95; ?)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=Win95 - -[Mozilla/4.79*(Win98; ?)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=Win98 - -[Mozilla/4.79*(Windows NT 4.0; ?)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=WinNT -Win32=true - -[Mozilla/4.79*(Windows NT 5.0; ?)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=Win2000 -Win32=true - -[Mozilla/4.79*(Windows NT 5.1; ?)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=WinXP -Win32=true - -[Mozilla/4.79*(WinNT; ?)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=WinNT - -[Mozilla/4.79*(X11*)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=Linux - -[Mozilla/4.79*(X11; ?; SunOS*)*] -Parent=Netscape 4.7 -Version=4.79 -MinorVer=79 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 4.8 - -[Netscape 4.8] -Parent=DefaultProperties -Browser=Netscape -Version=4.8 -MajorVer=4 -MinorVer=8 -Frames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[Mozilla/4.8*(Macintosh; ?; MacPPC)*] -Parent=Netscape 4.8 -Platform=MacPPC - -[Mozilla/4.8*(Macintosh; ?; PPC Mac OS X*] -Parent=Netscape 4.8 -Platform=MacOSX - -[Mozilla/4.8*(Macintosh; ?; PPC)*] -Parent=Netscape 4.8 -Platform=MacPPC - -[Mozilla/4.8*(Win95; *)*] -Parent=Netscape 4.8 - -[Mozilla/4.8*(Win98; *)*] -Parent=Netscape 4.8 -Platform=Win98 - -[Mozilla/4.8*(Windows NT 4.0; *)*] -Parent=Netscape 4.8 -Platform=WinNT -Win32=true - -[Mozilla/4.8*(Windows NT 5.0; *)*] -Parent=Netscape 4.8 -Platform=Win2000 -Win32=true - -[Mozilla/4.8*(Windows NT 5.1; *)*] -Parent=Netscape 4.8 -Platform=WinXP -Win32=true - -[Mozilla/4.8*(WinNT; *)*] -Parent=Netscape 4.8 -Platform=WinNT - -[Mozilla/4.8*(X11; *)*] -Parent=Netscape 4.8 -Platform=Linux - -[Mozilla/4.8*(X11; *SunOS*)*] -Parent=Netscape 4.8 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 6.0 - -[Netscape 6.0] -Parent=DefaultProperties -Browser=Netscape -Version=6.0 -MajorVer=6 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape6/6.0*] -Parent=Netscape 6.0 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 6.1 - -[Netscape 6.1] -Parent=DefaultProperties -Browser=Netscape -Version=6.1 -MajorVer=6 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape6/6.1*] -Parent=Netscape 6.1 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 6.2 - -[Netscape 6.2] -Parent=DefaultProperties -Browser=Netscape -Version=6.2 -MajorVer=6 -MinorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X*) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape6/6.2*] -Parent=Netscape 6.2 -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 7.0 - -[Netscape 7.0] -Parent=DefaultProperties -Browser=Netscape -Version=7.0 -MajorVer=7 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win*9x 4.90; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/7.0*] -Parent=Netscape 7.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 7.1 - -[Netscape 7.1] -Parent=DefaultProperties -Browser=Netscape -Version=7.1 -MajorVer=7 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X Mach-O; *; rv:*) Gecko/* Netscape*/7.1] -Parent=Netscape 7.1 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/7.1*] -Parent=Netscape 7.1 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 7.2 - -[Netscape 7.2] -Parent=DefaultProperties -Browser=Netscape -Version=7.2 -MajorVer=7 -MinorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X Mach-O; *; rv:*) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/7.2*] -Parent=Netscape 7.2 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 8.0 - -[Netscape 8.0] -Parent=DefaultProperties -Browser=Netscape -Version=8.0 -MajorVer=8 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X Mach-O; *; rv:*) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC Mac OS X;*) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/8.0*] -Parent=Netscape 8.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Netscape 8.1 - -[Netscape 8.1] -Parent=DefaultProperties -Browser=Netscape -Version=8.1 -MajorVer=8 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; ?; PPC;*) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=MacPPC - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95;*) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win9x 4.90; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 4.0; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win7 - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.0; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.1; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT5.2; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT6.0; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT6.1; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; *) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*) Gecko/* Netscape*/8.1*] -Parent=Netscape 8.1 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SeaMonkey 1.0 - -[SeaMonkey 1.0] -Parent=DefaultProperties -Browser=SeaMonkey -Version=1.0 -MajorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=WinME - -[Mozilla/5.0 (Windows; ?; Win98; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=Win98 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=Win2000 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; FreeBSD*; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=FreeBSD - -[Mozilla/5.0 (X11; ?; Linux*; *; rv:1.8*) Gecko/20060221 SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*; *; rv:1.8*) Gecko/* SeaMonkey/1.0*] -Parent=SeaMonkey 1.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SeaMonkey 1.1 - -[SeaMonkey 1.1] -Parent=DefaultProperties -Browser=SeaMonkey -Version=1.1 -MajorVer=1 -MinorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=WinME - -[Mozilla/5.0 (Windows; ?; Win98; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=Win98 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=Win2000 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; FreeBSD*; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=FreeBSD - -[Mozilla/5.0 (X11; ?; Linux*; *; rv:1.8*) Gecko/20060221 SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*; *; rv:1.8*) Gecko/* SeaMonkey/1.1*] -Parent=SeaMonkey 1.1 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SeaMonkey 2.0 - -[SeaMonkey 2.0] -Parent=DefaultProperties -Browser=SeaMonkey -Version=2.0 -MajorVer=2 -Alpha=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=WinME - -[Mozilla/5.0 (Windows; ?; Win98; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=Win98 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=Win2000 - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; ?; Windows NT 6.0; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; ?; Windows NT 6.1; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=Win7 - -[Mozilla/5.0 (X11; ?; FreeBSD*; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=FreeBSD - -[Mozilla/5.0 (X11; ?; Linux*; *; rv:1.9*) Gecko/20060221 SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=Linux - -[Mozilla/5.0 (X11; ?; SunOS*; *; rv:1.9*) Gecko/* SeaMonkey/2.0*] -Parent=SeaMonkey 2.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Flock 1.0 - -[Flock 1.0] -Parent=DefaultProperties -Browser=Flock -Version=1.0 -MajorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] -Parent=Flock 1.0 -Platform=MacOSX - -[Mozilla/5.0 (Windows; U; Win 9x 4.90; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] -Parent=Flock 1.0 -Platform=WinME - -[Mozilla/5.0 (Windows; U; Windows NT 5.0*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] -Parent=Flock 1.0 -Platform=Win2000 - -[Mozilla/5.0 (Windows; U; Windows NT 5.1*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] -Parent=Flock 1.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] -Parent=Flock 1.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] -Parent=Flock 1.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1*; *; rv:1.*) Gecko/* Firefox/2.* Flock/1.*] -Parent=Flock 1.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Flock 2.0 - -[Flock 2.0] -Parent=DefaultProperties -Browser=Flock -Version=2.0 -MajorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; U; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] -Parent=Flock 2.0 -Platform=MacOSX - -[Mozilla/5.0 (Windows; U; Win 9x 4.90; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] -Parent=Flock 2.0 -Platform=WinME - -[Mozilla/5.0 (Windows; U; Windows NT 5.0*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] -Parent=Flock 2.0 -Platform=Win2000 - -[Mozilla/5.0 (Windows; U; Windows NT 5.1*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] -Parent=Flock 2.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 5.2*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] -Parent=Flock 2.0 -Platform=Win2003 - -[Mozilla/5.0 (Windows; U; Windows NT 6.0*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] -Parent=Flock 2.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1*; *; rv:1.*) Gecko/* Firefox/3.* Flock/2.*] -Parent=Flock 2.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Sleipnir 2.0 - -[Sleipnir] -Parent=DefaultProperties -Browser=Sleipnir -Version=2.0 -MajorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.0*) Sleipnir/2.*] -Parent=Sleipnir -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.1*) Sleipnir/2.*] -Parent=Sleipnir -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 5.2*) Sleipnir/2.*] -Parent=Sleipnir -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 6.0*) Sleipnir/2.*] -Parent=Sleipnir -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE ?.0; Windows NT 6.1*) Sleipnir/2.*] -Parent=Sleipnir -Platform=Win7 - -[Sleipnir*] -Parent=Sleipnir - -[Sleipnir/2.*] -Parent=Sleipnir - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fennec 1.0 - -[Fennec 1.0] -Parent=DefaultProperties -Browser=Firefox Mobile -Version=1.0 -MajorVer=1 -Alpha=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1; *; rv:1.9*) Gecko/* Fennec/1.0*] -Parent=Fennec 1.0 -Platform=WinXP - -[Mozilla/5.0 (Windows; U; Windows NT 6.0; *; rv:1.9*) Gecko/* Fennec/1.0*] -Parent=Fennec 1.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1; *; rv:1.9*) Gecko/* Fennec/1.0*] -Parent=Fennec 1.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firebird - -[Firebird] -Parent=DefaultProperties -Browser=Firebird -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Linux; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (OS/2; *; Warp*; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.?; *; rv:1.*) Gecko/* Firebird Browser/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.?; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.?; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.?; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.*; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird -Win32=true - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (X11; *; IRIX*; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (X11; *; Linux*; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.*) Gecko/* Firebird/0.*] -Parent=Firebird - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.*) Gecko/* Mozilla Firebird/0.*] -Parent=Firebird - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox - -[Firefox] -Parent=DefaultProperties -Browser=Firefox -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.3 -w3cdomversion=1.0 - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=MacOSX - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox - -[Mozilla/5.0 (OS/2; *; Warp*; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox - -[Mozilla/5.0 (Windows NT 5.?; ?; rv:1.*) Gecko/* Firefox] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win95; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.*; *; rv:1.*) Gecko/* Deer Park/Alpha*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.?; *; rv:1.*) Gecko/* Firefox/10.5] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0*; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0*; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Win32=true - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; FreeBSD*; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox - -[Mozilla/5.0 (X11; *; HP-UX*; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; Linux*; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox - -[Mozilla/5.0 (X11; *; Linux*; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.*) Gecko/* Firefox/0.*] -Parent=Firefox -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 1.0 - -[Firefox 1.0] -Parent=DefaultProperties -Browser=Firefox -Version=1.0 -MajorVer=1 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.3 -w3cdomversion=1.0 - -[Mozilla/5.0 (Linux; *; PPC*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=MacPPC - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=MacOSX - -[Mozilla/5.0 (OS/2; *; Warp*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=OS/2 - -[Mozilla/5.0 (Windows; *; Win 9x 4.90*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=Linux - -[Mozilla/5.0 (X11; *; *Linux*; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=Linux - -[Mozilla/5.0 (X11; *; DragonFly*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.*) Gecko/* Firefox/1.0*] -Parent=Firefox 1.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 1.4 - -[Firefox 1.4] -Parent=DefaultProperties -Browser=Firefox -Version=1.4 -MajorVer=1 -MinorVer=4 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.3 -w3cdomversion=1.0 - -[Mozilla/5.0 (Linux; *; PPC*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=Linux - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=MacOSX - -[Mozilla/5.0 (OS/2; *; Warp*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=OS/2 - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; *; Win95*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=Linux - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.*) Gecko/* Firefox/1.4*] -Parent=Firefox 1.4 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 1.5 - -[Firefox 1.5] -Parent=DefaultProperties -Browser=Firefox -Version=1.5 -MajorVer=1 -MinorVer=5 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.5 -w3cdomversion=1.0 - -[Mozilla/5.0 (Linux; *; PPC*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=Linux - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=MacOSX - -[Mozilla/5.0 (OS/2; *; Warp*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=OS/2 - -[Mozilla/5.0 (rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2 x64; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=Linux - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.*) Gecko/* Firefox/1.5*] -Parent=Firefox 1.5 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 2.0 - -[Firefox 2.0] -Parent=DefaultProperties -Browser=Firefox -Version=2.0 -MajorVer=2 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.5 -w3cdomversion=1.0 - -[Mozilla/5.0 (Linux; *; PPC*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=Linux - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=MacOSX - -[Mozilla/5.0 (OS/2; *; Warp*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=OS/2 - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; *; Win95; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=Linux - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.8*) Gecko/* Firefox/2.0*] -Parent=Firefox 2.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.0 - -[Firefox 3.0] -Parent=DefaultProperties -Browser=Firefox -Version=3.0 -MajorVer=3 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true -ecmascriptversion=1.5 -w3cdomversion=1.0 - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=MacOSX - -[Mozilla/5.0 (Windows; *; Windows NT 5.0; *; rv:1.*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=Win2000 - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=Win7 - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=WinXP -Win32=false -Win64=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=Win2003 -Win32=false -Win64=true - -[Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1 x64; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=Win7 - -[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=Linux - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.9*) Gecko/* Firefox/3.0*] -Parent=Firefox 3.0 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.1 - -[Firefox 3.1] -Parent=DefaultProperties -Browser=Firefox -Version=3.1 -MajorVer=3 -MinorVer=1 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=MacOSX - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=Win7 - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=WinXP -Win32=false -Win64=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=Win2003 -Win32=false -Win64=true - -[Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1 x64; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=Win7 - -[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=Linux - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.9*) Gecko/* Firefox/3.1*] -Parent=Firefox 3.1 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Firefox 3.5 - -[Firefox 3.5] -Parent=DefaultProperties -Browser=Firefox -Version=3.5 -MajorVer=3 -MinorVer=5 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=3 -supportsCSS=true - -[Mozilla/5.0 (Macintosh; *; *Mac OS X*; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=MacOSX - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.0; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=WinVista -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 6.1; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=Win7 - -[Mozilla/5.0 (Windows; *; WinNT4.0; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.1 x64; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=WinXP -Win32=false -Win64=true - -[Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=Win2003 -Win32=false -Win64=true - -[Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=WinVista - -[Mozilla/5.0 (Windows; U; Windows NT 6.1 x64; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=Win7 - -[Mozilla/5.0 (X11; *; *Linux*; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=Linux - -[Mozilla/5.0 (X11; *; FreeBSD*; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *; HP-UX*; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=HP-UX - -[Mozilla/5.0 (X11; *; IRIX64*; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=IRIX64 - -[Mozilla/5.0 (X11; *; OpenBSD*; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *; SunOS*; *; rv:1.9.*) Gecko/* Firefox/3.5b*] -Parent=Firefox 3.5 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Phoenix - -[Phoenix] -Parent=DefaultProperties -Browser=Phoenix -Version=0.5 -MinorVer=5 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (Windows; *; Win 9x 4.90; *; rv:1.4*) Gecko/* Phoenix/0.5*] -Parent=Phoenix -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; *; Win98; *; rv:1.4*) Gecko/* Phoenix/0.5*] -Parent=Phoenix -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.0*; *; rv:1.4*) Gecko/* Phoenix/0.5*] -Parent=Phoenix -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.1; *; rv:1.4*) Gecko/* Phoenix/0.5*] -Parent=Phoenix -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; *; Windows NT 5.2*; *; rv:1.4*) Gecko/* Phoenix/0.5*] -Parent=Phoenix -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (X11; *; Linux*; *; rv:1.4*) Gecko/* Phoenix/0.5*] -Parent=Phoenix -Platform=Linux - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Iceweasel - -[Iceweasel] -Parent=DefaultProperties -Browser=Iceweasel -Platform=Linux -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (X11; U; Linux*; *; rv:1.8*) Gecko/* Iceweasel/2.0* (Debian-*)] -Parent=Iceweasel -Version=2.0 -MajorVer=2 -MinorVer=0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.0 - -[Mozilla 1.0] -Parent=DefaultProperties -Browser=Mozilla -Version=1.0 -MajorVer=1 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.0.*) Gecko/*] -Parent=Mozilla 1.0 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.1 - -[Mozilla 1.1] -Parent=DefaultProperties -Browser=Mozilla -Version=1.1 -MajorVer=1 -MinorVer=1 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.1.*) Gecko/*] -Parent=Mozilla 1.1 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.2 - -[Mozilla 1.2] -Parent=DefaultProperties -Browser=Mozilla -Version=1.2 -MajorVer=1 -MinorVer=2 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.2.*) Gecko/*] -Parent=Mozilla 1.2 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.3 - -[Mozilla 1.3] -Parent=DefaultProperties -Browser=Mozilla -Version=1.3 -MajorVer=1 -MinorVer=3 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.3.*) Gecko/*] -Parent=Mozilla 1.3 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.4 - -[Mozilla 1.4] -Parent=DefaultProperties -Browser=Mozilla -Version=1.4 -MajorVer=1 -MinorVer=4 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=Win31 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=Win31 -Win16=true -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *Linux*; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=Linux - -[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *SunOS*; *rv:1.4*) Gecko/*] -Parent=Mozilla 1.4 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.5 - -[Mozilla 1.5] -Parent=DefaultProperties -Browser=Mozilla -Version=1.5 -MajorVer=1 -MinorVer=5 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=Win31 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=Win31 -Win16=true -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *Linux*; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=Linux - -[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *SunOS*; *rv:1.5*) Gecko/*] -Parent=Mozilla 1.5 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.6 - -[Mozilla 1.6] -Parent=DefaultProperties -Browser=Mozilla -Version=1.6 -MajorVer=1 -MinorVer=6 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=Win31 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=Win31 -Win16=true -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *Linux*; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=Linux - -[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *SunOS*; *rv:1.6*) Gecko/*] -Parent=Mozilla 1.6 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.7 - -[Mozilla 1.7] -Parent=DefaultProperties -Browser=Mozilla -Version=1.7 -MajorVer=1 -MinorVer=7 -Beta=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.5 -w3cdomversion=1.0 - -[Mozilla/5.0 (*rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=Win31 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=Win31 -Win16=true -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *Linux*; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=Linux - -[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *SunOS*; *rv:1.7*) Gecko/*] -Parent=Mozilla 1.7 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.8 - -[Mozilla 1.8] -Parent=DefaultProperties -Browser=Mozilla -Version=1.8 -MajorVer=1 -MinorVer=8 -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.5 -w3cdomversion=1.0 - -[Mozilla/5.0 (*rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=Win31 -Win16=true -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *Linux*; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=Linux - -[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *SunOS*; *rv:1.8*) Gecko/*] -Parent=Mozilla 1.8 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Mozilla 1.9 - -[Mozilla 1.9] -Parent=DefaultProperties -Browser=Mozilla -Version=1.9 -MajorVer=1 -MinorVer=9 -Alpha=true -Frames=true -IFrames=true -Tables=true -Cookies=true -JavaApplets=true -JavaScript=true -CssVersion=2 -supportsCSS=true - -[Mozilla/5.0 (*rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 - -[Mozilla/5.0 (Macintosh; ?; *Mac OS X*; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=MacOSX - -[Mozilla/5.0 (Windows; ?; Win 9x 4.90; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=WinME -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.1; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win3.11; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=Win31 -Win16=true -Win32=true - -[Mozilla/5.0 (Windows; ?; Win95; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=Win95 -Win32=true - -[Mozilla/5.0 (Windows; ?; Win98; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=Win98 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.0; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=Win2000 -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=WinXP -Win32=true - -[Mozilla/5.0 (Windows; ?; Windows NT 5.2; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=Win2003 -Win32=true - -[Mozilla/5.0 (Windows; ?; WinNT4.0; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=WinNT -Win32=true - -[Mozilla/5.0 (X11; *FreeBSD*; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=FreeBSD - -[Mozilla/5.0 (X11; *Linux*; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=Linux - -[Mozilla/5.0 (X11; *OpenBSD*; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=OpenBSD - -[Mozilla/5.0 (X11; *SunOS*; *rv:1.9*) Gecko/*] -Parent=Mozilla 1.9 -Platform=SunOS - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE Mac - -[IE Mac] -Parent=DefaultProperties -Browser=IE -Platform=MacPPC -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -JavaApplets=true -JavaScript=true -CssVersion=1 -supportsCSS=true - -[Mozilla/?.? (compatible; MSIE 4.0*; *Mac_PowerPC*] -Parent=IE Mac -Version=4.0 -MajorVer=4 -MinorVer=0 - -[Mozilla/?.? (compatible; MSIE 4.5*; *Mac_PowerPC*] -Parent=IE Mac -Version=4.5 -MajorVer=4 -MinorVer=5 - -[Mozilla/?.? (compatible; MSIE 5.0*; *Mac_PowerPC*] -Parent=IE Mac -Version=5.0 -MajorVer=5 -MinorVer=0 - -[Mozilla/?.? (compatible; MSIE 5.1*; *Mac_PowerPC*] -Parent=IE Mac -Version=5.1 -MajorVer=5 -MinorVer=1 - -[Mozilla/?.? (compatible; MSIE 5.2*; *Mac_PowerPC*] -Parent=IE Mac -Version=5.2 -MajorVer=5 -MinorVer=2 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.0/IE 5.5 - -[AOL 9.0/IE 5.5] -Parent=DefaultProperties -Browser=AOL -Version=5.5 -MajorVer=5 -MinorVer=5 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true -AOL=true -aolVersion=9.0 -ecmascriptversion=1.3 -w3cdomversion=1.0 - -[Mozilla/?.* (?compatible; *MSIE 5.5; *AOL 9.0*)*] -Parent=AOL 9.0/IE 5.5 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Win 9x 4.90*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 95*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -CssVersion=2 -supportsCSS=true - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98; Win 9x 4.90*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 4.0*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.0*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.0*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.0*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.0*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.0*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.01*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.01*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.01*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.01*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.01*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.1*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.1*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.1*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.2*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.2*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 5.2*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 6.0*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 6.0*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 6.0*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 6.0*.NET CLR 2*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 5.5; *AOL 9.0; *Windows NT 6.0*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 5.5 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.0/IE 6.0 - -[AOL 9.0/IE 6.0] -Parent=DefaultProperties -Browser=AOL -Version=6.0 -MajorVer=6 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true -AOL=true -aolVersion=9.0 -ecmascriptversion=1.3 -w3cdomversion=1.0 - -[Mozilla/?.* (?compatible; *MSIE 6.0; *AOL 9.0*)*] -Parent=AOL 9.0/IE 6.0 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Win 9x 4.90*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 95*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -CssVersion=2 -supportsCSS=true - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98; Win 9x 4.90*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 4.0*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.0*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.01*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 6.0*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 2*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 6.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 6.0 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AOL 9.0/IE 7.0 - -[AOL 9.0/IE 7.0] -Parent=DefaultProperties -Browser=AOL -Version=7.0 -MajorVer=7 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true -AOL=true -aolVersion=9.0 - -[Mozilla/?.* (?compatible; *MSIE 7.0; *AOL 9.0*)*] -Parent=AOL 9.0/IE 7.0 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Win 9x 4.90*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 95*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -CssVersion=2 -supportsCSS=true - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98; Win 9x 4.90*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows 98; Win 9x 4.90*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 4.0*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.0*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.0*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.01*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.01*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.1*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 5.2*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 6.0*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 1*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 2*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 7.0; *AOL 9.0; *Windows NT 6.0*.NET CLR 2*.NET CLR 1*)*] -Parent=AOL 9.0/IE 7.0 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Avant Browser - -[Avant Browser] -Parent=DefaultProperties -Browser=Avant Browser -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true - -[Advanced Browser (http://www.avantbrowser.com)] -Parent=Avant Browser - -[Avant Browser*] -Parent=Avant Browser - -[Avant Browser/*] -Parent=Avant Browser - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 4.01 - -[IE 4.01] -Parent=DefaultProperties -Browser=IE -Version=4.01 -MajorVer=4 -MinorVer=01 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (?compatible; *MSIE 4.01*)*] -Parent=IE 4.01 - -[Mozilla/4.0 (compatible; MSIE 4.01; *Windows 95*)*] -Parent=IE 4.01 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 4.01; *Windows 98*)*] -Parent=IE 4.01 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 4.01; *Windows 98; Win 9x 4.90;*)*] -Parent=IE 4.01 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 4.01; *Windows NT 4.0*)*] -Parent=IE 4.01 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 4.01; *Windows NT 5.0*)*] -Parent=IE 4.01 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 4.01; *Windows NT 5.01*)*] -Parent=IE 4.01 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)] -Parent=IE 4.01 -Platform=WinNT - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 5.0 - -[IE 5.0] -Parent=DefaultProperties -Browser=IE -Version=5.0 -MajorVer=5 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (?compatible; *MSIE 5.0*)*] -Parent=IE 5.0 - -[Mozilla/4.0 (compatible; MSIE 5.0; *Windows 95*)*] -Parent=IE 5.0 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 5.0; *Windows 98*)*] -Parent=IE 5.0 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 5.0; *Windows 98; Win 9x 4.90;*)*] -Parent=IE 5.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.0; *Windows NT 4.0*)*] -Parent=IE 5.0 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 5.0; *Windows NT 5.0*)*] -Parent=IE 5.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.0; *Windows NT 5.01*)*] -Parent=IE 5.0 -Platform=Win2000 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 5.01 - -[IE 5.01] -Parent=DefaultProperties -Browser=IE -Version=5.01 -MajorVer=5 -MinorVer=01 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true - -[Mozilla/?.* (?compatible; *MSIE 5.01*)*] -Parent=IE 5.01 - -[Mozilla/4.0 (compatible; MSIE 5.01; *Windows 95*)*] -Parent=IE 5.01 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 5.01; *Windows 98*)*] -Parent=IE 5.01 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 5.01; *Windows 98; Win 9x 4.90;*)*] -Parent=IE 5.01 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.01; *Windows NT 4.0*)*] -Parent=IE 5.01 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 5.01; *Windows NT 5.0*)*] -Parent=IE 5.01 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.01; *Windows NT 5.01*)*] -Parent=IE 5.01 -Platform=Win2000 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 5.5 - -[IE 5.5] -Parent=DefaultProperties -Browser=IE -Version=5.5 -MajorVer=5 -MinorVer=5 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.2 -w3cdomversion=1.0 - -[Mozilla/?.* (?compatible; *MSIE 5.5*)*] -Parent=IE 5.5 - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows 95*)*] -Parent=IE 5.5 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows 98*)*] -Parent=IE 5.5 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows 98; Win 9x 4.90*)*] -Parent=IE 5.5 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows NT 4.0*)*] -Parent=IE 5.5 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows NT 5.0*)*] -Parent=IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows NT 5.01*)*] -Parent=IE 5.5 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows NT 5.1*)*] -Parent=IE 5.5 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 5.5; *Windows NT 5.2*)*] -Parent=IE 5.5 -Platform=Win2003 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 6.0 - -[IE 6.0] -Parent=DefaultProperties -Browser=IE -Version=6.0 -MajorVer=6 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.2 -w3cdomversion=1.0 -msdomversion=6.0 - -[Mozilla/?.* (?compatible; *MSIE 6.0*)*] -Parent=IE 6.0 - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows 95*)*] -Parent=IE 6.0 -Platform=Win95 - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows 98*)*] -Parent=IE 6.0 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows 98; Win 9x 4.90*)*] -Parent=IE 6.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 4.0*)*] -Parent=IE 6.0 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 5.0*)*] -Parent=IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 5.01*)*] -Parent=IE 6.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 5.1*)*] -Parent=IE 6.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 5.2*)*] -Parent=IE 6.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 5.2;*Win64;*)*] -Parent=IE 6.0 -Platform=WinXP -Win32=false -Win64=true - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 5.2;*WOW64;*)*] -Parent=IE 6.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 6.0; *Windows NT 6.0*)*] -Parent=IE 6.0 -Platform=WinVista - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 7.0 - -[IE 7.0] -Parent=DefaultProperties -Browser=IE -Version=7.0 -MajorVer=7 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=2 -supportsCSS=true -ecmascriptversion=1.2 -msdomversion=7.0 -w3cdomversion=1.0 - -[Mozilla/?.* (?compatible; *MSIE 7.0*)*] -Parent=IE 7.0 - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows 98*)*] -Parent=IE 7.0 -Platform=Win98 - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows 98; Win 9x 4.90;*)*] -Parent=IE 7.0 -Platform=WinME - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 4.0*)*] -Parent=IE 7.0 -Platform=WinNT - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 5.0*)*] -Parent=IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 5.01*)*] -Parent=IE 7.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 5.1*)*] -Parent=IE 7.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 5.2*)*] -Parent=IE 7.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 5.2;*Win64;*)*] -Parent=IE 7.0 -Platform=WinXP -Win32=false -Win64=true - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 5.2;*WOW64;*)*] -Parent=IE 7.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 6.0*)*] -Parent=IE 7.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 7.0; *Windows NT 6.1*)*] -Parent=IE 7.0 -Platform=Win7 - -[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; *)*] -Parent=IE 7.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IE 8.0 - -[IE 8.0] -Parent=DefaultProperties -Browser=IE -Version=8.0 -MajorVer=8 -Win32=true -Frames=true -IFrames=true -Tables=true -Cookies=true -BackgroundSounds=true -CDF=true -VBScript=true -JavaApplets=true -JavaScript=true -ActiveXControls=true -CssVersion=3 -supportsCSS=true -ecmascriptversion=1.2 -msdomversion=8.0 -w3cdomversion=1.0 - -[Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0*)*] -Parent=IE 8.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 8.0; Win32*)*] -Parent=IE 8.0 -Platform=Win32 - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0*)*] -Parent=IE 8.0 -Platform=Win2000 - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1*)*] -Parent=IE 8.0 -Platform=WinXP - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2*)*] -Parent=IE 8.0 -Platform=Win2003 - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0*)*] -Parent=IE 8.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0*)*] -Parent=IE 8.0 -Platform=WinVista - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Win64; x64; Trident/4.0*)*] -Parent=IE 8.0 -Platform=WinVista -Win32=false -Win64=true - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0*)*] -Parent=IE 8.0 -Platform=WinVista -Win64=false - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1*)*] -Parent=IE 8.0 -Platform=Win7 - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0*)*] -Parent=IE 8.0 -Platform=Win7 - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0*)*] -Parent=IE 8.0 -Platform=Win7 -Win32=false -Win64=true - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0*)*] -Parent=IE 8.0 -Platform=Win7 -Win64=false - -[Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 7.0; Trident/4.0*)*] -Parent=IE 8.0 -Platform=Win7 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Default Browser - -[*] -Browser=Default Browser -Version=0 -MajorVer=0 -MinorVer=0 -Platform=unknown -Alpha=false -Beta=false -Win16=false -Win32=false -Win64=false -Frames=true -IFrames=false -Tables=true -Cookies=false -BackgroundSounds=false -CDF=false -VBScript=false -JavaApplets=false -JavaScript=false -ActiveXControls=false -Stripper=false -isBanned=false -isMobileDevice=false -isSyndicationReader=false -Crawler=false -CssVersion=0 -supportsCSS=false -AOL=false -aolVersion=0 -AuthenticodeUpdate=0 -CSS=0 -WAP=false -netCLR=false -ClrVersion=0 -ECMAScriptVersion=0.0 -W3CDOMVersion=0.0 diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/config" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/config" deleted file mode 100644 index e005c5b..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/config" +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/mconfig/config.xml" "b/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/mconfig/config.xml" deleted file mode 100644 index a3df3b5..0000000 --- "a/\354\203\210 \355\217\264\353\215\224/MonoBleedingEdge/etc/mono/mconfig/config.xml" +++ /dev/null @@ -1,616 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
- - - - -]]> - - - - - - -
-
-
- - - - - -
- -
-
-
-
- - - -]]> - - - - - -
-
-
-
-
-
-
- - - - - -]]> - - - - - -
-
-
-
-
-
-
- - - - - - - - -]]> - - - - - -
-
-
-
-
- - - - - - - -]]> - - - - - -
-
-
-
-
- - - - -]]> - - - - - -
-
-
-
-
- - - - - - - - - - - - -]]> - - - - - -
-
-
- - - - - - - - - - - - - -]]> - - - - - -
-
-
- - - - - - - - - - - - - - - - - -]]> - - - - - - - -
-
-
- - - - - -
- -
-
-
- - - - ]]> - - - - - -
-
-
-
-
-
-
- - - - -]]> - - - - - -
-
-
-
-
-
-
- - - - -]]> - - - - - -
-
-
-
-
- - - - - - - -]]> - - - - - -
-
-
-
-
- - - - -]]> - - - - - -
-
-
- - - - - - - - - - - - - - - -]]> - - - - - -
-
-
- - - - - - - - - - - - - -]]> - - - - - - -
-
-
-
-
-
-
- - - - -]]> - - - - - -
-
-
-
-
-
-
- - - - - - - - - - - -]]> - - - - - -
-
-
-
-
- - - - -]]> - - - - - - - - ]]> - - - - - - ]]> - - - - - - ]]> - - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - - -]]> - - - - -
-
-
-
-
-
- - diff --git "a/\354\203\210 \355\217\264\353\215\224/UnityCrashHandler64.exe" "b/\354\203\210 \355\217\264\353\215\224/UnityCrashHandler64.exe" deleted file mode 100644 index c0bb48b..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/UnityCrashHandler64.exe" and /dev/null differ diff --git "a/\354\203\210 \355\217\264\353\215\224/UnityPlayer.dll" "b/\354\203\210 \355\217\264\353\215\224/UnityPlayer.dll" deleted file mode 100644 index 4cc8882..0000000 Binary files "a/\354\203\210 \355\217\264\353\215\224/UnityPlayer.dll" and /dev/null differ