Skip to content

BoosterCraft/BoosterCraftApp

Repository files navigation

BoosterCraft 🎴

Симулятор вскрытия бустеров Magic: The Gathering для iOS

BoosterCraft - это iOS-приложение-симулятор вскрытия бустеров, в частности, коллекционной карточной игры Magic: The Gathering. Приложение предоставляет пользователям возможность погрузиться в атмосферу открытия настоящих бустеров, но в цифровом формате.

✨ Основные возможности

🏪 Магазин бустеров

  • Приложение предлагает бустеры из последних 5 изданий Magic: The Gathering:
    • Final Fantasy (TDM)
    • Tarkir: Dragonstorm (TDR)
    • AETHERDRIFT (AED)
    • Duskmourn: House of Horror (DSK)
    • Bloomburrow (BLB)
  • Каждый бустер содержит 12 случайных карт, соответствующих реальному составу оригинальных бустеров
  • Цены карт берутся из актуальной базы данных Scryfall API
  • Поддерживаются два типа бустеров: Play и Collector

💰 Система валюты

  • Внутриигровая валюта (монеты) для покупки бустеров
  • Получение валюты через ежедневные награды (+20 монет в день)
  • Продажа карт из коллекции для получения дополнительной валюты
  • Полная история транзакций с детализацией операций

🎴 Открытие бустеров

  • Интерактивный процесс открытия бустера с анимациями
  • Возможность выборочной продажи карт сразу после открытия
  • Опции: "Продать все", "Продать выбранные", "Оставить все"
  • Реальные изображения карт, загружаемые из Scryfall API

📚 Коллекция карт

  • Автоматическое добавление не проданных карт в коллекцию
  • Группировка карт по сетам (изданиям)
  • Возможность продажи карт из коллекции через быстрое нажатие
  • Отображение количества копий каждой карты

🎁 Ежедневные награды

  • Система ежедневных наград с защитой от повторного получения
  • Автоматическое обновление доступности награды каждый день
  • Интеграция с системой транзакций

🔧 Технические особенности

Архитектура

  • Язык: Swift 5.0+
  • Платформа: iOS 15.0+
  • Архитектура: MVC (Model-View-Controller)
  • UI Framework: UIKit с программатическим созданием интерфейса

Интеграции

  • Scryfall API: Получение актуальных данных о картах, сетах и ценах
  • UserDefaults: Локальное хранение коллекции и баланса пользователя
  • NotificationCenter: Система уведомлений для обновления UI

Основные компоненты

Модели данных

// Card.swift - Модель карты MTG
struct Card: Codable, Equatable {
    let id: String
    let name: String
    let type_line: String?
    let mana_cost: String?
    let oracle_text: String?
    let rarity: String?
    let set: String?
    let set_name: String?
    let image_url: String?
    let price_usd: String?
    var count: Int
}

// ScryfallSet.swift - Модель сета MTG
struct ScryfallSet: Codable {
    let code: String
    let name: String
    let set_type: String
    let card_count: Int
    let released_at: String
    let icon_svg_uri: String?
}

Сетевой слой

  • ScryfallServiceManager: Синглтон для работы с Scryfall API
  • Асинхронная загрузка карт и изображений
  • Обработка пагинации для больших наборов данных
  • Кэширование изображений карт

Управление данными

  • UserDataManager: Централизованное управление пользовательскими данными
  • Локальное хранение коллекции карт
  • Управление балансом и транзакциями
  • Сохранение неоткрытых бустеров

UI/UX особенности

  • Программатический UI: Все интерфейсы создаются кодом без Storyboard
  • Адаптивный дизайн: Поддержка различных размеров экранов
  • Кастомные шрифты: PirataOne-Regular, Bungee-Regular
  • Анимации: Плавные переходы и интерактивные элементы
  • Цветовая схема: Темная тема с акцентными цветами для каждого сета

Структура проекта

BlackMagic/
├── Controllers/           # Контроллеры экранов
│   ├── MainViewController.swift
│   ├── BoosterOpenedViewController.swift
│   ├── MyCollectionViewController.swift
│   ├── DailyRewardViewController.swift
│   └── ScryfallServiceManager.swift
├── Models/               # Модели данных
│   ├── Card.swift
│   ├── ScryfallSet.swift
│   ├── UserCollection.swift
│   ├── Transaction.swift
│   └── UserDataManager.swift
├── Views/                # Кастомные UI компоненты
│   ├── BoosterCardView.swift
│   ├── CardCell.swift
│   ├── BalanceButton.swift
│   └── OpenBoosterCardView.swift
├── Extensions/           # Расширения UIKit
│   ├── UIColor+normalRGBInit.swift
│   ├── UIImage+load.swift
│   ├── UIView+Pin.swift
│   └── UIViewController+setupNavigationBar.swift
└── Assets.xcassets/      # Ресурсы приложения

API интеграция

  • Scryfall API: Основной источник данных о картах MTG
  • Endpoints:
    • GET /cards/named?fuzzy={name} - поиск карты по имени
    • GET /sets - получение всех сетов
    • GET /cards/search?q=e:{setCode} - карты конкретного сета
  • Обработка ошибок: Graceful degradation при сбоях сети
  • Rate limiting: Соблюдение лимитов Scryfall API

Локальное хранение

  • UserDefaults: Баланс, коллекция карт, транзакции
  • Структуры данных:
    • UserCollection: Коллекция карт пользователя
    • Transaction: История транзакций
    • UserBooster: Неоткрытые бустеры

🚀 Установка и запуск

Требования

  • Xcode 12.0+
  • iOS 14.0+
  • Swift 5.0+

Запуск проекта

  1. Клонируйте репозиторий
  2. Откройте проект в Xcode
  3. Выберите симулятор или устройство
  4. Нажмите Run (⌘+R)

👥 Команда разработчиков

Проект «BoosterCraft»

  • Лабус Мирон Антонович
  • Сергеев Алексей Алексеевич
  • Пономаренко Егор Сергеевич

🤝 Вклад в проект

Приложение создано для любителей Magic: The Gathering, которые хотят испытать эмоции от открытия бустеров без необходимости тратить реальные деньги, при этом сохраняя аутентичность процесса благодаря использованию реальных данных о картах и их стоимости.

📄 Лицензия

Этот проект создан в образовательных целях и не связан с Wizards of the Coast или Scryfall.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors