本文整理汇总了TypeScript中tree.path类的典型用法代码示例。如果您正苦于以下问题:TypeScript path类的具体用法?TypeScript path怎么用?TypeScript path使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了path类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。
示例1: function
return function() {
if (vm.mode === 'view') return;
if (!pathOps.contains(vm.path, vm.initialPath)) return;
var playedByColor = vm.node.ply % 2 === 1 ? 'white' : 'black';
if (playedByColor !== puzzle.color) return;
var nodes = vm.nodeList.slice(pathOps.size(vm.initialPath) + 1).map(function(node) {
return {
uci: node.uci,
castle: node.san.startsWith('O-O')
};
});
var progress = puzzle.lines;
for (var i in nodes) {
if (progress[nodes[i].uci]) progress = progress[nodes[i].uci];
else if (nodes[i].castle) progress = progress[altCastles[nodes[i].uci]] || 'fail';
else progress = 'fail';
if (typeof progress === 'string') break;
}
if (typeof progress === 'string') {
vm.node.puzzle = progress;
return progress;
}
var nextKey = Object.keys(progress)[0]
if (progress[nextKey] === 'win') {
vm.node.puzzle = 'win';
return 'win';
}
// from here we have a next move
vm.node.puzzle = 'good';
var opponentUci = decomposeUci(nextKey);
var promotion = opponentUci[2] ? sanToRole[opponentUci[2].toUpperCase()] : null;
var move: any = {
orig: opponentUci[0],
dest: opponentUci[1],
fen: vm.node.fen,
path: vm.path
};
if (promotion) move.promotion = promotion;
return move;
};
开发者ID:ornicar,项目名称:lila,代码行数:50,代码来源:moveTest.ts
示例2: throttle
var getDests = throttle(800, function() {
if (!vm.node.dests && treePath.contains(vm.path, vm.initialPath))
socket.sendAnaDests({
fen: vm.node.fen,
path: vm.path
});
});
开发者ID:ddugovic,项目名称:lila,代码行数:7,代码来源:ctrl.ts
示例3: h
return h('lines', nodes.map(n => {
return retroLine(ctx, n, opts) || h('line', renderMoveAndChildrenOf(ctx, n, {
parentPath: opts.parentPath,
isMainline: false,
withIndex: true,
truncate: n.comp && !treePath.contains(ctx.ctrl.path, opts.parentPath + n.id) ? 3 : undefined
}));
}));
开发者ID:ddugovic,项目名称:lila,代码行数:8,代码来源:inlineView.ts
示例4: nodeClasses
export function nodeClasses(ctx: Ctx, path: Tree.Path): NodeClasses {
return {
active: path === ctx.ctrl.path,
context_menu: path === ctx.ctrl.contextMenuPath,
current: path === ctx.currentPath,
nongame: !ctx.currentPath && !!ctx.ctrl.gamePath && treePath.contains(path, ctx.ctrl.gamePath) && path !== ctx.ctrl.gamePath
};
}
开发者ID:ddugovic,项目名称:lila,代码行数:8,代码来源:treeView.ts
示例5: nodeClasses
export function nodeClasses(c: AnalyseCtrl, path: Tree.Path): NodeClasses {
const current = (path === c.initialPath && game.playable(c.data)) || (
c.retro && c.retro.current() && c.retro.current().prev.path === path
);
return {
active: path === c.path,
context_menu: path === c.contextMenuPath,
current,
nongame: !current && !!c.gamePath && treePath.contains(path, c.gamePath) && path !== c.gamePath
};
}
开发者ID:lexisvar,项目名称:lila,代码行数:11,代码来源:treeView.ts
示例6: jumpToNext
function jumpToNext(): void {
feedback('find');
const node = findNextNode();
if (!node) {
current(null);
return redraw();
}
const fault = {
node,
path: root.mainlinePathToPly(node.ply)
};
const prevPath = treePath.init(fault.path);
const prev = {
node: root.tree.nodeAtPath(prevPath),
path: prevPath
};
const solutionNode = prev.node.children.find(n => !!n.comp);
current({
fault,
prev,
solution: {
node: solutionNode,
path: prevPath + solutionNode!.id
},
openingUcis: []
});
// fetch opening explorer moves
if (game.variant.key === 'standard' && game.division && (!game.division.middle || fault.node.ply < game.division.middle)) {
root.explorer.fetchMasterOpening(prev.node.fen).then((res: OpeningData) => {
const cur = current();
const ucis: Uci[] = [];
res!.moves.forEach(function(m) {
if (m.white + m.draws + m.black > 1) ucis.push(m.uci);
});
if (ucis.find(function(uci) {
return fault.node.uci === uci;
})) {
explorerCancelPlies.push(fault.node.ply);
setTimeout(jumpToNext, 100);
} else {
cur.openingUcis = ucis;
current(cur);
}
});
}
root.userJump(prev.path);
redraw();
};
开发者ID:ddugovic,项目名称:lila,代码行数:48,代码来源:retroCtrl.ts
示例7: checkCeval
function checkCeval() {
const node = root.node;
if (!running()) {
comment(null);
return root.redraw();
}
if (tablebaseGuaranteed(variant, node.fen) && !defined(node.tbhit)) return;
ensureCevalRunning();
if (isMyTurn()) {
const h = hinting();
if (h) {
h.uci = nodeBestUci(node) || h.uci;
root.setAutoShapes();
}
} else {
comment(null);
if (node.san && commentable(node)) {
const parentNode = root.tree.parentNode(root.path);
if (commentable(parentNode, +1)) comment(makeComment(parentNode, node, root.path));
else {
/*
* Looks like the parent node didn't get enough analysis time
* to be commentable :-/ it can happen if the player premoves
* or just makes a move before the position is sufficiently analysed.
* In this case, fall back to comparing to the position before,
* Since computer moves are supposed to preserve eval anyway.
*/
const olderNode = root.tree.parentNode(treePath.init(root.path));
if (commentable(olderNode, +1)) comment(makeComment(olderNode, node, root.path));
}
}
if (!played() && playable(node)) {
root.playUci(nodeBestUci(node)!);
played(true);
} else root.redraw();
}
};
开发者ID:ddugovic,项目名称:lila,代码行数:37,代码来源:practiceCtrl.ts
示例8: function
//.........这里部分代码省略.........
function isWriting(): boolean {
return vm.mode.write && !isGamebookPlay();
}
function makeChange(t: string, d: any): boolean {
if (isWriting()) {
send(t, d);
return true;
}
return vm.mode.sticky = false;
};
const commentForm = commentFormCtrl(ctrl);
const glyphForm = glyphFormCtrl(ctrl);
const tags = tagsCtrl(ctrl, () => data.chapter, tagTypes);
const desc = new ChapterDescriptionCtrl(data.chapter.description, t => {
data.chapter.description = t;
send("descChapter", {
id: vm.chapterId,
description: t
});
}, redraw);
function addChapterId(req) {
req.ch = vm.chapterId;
return req;
}
function isGamebookPlay() {
return data.chapter.gamebook && vm.gamebookOverride !== 'analyse' &&
(vm.gamebookOverride === 'play' || !members.canContribute());
}
if (vm.mode.sticky && !isGamebookPlay()) ctrl.userJump(data.position.path);
function configureAnalysis() {
if (ctrl.embed) return;
const canContribute = members.canContribute();
// unwrite if member lost priviledges
vm.mode.write = vm.mode.write && canContribute;
li.pubsub.emit('chat.writeable')(data.features.chat);
li.pubsub.emit('chat.permissions')({local: canContribute});
const computer: boolean = !isGamebookPlay() && !!(data.chapter.features.computer || data.chapter.practice);
if (!computer) ctrl.getCeval().enabled(false);
ctrl.getCeval().allowed(computer);
if (!data.chapter.features.explorer) ctrl.explorer.disable();
ctrl.explorer.allowed(data.chapter.features.explorer);
};
configureAnalysis();
function configurePractice() {
if (!data.chapter.practice && ctrl.practice) ctrl.togglePractice();
if (data.chapter.practice) ctrl.restartPractice();
if (practice) practice.onReload();
};
function onReload(d: ReloadData) {
const s = d.study!;
const prevPath = ctrl.path;
const sameChapter = data.chapter.id === s.chapter.id;
vm.mode.sticky = (vm.mode.sticky && s.features.sticky) || (!data.features.sticky && s.features.sticky);
if (vm.mode.sticky) vm.behind = 0;
if (vm.mode.sticky && s.position !== data.position) commentForm.close();
'position name visibility features settings chapter likes liked'.split(' ').forEach(key => {
data[key] = s[key];
});
开发者ID:lexisvar,项目名称:lila,代码行数:67,代码来源:studyCtrl.ts
示例9: make
export function make(root: AnalyseCtrl, playableDepth: () => number): PracticeCtrl {
const running = prop(true),
comment = prop<Comment | null>(null),
hovering = prop<any>(null),
hinting = prop<any>(null),
played = prop(false);
function ensureCevalRunning() {
if (!root.showComputer()) root.toggleComputer();
if (!root.ceval.enabled()) root.toggleCeval();
if (root.threatMode()) root.toggleThreatMode();
}
function commentable(node: Tree.Node, bonus: number = 0): boolean {
if (root.gameOver(node)) return true;
const ceval = node.ceval;
return ceval ? ((ceval.depth + bonus) >= 15 || (ceval.depth >= 13 && ceval.millis > 3000)) : false;
}
function playable(node: Tree.Node): boolean {
const ceval = node.ceval;
return ceval ? (
ceval.depth >= Math.min(ceval.maxDepth || 99, playableDepth()) ||
(ceval.depth >= 15 && ceval.millis > 5000)
) : false;
};
const altCastles = {
e1a1: 'e1c1',
e1h1: 'e1g1',
e8a8: 'e8c8',
e8h8: 'e8g8'
};
function makeComment(prev, node: Tree.Node, path: Tree.Path): Comment {
let verdict, best;
const over = root.gameOver(node);
if (over === 'checkmate') verdict = 'good';
else {
const nodeEval: Eval = (node.threefold || over === 'draw') ? {
cp: 0
} : (node.ceval as Eval);
const shift = -winningChances.povDiff(root.bottomColor(), nodeEval, prev.ceval);
best = prev.ceval.pvs[0].moves[0];
if (best === node.uci || best === altCastles[node.uci]) best = null;
if (!best) verdict = 'good';
else if (shift < 0.025) verdict = 'good';
else if (shift < 0.06) verdict = 'inaccuracy';
else if (shift < 0.14) verdict = 'mistake';
else verdict = 'blunder';
}
return {
prev,
node,
path,
verdict,
best: best ? {
uci: best,
san: pv2san(root.data.game.variant.key, prev.fen, false, [best])
} : undefined
};
}
function isMyTurn(): boolean {
return root.turnColor() === root.bottomColor();
};
function checkCeval() {
const node = root.node;
if (!running()) {
comment(null);
return root.redraw();
}
ensureCevalRunning();
if (isMyTurn()) {
const h = hinting();
if (h && node.ceval) {
h.uci = node.ceval.pvs[0].moves[0];
root.setAutoShapes();
}
} else {
comment(null);
if (node.san && commentable(node)) {
const parentNode = root.tree.parentNode(root.path);
if (commentable(parentNode, +1)) comment(makeComment(parentNode, node, root.path));
else {
/*
* Looks like the parent node didn't get enough analysis time
* to be commentable :-/ it can happen if the player premoves
* or just makes a move before the position is sufficiently analysed.
* In this case, fall back to comparing to the position before,
* Since computer moves are supposed to preserve eval anyway.
*/
const olderNode = root.tree.parentNode(treePath.init(root.path));
if (commentable(olderNode, +1)) comment(makeComment(olderNode, node, root.path));
//.........这里部分代码省略.........
开发者ID:lexisvar,项目名称:lila,代码行数:101,代码来源:practiceCtrl.ts
示例10: initiate
function initiate(fromData) {
data = fromData;
tree = treeBuild(treeOps.reconstruct(data.game.treeParts));
var initialPath = treePath.fromNodeList(treeOps.mainlineNodeList(tree.root));
// play | try | view
vm.mode = 'play';
vm.loading = false;
vm.round = undefined;
vm.voted = undefined;
vm.justPlayed = undefined;
vm.resultSent = false;
vm.lastFeedback = 'init';
vm.initialPath = initialPath;
vm.initialNode = tree.nodeAtPath(initialPath);
setPath(treePath.init(initialPath));
setTimeout(function() {
jump(initialPath);
redraw();
}, 500);
// just to delay button display
vm.canViewSolution = false;
setTimeout(function() {
vm.canViewSolution = true;
redraw();
}, 5000);
moveTest = moveTestBuild(vm, data.puzzle);
withGround(function(g) {
g.setAutoShapes([]);
g.setShapes([]);
showGround(g);
});
instanciateCeval();
history.replaceState(null, '', '/training/' + data.puzzle.id);
};
开发者ID:ddugovic,项目名称:lila,代码行数:40,代码来源:ctrl.ts
注:本文中的tree.path类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论