extern void get_eq_before_resign(cubeinfo *pci, decisionData *pdd) { //const evalcontext ecResign = { FALSE, 2, FALSE, TRUE, 0.0 }; const evalcontext ecResign = { FALSE, 1, TRUE, TRUE, 0.0 }; pdd->pboard = (ConstTanBoard)ms.anBoard; pdd->pci = pci; pdd->pec = &ecResign; RunAsyncProcess((AsyncFun) asyncMoveDecisionE, pdd, "Considering resignation..."); }
static void EvalMoves(hintdata * phd, evalcontext * pec) { GList *pl; cubeinfo ci; int *ai; GList *plSelList = MoveListGetSelectionList(phd); if (!plSelList) return; GetMatchStateCubeInfo(&ci, &ms); for (pl = plSelList; pl; pl = pl->next) { scoreData sd; sd.pm = MoveListGetMove(phd, pl); sd.pci = &ci; sd.pec = pec; if (RunAsyncProcess((AsyncFun) asyncScoreMove, &sd, _("Evaluating positions...")) != 0) { MoveListFreeSelectionList(plSelList); return; } /* Calling RefreshMoveList here requires some extra work, as * it may reorder moves */ MoveListUpdate(phd); } MoveListFreeSelectionList(plSelList); MoveListClearSelection(0, 0, phd); ai = (int *) malloc(phd->pml->cMoves * sizeof(int)); RefreshMoveList(phd->pml, ai); if (phd->piHighlight && phd->pml->cMoves) *phd->piHighlight = ai[*phd->piHighlight]; free(ai); find_skills(phd->pmr, &ms, -1, -1); MoveListUpdate(phd); if (phd->hist) { SetAnnotation(pmrCurAnn); ChangeGame(NULL); } }