aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/hydrorollcore/rule.py
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2023-12-09 21:20:40 +0800
committer苏向夜 <fu050409@163.com>2023-12-09 22:37:38 +0800
commite6b74981c6f713fb30d9c439cce2c1226d36acb5 (patch)
tree70bc95584ca2a03468d1e85121fe8d595f83a44d /src/hydrorollcore/rule.py
parent714d69b2ba39e42285fb3604e3f24fbbd3b05582 (diff)
downloadinfini-e6b74981c6f713fb30d9c439cce2c1226d36acb5.tar.gz
infini-e6b74981c6f713fb30d9c439cce2c1226d36acb5.zip
:sparkles: 新增掷骰基类
Diffstat (limited to 'src/hydrorollcore/rule.py')
-rw-r--r--src/hydrorollcore/rule.py32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/hydrorollcore/rule.py b/src/hydrorollcore/rule.py
index a1b07cb9..7dd24836 100644
--- a/src/hydrorollcore/rule.py
+++ b/src/hydrorollcore/rule.py
@@ -13,6 +13,34 @@ class RuleLoadType(Enum):
CLASS = "class"
+class Result(metaclass=ABCMeta):
+ """规则检定结果基类"""
+
+ event: str
+
+
+class Dice(metaclass=ABCMeta):
+ """掷骰基类"""
+
+ roll_string: str
+ db: str
+ outcome: int
+
+ def __repr__(self) -> str:
+ return f'<HydroDice "{self.db.upper()}">'
+
+ def __str__(self) -> str:
+ return self.db.upper()
+
+ @abstractmethod
+ def parse(self) -> "Dice":
+ raise NotImplementedError
+
+ @abstractmethod
+ def roll(self) -> int:
+ raise NotImplementedError
+
+
class Rule(metaclass=ABCMeta):
"""规则基类"""
@@ -20,9 +48,9 @@ class Rule(metaclass=ABCMeta):
priority: int = 0
@abstractmethod
- def __init__(self):
+ def __init__(self) -> None:
raise NotImplementedError
@abstractmethod
- async def run(self):
+ def check(self) -> Result:
raise NotImplementedError