fixed cooperate play
This commit is contained in:
36
src/gameplay/coop/CoopAIController.h
Normal file
36
src/gameplay/coop/CoopAIController.h
Normal file
@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include "CoopGame.h"
|
||||
|
||||
// Minimal, lightweight AI driver for a CoopGame player side (left or right).
|
||||
// It chooses a target rotation/x placement using a simple board heuristic,
|
||||
// then steers the active piece toward that target at a human-like input rate.
|
||||
class CoopAIController {
|
||||
public:
|
||||
CoopAIController() = default;
|
||||
|
||||
void reset();
|
||||
|
||||
// frameMs is the frame delta in milliseconds (same unit used across the gameplay loop).
|
||||
void update(CoopGame& game, CoopGame::PlayerSide side, double frameMs);
|
||||
|
||||
private:
|
||||
uint64_t m_lastPieceSeq = 0;
|
||||
bool m_hasPlan = false;
|
||||
|
||||
int m_targetRot = 0;
|
||||
int m_targetX = 10;
|
||||
|
||||
// Input pacing (ms). These intentionally mirror the defaults used for human input.
|
||||
double m_dasMs = 170.0;
|
||||
double m_arrMs = 40.0;
|
||||
double m_rotateIntervalMs = 110.0;
|
||||
|
||||
// Internal timers/state for rate limiting.
|
||||
double m_moveTimerMs = 0.0;
|
||||
int m_moveDir = 0; // -1, 0, +1
|
||||
double m_rotateTimerMs = 0.0;
|
||||
|
||||
void computePlan(const CoopGame& game, CoopGame::PlayerSide side);
|
||||
};
|
||||
Reference in New Issue
Block a user