Add a bunch of logging.
This commit is contained in:
		| @@ -463,3 +463,10 @@ func (p *Player[C]) ReportError(e error) { | ||||
| func (p *Player[C]) CanAct() bool { | ||||
| 	return p.ActionsRemaining > 0 && (len(p.Hand) > 0 || len(p.PermanentActions) > 0) | ||||
| } | ||||
|  | ||||
| func (p *Player[C]) Debug(minLevel int, msg Message) { | ||||
| 	if p.DebugLevel < minLevel { | ||||
| 		return | ||||
| 	} | ||||
| 	p.TemporaryMessages = append(p.TemporaryMessages, msg) | ||||
| } | ||||
|   | ||||
| @@ -334,18 +334,21 @@ func (r *RuleCollection[C]) Run(p *Player[C]) error { | ||||
| 		r.steps = steps | ||||
| 	} | ||||
|  | ||||
| 	p.Debug(2, Msgf("Executing steps: %v", steps)) | ||||
|  | ||||
| 	var errs ErrorCollector | ||||
| 	for _, step := range steps { | ||||
| 		stepRules := r.byStep[step] | ||||
| 		p.Rand.Shuffle(len(stepRules), func(i, j int) { | ||||
| 			stepRules[i], stepRules[j] = stepRules[j], stepRules[i] | ||||
| 		}) | ||||
| 		p.Debug(3, Msgf("Executing step %d; length %d", step, len(stepRules))) | ||||
| 		ShuffleAll(stepRules, p.Rand) | ||||
| 		var remove []RuleID | ||||
| 		halt := false | ||||
| 		for _, id := range stepRules { | ||||
| 			rule := r.rules[id] | ||||
| 			p.Debug(4, Msgf("Executing rule %x (labeled %q)", id, rule.Label())) | ||||
| 			err := rule.Enact(p) | ||||
| 			if err != nil { | ||||
| 				p.Debug(2, Msgf("Rule %x (%q): error: %v", id, rule.Label(), err)) | ||||
| 				ignore := false | ||||
| 				if errors.Is(err, ErrDeleteRule) { | ||||
| 					remove = append(remove, id) | ||||
| @@ -377,10 +380,14 @@ func (r *RuleCollection[C]) Run(p *Player[C]) error { | ||||
| 			} | ||||
| 		} | ||||
| 		if halt { | ||||
| 			return errs.Emit() | ||||
| 			ret := errs.Emit() | ||||
| 			p.Debug(2, Msgf("Rules stopping early. Result: %v", ret)) | ||||
| 			return ret | ||||
| 		} | ||||
| 	} | ||||
| 	return errs.Emit() | ||||
| 	ret := errs.Emit() | ||||
| 	p.Debug(2, Msgf("Rules complete. Result: %v", ret)) | ||||
| 	return ret | ||||
| } | ||||
|  | ||||
| func (r *RuleCollection[C]) applyDelayedUpdates() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user