aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/hydrorollcore/rule.py
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2023-12-09 21:48:31 +0800
committer苏向夜 <fu050409@163.com>2023-12-09 22:37:38 +0800
commitc6a15e6f8fc96ae9fe61bbadcaca8e14af593320 (patch)
tree669b98275cdf748b68fb283f3167d3ef68c58d0d /src/hydrorollcore/rule.py
parente6b74981c6f713fb30d9c439cce2c1226d36acb5 (diff)
downloadinfini-c6a15e6f8fc96ae9fe61bbadcaca8e14af593320.tar.gz
infini-c6a15e6f8fc96ae9fe61bbadcaca8e14af593320.zip
:sparkles: 完善Result基类
Diffstat (limited to 'src/hydrorollcore/rule.py')
-rw-r--r--src/hydrorollcore/rule.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/hydrorollcore/rule.py b/src/hydrorollcore/rule.py
index 7dd24836..d2ea4a19 100644
--- a/src/hydrorollcore/rule.py
+++ b/src/hydrorollcore/rule.py
@@ -1,5 +1,6 @@
from abc import ABCMeta, abstractmethod
from enum import Enum
+from .exceptions import HydroError
__all__ = ["RuleLoadType", "Rule"]
@@ -17,6 +18,17 @@ class Result(metaclass=ABCMeta):
"""规则检定结果基类"""
event: str
+ status: bool
+ exception: HydroError | None = None
+
+ def __init__(self, event: str, status: bool, exception: HydroError | None) -> None:
+ self.event = event
+ self.status = status
+ self.exception = exception
+
+ def ok(self):
+ """规则执行期间是否产生异常"""
+ return isinstance(self.exception, HydroError)
class Dice(metaclass=ABCMeta):
@@ -32,12 +44,17 @@ class Dice(metaclass=ABCMeta):
def __str__(self) -> str:
return self.db.upper()
+ def __int__(self) -> int:
+ return self.outcome
+
@abstractmethod
def parse(self) -> "Dice":
+ """解析传入的掷骰字符串`roll_string`,返回一个`Dice`对象"""
raise NotImplementedError
@abstractmethod
def roll(self) -> int:
+ """掷骰方法,返回掷骰结果"""
raise NotImplementedError