IL2HorusTeam/il2fb-ds-config

View on GitHub
il2fb/config/ds/schemas/anticheat/__init__.py

Summary

Maintainability
A
45 mins
Test Coverage
# coding: utf-8

import zope.interface

from schematics.models import Model
from schematics.types import IntType
from schematics.types.compound import ModelType

from ..interfaces import INISerializable, DefaultProvider
from ..helpers import field_from_ini, field_to_ini
from .lags import Lags
from .speedhack import Speedhack


@zope.interface.implementer(INISerializable)
@zope.interface.implementer(DefaultProvider)
class Anticheat(Model):
    version_check_level = IntType(
        min_value=0,
        max_value=2,
        default=0,
        required=True,
    )
    lags = ModelType(
        model_spec=Lags,
        required=True,
    )
    speedhack = ModelType(
        model_spec=Speedhack,
        required=True,
    )

    @classmethod
    def from_ini(cls, ini):
        return cls({
            'version_check_level': field_from_ini(
                cls.version_check_level, ini,
                'NET', 'checkRuntime',
            ),
            'lags': Lags.from_ini(ini),
            'speedhack': Speedhack.from_ini(ini),
        })

    def to_ini(self, ini):
        field_to_ini(self.version_check_level, ini, 'NET', 'checkRuntime')
        self.lags.to_ini(ini)
        self.speedhack.to_ini(ini)

    @classmethod
    def default(cls):
        return cls({
            'version_check_level': cls.version_check_level.default,
            'lags': Lags.default(),
            'speedhack': Speedhack.default(),
        })