Skip to content

MDFCMod

src.templates.mdfc.MDFCMod

Bases: BaseTemplate

  • Modifier for MDFC templates.
Adds
  • MDFC Left text layer (opposing side type)
  • MDFC Right text layer (opposing side cost or land tap ability)
  • Top (arrow icon) and bottom (opposing side info) MDFC layer elements
Source code in src\templates\mdfc.py
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
class MDFCMod(BaseTemplate):
    """
    * Modifier for MDFC templates.

    Adds:
        * MDFC Left text layer (opposing side type)
        * MDFC Right text layer (opposing side cost or land tap ability)
        * Top (arrow icon) and bottom (opposing side info) MDFC layer elements
    """

    """
    * Mixin Methods
    """

    @auto_prop_cached
    def frame_layer_methods(self) -> list[Callable]:
        """Add MDFC frame layers step."""
        parent_funcs = super().frame_layer_methods
        return [*parent_funcs, self.enable_mdfc_layers] if self.is_mdfc else parent_funcs

    @auto_prop_cached
    def text_layer_methods(self) -> list[Callable]:
        """Add MDFC text layers step."""
        parent_funcs = super().text_layer_methods
        return [*parent_funcs, self.text_layers_mdfc] if self.is_mdfc else parent_funcs

    """
    * MDFC Text Layers
    """

    @auto_prop_cached
    def text_layer_mdfc_left(self) -> Optional[ArtLayer]:
        """The back face card type."""
        return psd.getLayer(LAYERS.LEFT, self.dfc_group)

    @auto_prop_cached
    def text_layer_mdfc_right(self) -> Optional[ArtLayer]:
        """The back face mana cost or land tap ability."""
        return psd.getLayer(LAYERS.RIGHT, self.dfc_group)

    """
    * MDFC Frame Layer Methods
    """

    def enable_mdfc_layers(self) -> None:
        """Enable layers that are required by modal double faced cards."""

        # MDFC elements at the top and bottom of the card
        psd.getLayer(
            self.twins,
            psd.getLayerSet(LAYERS.TOP, self.dfc_group)
        ).visible = True
        psd.getLayer(
            self.layout.other_face_twins,
            psd.getLayerSet(LAYERS.BOTTOM, self.dfc_group)
        ).visible = True

        # Front and back side layers
        if self.is_front:
            return self.enable_mdfc_layers_front()
        return self.enable_mdfc_layers_back()

    def enable_mdfc_layers_front(self) -> None:
        """Enable front side MDFC layers."""
        pass

    def enable_mdfc_layers_back(self) -> None:
        """Enable back side MDFC layers."""
        pass

    """
    * MDFC Text Layer Methods
    """

    def text_layers_mdfc(self) -> None:
        """Adds and modifies text layers required by modal double faced cards."""

        # Add mdfc text layers
        self.text.extend([
            FormattedTextField(
                layer=self.text_layer_mdfc_right,
                contents=self.layout.other_face_right),
            ScaledTextField(
                layer=self.text_layer_mdfc_left,
                contents=self.layout.other_face_left,
                reference=self.text_layer_mdfc_right)])

        # Front and back side layers
        if self.is_front:
            return self.text_layers_mdfc_front()
        return self.text_layers_mdfc_back()

    def text_layers_mdfc_front(self) -> None:
        """Add or modify front side MDFC tex layers."""
        pass

    def text_layers_mdfc_back(self) -> None:
        """Add or modify back side MDFC text layers."""
        pass

Functions

enable_mdfc_layers() -> None

Enable layers that are required by modal double faced cards.

Source code in src\templates\mdfc.py
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
def enable_mdfc_layers(self) -> None:
    """Enable layers that are required by modal double faced cards."""

    # MDFC elements at the top and bottom of the card
    psd.getLayer(
        self.twins,
        psd.getLayerSet(LAYERS.TOP, self.dfc_group)
    ).visible = True
    psd.getLayer(
        self.layout.other_face_twins,
        psd.getLayerSet(LAYERS.BOTTOM, self.dfc_group)
    ).visible = True

    # Front and back side layers
    if self.is_front:
        return self.enable_mdfc_layers_front()
    return self.enable_mdfc_layers_back()

enable_mdfc_layers_back() -> None

Enable back side MDFC layers.

Source code in src\templates\mdfc.py
86
87
88
def enable_mdfc_layers_back(self) -> None:
    """Enable back side MDFC layers."""
    pass

enable_mdfc_layers_front() -> None

Enable front side MDFC layers.

Source code in src\templates\mdfc.py
82
83
84
def enable_mdfc_layers_front(self) -> None:
    """Enable front side MDFC layers."""
    pass

frame_layer_methods() -> list[Callable]

Add MDFC frame layers step.

Source code in src\templates\mdfc.py
34
35
36
37
38
@auto_prop_cached
def frame_layer_methods(self) -> list[Callable]:
    """Add MDFC frame layers step."""
    parent_funcs = super().frame_layer_methods
    return [*parent_funcs, self.enable_mdfc_layers] if self.is_mdfc else parent_funcs

text_layer_mdfc_left() -> Optional[ArtLayer]

The back face card type.

Source code in src\templates\mdfc.py
50
51
52
53
@auto_prop_cached
def text_layer_mdfc_left(self) -> Optional[ArtLayer]:
    """The back face card type."""
    return psd.getLayer(LAYERS.LEFT, self.dfc_group)

text_layer_mdfc_right() -> Optional[ArtLayer]

The back face mana cost or land tap ability.

Source code in src\templates\mdfc.py
55
56
57
58
@auto_prop_cached
def text_layer_mdfc_right(self) -> Optional[ArtLayer]:
    """The back face mana cost or land tap ability."""
    return psd.getLayer(LAYERS.RIGHT, self.dfc_group)

text_layer_methods() -> list[Callable]

Add MDFC text layers step.

Source code in src\templates\mdfc.py
40
41
42
43
44
@auto_prop_cached
def text_layer_methods(self) -> list[Callable]:
    """Add MDFC text layers step."""
    parent_funcs = super().text_layer_methods
    return [*parent_funcs, self.text_layers_mdfc] if self.is_mdfc else parent_funcs

text_layers_mdfc() -> None

Adds and modifies text layers required by modal double faced cards.

Source code in src\templates\mdfc.py
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
def text_layers_mdfc(self) -> None:
    """Adds and modifies text layers required by modal double faced cards."""

    # Add mdfc text layers
    self.text.extend([
        FormattedTextField(
            layer=self.text_layer_mdfc_right,
            contents=self.layout.other_face_right),
        ScaledTextField(
            layer=self.text_layer_mdfc_left,
            contents=self.layout.other_face_left,
            reference=self.text_layer_mdfc_right)])

    # Front and back side layers
    if self.is_front:
        return self.text_layers_mdfc_front()
    return self.text_layers_mdfc_back()

text_layers_mdfc_back() -> None

Add or modify back side MDFC text layers.

Source code in src\templates\mdfc.py
116
117
118
def text_layers_mdfc_back(self) -> None:
    """Add or modify back side MDFC text layers."""
    pass

text_layers_mdfc_front() -> None

Add or modify front side MDFC tex layers.

Source code in src\templates\mdfc.py
112
113
114
def text_layers_mdfc_front(self) -> None:
    """Add or modify front side MDFC tex layers."""
    pass