コード例 #1
0
ファイル: counter.py プロジェクト: zhifuliu/sanguo-server
 def __init__(self, char_id, func_name):
     self.char_id = char_id
     self.func_name = func_name
     try:
         self.c = MongoCounter.objects.get(id=self.char_id)
     except DoesNotExist:
         self.c = MongoCounter(id=self.char_id)
         self.c.counter = {k: 0 for k in COUNTER.keys()}
         self.c.save()
コード例 #2
0
ファイル: counter.py プロジェクト: wyrover/sanguo-server
 def __init__(self, char_id, func_name):
     self.char_id = char_id
     self.func_name = func_name
     try:
         self.c = MongoCounter.objects.get(id=self.char_id)
     except DoesNotExist:
         self.c = MongoCounter(id=self.char_id)
         self.c.counter = {k: 0 for k in COUNTER.keys()}
         self.c.save()
コード例 #3
0
ファイル: counter.py プロジェクト: wyrover/sanguo-server
class Counter(object):
    def __init__(self, char_id, func_name):
        self.char_id = char_id
        self.func_name = func_name
        try:
            self.c = MongoCounter.objects.get(id=self.char_id)
        except DoesNotExist:
            self.c = MongoCounter(id=self.char_id)
            self.c.counter = {k: 0 for k in COUNTER.keys()}
            self.c.save()

    @property
    def max_value(self):
        value = COUNTER[self.func_name]
        if value:
            return value

        char = Char(self.char_id).mc
        vip = VIP_FUNCTION[char.vip]
        return getattr(vip, self.func_name)

    @property
    def cur_value(self):
        return self.c.counter[self.func_name]

    @property
    def remained_value(self):
        value = self.max_value - self.cur_value
        return value if value >=0 else 0

    def incr(self, value=1, dirty=False):
        if not dirty:
            if self.remained_value < value:
                raise CounterOverFlow()

        self.c.counter[self.func_name] += value
        self.c.save()

    def reset(self):
        self.c.counter[self.func_name] = 0
        self.c.counter.save()
コード例 #4
0
ファイル: counter.py プロジェクト: hx002/sanguo-server
class Counter(object):
    __slots__ = ['char_id', 'func_name', 'c']

    def __init__(self, char_id, func_name):
        self.char_id = char_id
        self.func_name = func_name
        try:
            self.c = MongoCounter.objects.get(id=self.char_id)
        except DoesNotExist:
            self.c = MongoCounter(id=self.char_id)
            self.c.counter = {k: 0 for k in COUNTER.keys()}
            self.c.save()

    @property
    def max_value(self):
        value = COUNTER[self.func_name]
        if value:
            return value

        char = Char(self.char_id).mc
        vip = VIP_FUNCTION[char.vip]
        return getattr(vip, self.func_name)

    @property
    def cur_value(self):
        value = self.c.counter.get(self.func_name, 0)
        return int(value)

    @property
    def remained_value(self):
        value = self.max_value - self.cur_value
        return value if value >= 0 else 0

    def incr(self, value=1):
        if self.remained_value < value:
            raise CounterOverFlow()

        self.c.counter[self.func_name] = self.c.counter.get(self.func_name,
                                                            0) + value
        self.c.save()

    def reset(self):
        self.c.counter[self.func_name] = 0
        self.c.save()
コード例 #5
0
ファイル: counter.py プロジェクト: yaosj/sanguo-server
class Counter(object):
    __slots__ = ['char_id', 'func_name', 'c']
    def __init__(self, char_id, func_name):
        self.char_id = char_id
        self.func_name = func_name
        try:
            self.c = MongoCounter.objects.get(id=self.char_id)
        except DoesNotExist:
            self.c = MongoCounter(id=self.char_id)
            self.c.counter = {k: 0 for k in COUNTER.keys()}
            self.c.save()

    @property
    def max_value(self):
        value = COUNTER[self.func_name]
        if value:
            return value

        return VIP(self.char_id).get_max_times(self.func_name)


    @property
    def cur_value(self):
        value = self.c.counter.get(self.func_name, 0)
        return int(value)

    @property
    def remained_value(self):
        value = self.max_value - self.cur_value
        return value if value >=0 else 0

    def incr(self, value=1):
        if self.remained_value < value:
            raise CounterOverFlow()

        self.c.counter[self.func_name] = self.c.counter.get(self.func_name, 0) + value
        self.c.save()

    def reset(self):
        self.c.counter[self.func_name] = 0
        self.c.save()