Skip to content

proposed_content

Michał Czekański edited this page Jun 13, 2021 · 10 revisions

Moduł odpowiedzialny za obsługę proponowanych karty tworzonych w Edytorze Kart.

W przyszłości moduł ten będzie odpowiedzialny także za obsługę proponowanych historii do Trybu Adventure oraz proponowanych pytań do Quizów.

Spis treści

Proponowane karty

Baza danych - Proponowane karty

Architektura bazy danych proponowanych kart czerpie wszystko z architektury bazy danych kart.

Różni się jedynie następującymi encjami:

  • Zamiast CardInfo mamy ProposedCardInfo

    ProposedCardInfo przechowuje podstawowe informacje o proponowanej karcie (nazwa, opis, ...). Ma takie same atrybuty, jak CardInfo

  • Zamiast Card mamy ProposedCard

    ProposedCard Przechowuje informacje o konkretnych poziomach danej proponowanej karty. Ma takie same atrybuty, jak Card

  • Zamiast CardLevelEffects mamy ProposedCardLevelEffects

    ProposedCardLevelEffects przechowuje informacje o efektach proponowanej karty na danym poziomie. Ma takie same atrybuty, jak CardLevelEffects

Modele

Wszystkie modele dziedziczą z bazowych abstrakcyjnych modeli zagnieżdżonych wewnątrz funkcji. By zrozumieć ten mechanizm warto przeczytać tę sekcję.

TODO: osobna sekcja z prostym przykładem tłumaczącym mechanizm

ProposedCardInfo

class ProposedCardInfo(base_card_info_factory('proposed_content/cards/images/'))

ProposedCardInfo przechowuje podstawowe informacje o zaproponowanej karcie.

Dziedziczy pola z abstrakcyjnej karty BaseCardInfo tworzonej w funkcji base_card_info_factory. (Dlaczego nie dziedziczy po prostu z BaseCardInfo? Wytłumaczone tutaj).

ProposedCard

class ProposedCard(base_card_factory(ProposedCardInfo))

ProposedCard przechowuje informacje o danym poziomie proponowanej karty.

Dziedziczy pola z abstrakcyjnej karty BaseCard tworzonej w funkcji base_card_factory. (Dlaczego nie dziedziczy po prostu z BaseCard? Wytłumaczone tutaj).

ProposedCardLevelEffects

class ProposedCardLevelEffects(base_card_level_effects_factory(ProposedCard))

ProposedCardLevelEffects przechowuje informacje o tym, jakie efekty ma proponowane karta na danym poziomie.

Dziedziczy pola z abstrakcyjnej karty BaseCardLevelEffects tworzonej w funkcji base_card_level_effects_factory. (Dlaczego nie dziedziczy po prostu z BaseCardLevelEffects? Wytłumaczone tutaj).

Serializery

Tak samo, jak modele, serializery dziedziczą z bazowych serializerów zagnieżdżonych w funkcji. Motywacją do użycia tego mechanizmu tworzenia bazowych serializerów jest ponowne użycie kodu stworzonego w module Cards.

SimpleProposedCardLevelEffectsSerializer

class SimpleProposedCardLevelEffectsSerializer(base_simple_card_lvl_efcts_ser_factory(ProposedCardLevelEffects)):

Dziedziczy wszystkie reguły serializacji z BaseSimpleCardLevelEffectsSerializer.

SimpleProposedCardSerializer

class SimpleProposedCardSerializer(base_simple_card_serializer_factory(Card, SimpleProposedCardLevelEffectsSerializer)):

Dziedziczy wszystkie reguły serializacji z BaseSimpleCardSerializer.

WholeProposedCardSerializer

class WholeProposedCardSerializer(base_whole_card_serializer_factory(ProposedCardInfo, SimpleProposedCardSerializer)):
    """
    (De)Serializes Card as a whole, packs all the information scattered across many models in one serializer.
    Information like:
    - card name
    - card image
    - card tooltip
    - all possible card's levels
    - all effects on given card's level
    etc.

    See: base_whole_card_serializer_factory
    """

Dziedziczy wszystkie reguły serializacji z BaseWholeCardSerializer.

Widoki