fazer vitoria e derrota
This commit is contained in:
@@ -116,6 +116,7 @@ class PlacarController {
|
||||
"pts": s['pts'] ?? 0, "rbs": s['rbs'] ?? 0, "ast": s['ast'] ?? 0,
|
||||
"stl": s['stl'] ?? 0, "tov": s['tov'] ?? 0, "blk": s['blk'] ?? 0,
|
||||
"fls": s['fls'] ?? 0, "fgm": s['fgm'] ?? 0, "fga": s['fga'] ?? 0,
|
||||
"ftm": s['ftm'] ?? 0, "fta": s['fta'] ?? 0, "orb": s['orb'] ?? 0, "drb": s['drb'] ?? 0, // <-- VARIÁVEIS NOVAS AQUI!
|
||||
};
|
||||
myFouls += (s['fls'] as int? ?? 0);
|
||||
}
|
||||
@@ -135,6 +136,7 @@ class PlacarController {
|
||||
"pts": s['pts'] ?? 0, "rbs": s['rbs'] ?? 0, "ast": s['ast'] ?? 0,
|
||||
"stl": s['stl'] ?? 0, "tov": s['tov'] ?? 0, "blk": s['blk'] ?? 0,
|
||||
"fls": s['fls'] ?? 0, "fgm": s['fgm'] ?? 0, "fga": s['fga'] ?? 0,
|
||||
"ftm": s['ftm'] ?? 0, "fta": s['fta'] ?? 0, "orb": s['orb'] ?? 0, "drb": s['drb'] ?? 0, // <-- VARIÁVEIS NOVAS AQUI!
|
||||
};
|
||||
opponentFouls += (s['fls'] as int? ?? 0);
|
||||
}
|
||||
@@ -156,7 +158,12 @@ class PlacarController {
|
||||
if (playerNumbers.containsKey(name)) name = "$name (Opp)";
|
||||
playerNumbers[name] = number;
|
||||
if (dbId != null) playerDbIds[name] = dbId;
|
||||
playerStats[name] = {"pts": 0, "rbs": 0, "ast": 0, "stl": 0, "tov": 0, "blk": 0, "fls": 0, "fgm": 0, "fga": 0};
|
||||
|
||||
// 👇 ADICIONEI AS 4 VARIÁVEIS NOVAS AQUI!
|
||||
playerStats[name] = {
|
||||
"pts": 0, "rbs": 0, "ast": 0, "stl": 0, "tov": 0, "blk": 0,
|
||||
"fls": 0, "fgm": 0, "fga": 0, "ftm": 0, "fta": 0, "orb": 0, "drb": 0
|
||||
};
|
||||
|
||||
if (isMyTeam) {
|
||||
if (isCourt) myCourt.add(name); else myBench.add(name);
|
||||
@@ -182,12 +189,15 @@ class PlacarController {
|
||||
} else {
|
||||
timer.cancel();
|
||||
isRunning = false;
|
||||
if (currentQuarter < 4) {
|
||||
if (currentQuarter < 4) {
|
||||
currentQuarter++;
|
||||
duration = const Duration(minutes: 10);
|
||||
myFouls = 0;
|
||||
opponentFouls = 0;
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Período $currentQuarter iniciado. Faltas resetadas!'), backgroundColor: Colors.blue));
|
||||
// 👇 ESTAS DUAS LINHAS ZERAM OS TIMEOUTS NO NOVO PERÍODO
|
||||
myTimeoutsUsed = 0;
|
||||
opponentTimeoutsUsed = 0;
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Período $currentQuarter iniciado. Faltas e Timeouts resetados!'), backgroundColor: Colors.blue));
|
||||
} else {
|
||||
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('FIM DO JOGO!'), backgroundColor: Colors.red));
|
||||
}
|
||||
@@ -256,27 +266,24 @@ class PlacarController {
|
||||
onUpdate();
|
||||
}
|
||||
|
||||
// AGORA RECEBE CONTEXT E SIZE PARA A MATEMÁTICA
|
||||
void registerShotLocation(BuildContext context, Offset position, Size size) {
|
||||
if (pendingAction == null || pendingPlayer == null) return;
|
||||
|
||||
bool is3Pt = pendingAction!.contains("_3");
|
||||
bool is2Pt = pendingAction!.contains("_2");
|
||||
|
||||
// Validação
|
||||
if (is3Pt || is2Pt) {
|
||||
bool isValid = _validateShotZone(position, size, is3Pt);
|
||||
|
||||
if (!isValid) {
|
||||
// Se a validação falhar, fudeo. Bloqueia.
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('🛑 Vai dar merda! Local de lançamento incompatível com a pontuação.'),
|
||||
content: Text('🛑Local de lançamento incompatível com a pontuação.'),
|
||||
backgroundColor: Colors.red,
|
||||
duration: Duration(seconds: 2),
|
||||
)
|
||||
);
|
||||
return; // Aborta!
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,22 +297,17 @@ class PlacarController {
|
||||
onUpdate();
|
||||
}
|
||||
|
||||
// A MATEMÁTICA DA ZONA
|
||||
bool _validateShotZone(Offset pos, Size size, bool is3Pt) {
|
||||
double w = size.width;
|
||||
double h = size.height;
|
||||
|
||||
// Ajusta o 0.12 e 0.88 se os teus cestos na imagem estiverem mais para o lado
|
||||
Offset leftHoop = Offset(w * 0.12, h * 0.5);
|
||||
Offset rightHoop = Offset(w * 0.88, h * 0.5);
|
||||
|
||||
// O raio da linha de 3 pontos (Brinca com este 0.28 se a área ficar muito grande ou pequena)
|
||||
double threePointRadius = w * 0.28;
|
||||
|
||||
Offset activeHoop = pos.dx < w / 2 ? leftHoop : rightHoop;
|
||||
double distanceToHoop = (pos - activeHoop).distance;
|
||||
|
||||
// Zonas de canto (onde a linha de 3 é reta)
|
||||
bool isCorner3 = (pos.dy < h * 0.15 || pos.dy > h * 0.85) &&
|
||||
(pos.dx < w * 0.20 || pos.dx > w * 0.80);
|
||||
|
||||
@@ -333,6 +335,7 @@ class PlacarController {
|
||||
if (isOpponent) opponentScore += pts; else myScore += pts;
|
||||
stats["pts"] = stats["pts"]! + pts;
|
||||
if (pts == 2 || pts == 3) { stats["fgm"] = stats["fgm"]! + 1; stats["fga"] = stats["fga"]! + 1; }
|
||||
if (pts == 1) { stats["ftm"] = stats["ftm"]! + 1; stats["fta"] = stats["fta"]! + 1; } // ADICIONADO LANCE LIVRE (FTM/FTA)
|
||||
}
|
||||
else if (action.startsWith("sub_pts_")) {
|
||||
int pts = int.parse(action.split("_").last);
|
||||
@@ -343,9 +346,15 @@ class PlacarController {
|
||||
if (stats["fgm"]! > 0) stats["fgm"] = stats["fgm"]! - 1;
|
||||
if (stats["fga"]! > 0) stats["fga"] = stats["fga"]! - 1;
|
||||
}
|
||||
if (pts == 1) { // ADICIONADO SUBTRAÇÃO LANCE LIVRE
|
||||
if (stats["ftm"]! > 0) stats["ftm"] = stats["ftm"]! - 1;
|
||||
if (stats["fta"]! > 0) stats["fta"] = stats["fta"]! - 1;
|
||||
}
|
||||
}
|
||||
else if (action == "miss_1") { stats["fta"] = stats["fta"]! + 1; } // ADICIONADO BOTAO M1
|
||||
else if (action == "miss_2" || action == "miss_3") { stats["fga"] = stats["fga"]! + 1; }
|
||||
else if (action == "add_rbs") { stats["rbs"] = stats["rbs"]! + 1; }
|
||||
else if (action == "add_orb") { stats["orb"] = stats["orb"]! + 1; stats["rbs"] = stats["rbs"]! + 1; } // SEPARAÇÃO ORB
|
||||
else if (action == "add_drb") { stats["drb"] = stats["drb"]! + 1; stats["rbs"] = stats["rbs"]! + 1; } // SEPARAÇÃO DRB
|
||||
else if (action == "add_ast") { stats["ast"] = stats["ast"]! + 1; }
|
||||
else if (action == "add_stl") { stats["stl"] = stats["stl"]! + 1; }
|
||||
else if (action == "add_tov") { stats["tov"] = stats["tov"]! + 1; }
|
||||
@@ -399,6 +408,10 @@ class PlacarController {
|
||||
'fls': stats['fls'],
|
||||
'fgm': stats['fgm'],
|
||||
'fga': stats['fga'],
|
||||
'ftm': stats['ftm'], // <-- GRAVAR NA BD
|
||||
'fta': stats['fta'], // <-- GRAVAR NA BD
|
||||
'orb': stats['orb'], // <-- GRAVAR NA BD
|
||||
'drb': stats['drb'], // <-- GRAVAR NA BD
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user