Commit 40121cb0 authored by wjf's avatar wjf

l

parent 903d03ef
......@@ -53,15 +53,14 @@ export class GameGuide extends egret.DisplayObjectContainer {
show() {
var step = this.stepAll - this.stepCount;
this.drawBg(step);
//修改元素的层级,置顶,否则可能点击其他元素
var data = chapterFuns[this.thisObj.chapter];
for (var i = 0; i < data.showIndexs[step].length; i++) {
var index = data.showIndexs[step][i];
//修改元素的层级,置顶,否则可能点击其他元素,handIndexs
var handIndexs = chapterFuns[this.thisObj.chapter].handIndexs[step];
for (var i = 0; i < handIndexs.length; i++) {
var index = handIndexs[i];
var lat = this.thisObj.lattices[index]
if (lat && lat.element) this.thisObj.elementContainer.addChild(lat.element);
}
var handIndexs = chapterFuns[this.thisObj.chapter].handIndexs[step];
this.handAni(handIndexs);
this.msg.text = chapterFuns[this.thisObj.chapter].msg[step] || "";
this.msg.x = (750 - this.msg.textWidth) / 2;
......@@ -88,7 +87,7 @@ export class GameGuide extends egret.DisplayObjectContainer {
}
}
private handAni(handIndexs: number) {
private handAni(handIndexs: number[]) {
egret.Tween.removeTweens(this.hand)
var p1 = Tool.getPositionByIndex(handIndexs[0]);
var p2 = Tool.getPositionByIndex(handIndexs[1]);
......@@ -274,19 +273,23 @@ const chapterFuns = {
]
},
//棒棒糖消除
100: {
stepCount: 1,
17: {
stepCount: 2,
showIndexs: [
[4, 5, 6, 13],
[22, 31, 40, 49, 39],
[68, 49, 58, 67, 76],
],
hideIndexs: [
[5, 6],
[22, 31, 49],
[49, 58, 76],
],
handIndexs: [
[13, 4]
[39, 40],
[68, 67],
],
msg: [
"当棒棒糖移至底层时,即可移除棒棒糖"
"当棒棒糖移至底层时,即可移除棒棒糖",
"消除棒棒糖下方的动物\n就可以收集棒棒糖啦"
]
},
//笼子消除
......
......@@ -521,15 +521,6 @@ export default class MainScene extends Scene {
else if (elements[i] == 9) {
ele.setState(StateType.BUBBLE, true, 2)
}
else {
//加特效
if (Math.random() < this.chapterData.effectInitProbability) {
ele.effectType = Tool.randomT([0, 1, 2, 3])
if (ele.effectType == EffectType.MAGICLION) {
this.elementContainer.addChildAt(ele, 0);
}
}
}
break;
//棒棒糖
case 3:
......@@ -621,7 +612,7 @@ export default class MainScene extends Scene {
//初始化引导,游戏和道具
initGuide() {
//游戏引导
const gameGuideChapterNum = [1, 2, 3, 5, 8, 9, 10, 12]
const gameGuideChapterNum = [1, 2, 3, 5, 8, 9, 10, 12, 17]
if (gameGuideChapterNum.indexOf(this.chapter >> 0) > -1) {
if (!readCache(getCacheKey() + this.chapter)) {
this.gameGuide = new GameGuide(this);
......@@ -1199,9 +1190,7 @@ export default class MainScene extends Scene {
}
let latFall;
let indexFall;
let type: FallType = FallType.STRIGHT
//找联通的up,一期没有复杂的联通,所以动画不用特殊处理
if (lat.up) {
var latUnUp = this.lattices[lat.up];
......@@ -1220,6 +1209,7 @@ export default class MainScene extends Scene {
}
}
//找左上
let findLeft = () => {
if (!latFall && Tool.indexToRc(indexMy)[1] != 0) {
var latLeftUp = this.lattices[indexMy - Tool.colNum - 1];
if (Tool.judgeFall(latLeftUp)) {
......@@ -1227,7 +1217,9 @@ export default class MainScene extends Scene {
indexFall = indexMy - Tool.colNum - 1;
}
}
}
//找右上
let findRight = () => {
if (!latFall && Tool.indexToRc(indexMy)[1] != Tool.colNum - 1) {
var latRightUp = this.lattices[indexMy - Tool.colNum + 1];
if (Tool.judgeFall(latRightUp)) {
......@@ -1235,6 +1227,15 @@ export default class MainScene extends Scene {
indexFall = indexMy - Tool.colNum + 1;
}
}
}
//随机一下,先找左或先找右
if (Math.random() > 0.5) {
findLeft();
findRight();
} else {
findRight();
findLeft();
}
//如果latFall存在
if (latFall) {
//能掉落,记录元素动画
......@@ -1401,6 +1402,8 @@ export default class MainScene extends Scene {
}
//生成口定制掉落
else {
//基础元素数组
var baseElementTypes = this.chapterData.baseElementTypes.slice();
//列数
var col = Tool.indexToRc(index)[1];
//找出索引是index的数据
......@@ -1412,35 +1415,41 @@ export default class MainScene extends Scene {
let one = data.cus.shift()
if (one) {
var oneData = Tool.praseEleNumber(one);
type = oneData[0] === null ? Tool.randomT(this.chapterData.baseElementTypes) : oneData[0];
type = oneData[0] === null ? Tool.randomT(baseElementTypes) : oneData[0];
effectType = oneData[1];
}
//否则根据type来定
else {
//type没有或type长度没有,随机
if (!data.type || !data.type.length) {
type = Tool.randomT(this.chapterData.baseElementTypes)
type = Tool.randomT(baseElementTypes)
}
//type里随机。随机出来如果是0,还是随机
else {
var code = Tool.randomT(data.type);
if (code) {
var codeData = Tool.praseEleNumber(code);
type = codeData[0] === null ? Tool.randomT(this.chapterData.baseElementTypes) : codeData[0];
type = codeData[0] === null ? Tool.randomT(baseElementTypes) : codeData[0];
effectType = codeData[1];
} else {
type = Tool.randomT(this.chapterData.baseElementTypes)
type = Tool.randomT(baseElementTypes)
}
}
}
}
//随机
else {
type = Tool.randomT(this.chapterData.baseElementTypes)
type = Tool.randomT(baseElementTypes)
}
}
let ele = Tool.getElement(type);
ele.effectType = effectType;
//没有特效的时候,考虑加气泡
if (effectType == null &&
this.chapterData.bubbleProbability &&
Math.random() < this.chapterData.bubbleProbability) {
ele.setState(StateType.BUBBLE, true, type)
}
return ele;
}
......@@ -1621,16 +1630,25 @@ export default class MainScene extends Scene {
this.eliminate();
}, 200)
} else {
//执行掉落
//没有可消除元素,执行掉落
setTimeout(() => {
this.fall(() => {
//掉落后有消除
//掉落停止回调
this.fallCallback();
});
}, 200)
}
}
/**
* 掉落完后的操作
*/
fallCallback() {
//掉落后有消除,执行消除
if (this.threeMatch()) {
this.eliminate()
return
}
//鸡蛋的操作,无鸡蛋,或鸡蛋无小鸡 直接执行回调,
//有小鸡飞出要走threeMatch,有eliminate,没有直接走回调
//鸡蛋的ai操作
AiControl.ins.eggMotion(this, () => {
//如果早已通关,正在结算
if (this.hasPassed) {
......@@ -1652,12 +1670,9 @@ export default class MainScene extends Scene {
// console.log(this.hasPassed)
//如果已达目标
if (this.hasPassed) {
//通关就不允许退出按钮
this.quitBtn.touchEnabled = false;
//连消基数为1
this.commonContinuityTimes = 1;
this.effectContinuityTimes = 1;
if (movieClips["bonusTime"]) {
this.addChild(movieClips["bonusTime"])
movieClips["bonusTime"].gotoAndPlay(1, true)
......@@ -1719,9 +1734,6 @@ export default class MainScene extends Scene {
}
})
})
});
}, 200)
}
}
/**
* 特效元素的组合效果
......
This diff is collapsed.
......@@ -8,31 +8,255 @@ import { ElementType } from "../enum/ElementType";
export const Chapters2: ChapterData[] = [
//21
{
baseElementTypes: [0, 1, 2, 4],
bubbleProbability: 0,
stepCount: 30,
passTarget: {
type: PassType.ELEMENT_TARGET,
elements: [
{
type: ElementType.ICE,
count: 56
},
]
},
starScores: [4000, 8000, 12000],
map: {
lattices: [
0, 3, 3, 3, 3, 3, 3, 3, 0,
0, 3, 3, 3, 3, 3, 3, 3, 0,
0, 2, 2, 2, 2, 2, 2, 2, 0,
0, 2, 2, 2, 2, 2, 2, 2, 0,
1, 2, 2, 2, 2, 2, 2, 2, 1,
1, 2, 2, 2, 2, 2, 2, 2, 1,
1, 2, 2, 2, 2, 2, 2, 2, 1,
1, 2, 2, 2, 2, 2, 2, 2, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1,
],
elements: [
0, 1, 1, 1, 1, 1, 1, 1, 0,
0, 2, 1, 1, 1, 1, 1, 2, 0,
0, 2, 1, 1, 1, 1, 1, 2, 0,
0, 2, 2, 2, 2, 2, 2, 2, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2,
0, 0, 0, 2, 2, 2, 0, 0, 0,
0, 0, 0, 2, 2, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
],
baseElements: [
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
],
generateLats: [
{ index: 1, type: [0], cus: [] },
{ index: 2, type: [0], cus: [] },
{ index: 3, type: [0], cus: [] },
{ index: 4, type: [0], cus: [] },
{ index: 5, type: [0], cus: [] },
{ index: 6, type: [0], cus: [] },
{ index: 7, type: [0], cus: [] },
],
},
},
//22
{
baseElementTypes: [0, 1, 2, 3],
bubbleProbability: 0,
stepCount: 30,
passTarget: {
type: PassType.ELEMENT_TARGET,
elements: [
{
type: ElementType.ROCK,
count: 34
},
{
type: ElementType.CHICKEN,
count: 50
},
]
},
starScores: [4000, 8000, 12000],
map: {
lattices: [
0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1,
],
elements: [
0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0,
2, 2, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 2, 2, 2, 2, 2,
2, 2, 2, 2, 1, 2, 2, 2, 2,
2, 2, 2, 2, 2, 1, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 2
],
baseElements: [
0, 0, 31, 0, 24, 0, 31, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 20, 31, 20, 0, 0, 0,
0, 0, 0, 0, 20, 0, 0, 0, 0,
2, 2, 30, 2, 2, 2, 2, 2, 2,
2, 2, 2, 30, 2, 2, 2, 2, 2,
2, 2, 2, 2, 30, 2, 2, 2, 2,
2, 2, 2, 2, 2, 30, 2, 2, 2,
2, 2, 2, 2, 2, 2, 30, 2, 2
],
// generateLats: ,
connectedLats: [],
generateLats: [
{ index: 2, type: [0], cus: [] },
{ index: 4, type: [0], cus: [] },
{ index: 6, type: [0], cus: [] },
{ index: 36, type: [0], cus: [] },
{ index: 37, type: [0], cus: [] },
{ index: 38, type: [0], cus: [] },
{ index: 39, type: [0], cus: [] },
{ index: 41, type: [0], cus: [] },
{ index: 42, type: [0], cus: [] },
{ index: 43, type: [0], cus: [] },
{ index: 44, type: [0], cus: [] },
],
connectedLats: [[2, 21], [4, 22], [6, 23]]
},
},
//23
{
baseElementTypes: [0, 1, 2, 3, 4],
bubbleProbability: 0,
stepCount: 22,
passTarget: {
type: PassType.ELEMENT_TARGET,
elements: [
{
type: ElementType.LOLLIPOP,
count: 12
},
]
},
starScores: [4000, 8000, 12000],
map: {
lattices: [
0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 0,
0, 1, 1, 1, 1, 1, 1, 1, 0,
0, 1, 1, 1, 1, 1, 1, 1, 0,
0, 1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 0,
],
elements: [
0, 0, 3, 0, 3, 0, 3, 0, 0,
0, 0, 3, 0, 3, 0, 3, 0, 0,
0, 1, 2, 1, 2, 1, 2, 1, 0,
0, 1, 2, 1, 2, 1, 2, 1, 0,
0, 1, 2, 1, 2, 1, 2, 1, 0,
0, 1, 2, 1, 2, 1, 2, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 0,
],
baseElements: [
0, 0, 3, 0, 3, 0, 3, 0, 0,
0, 0, 3, 0, 3, 0, 3, 0, 0,
0, 10, 2, 30, 2, 20, 2, 10, 0,
0, 30, 2, 30, 2, 20, 2, 10, 0,
0, 20, 2, 20, 2, 10, 2, 30, 0,
0, 10, 2, 20, 2, 10, 2, 20, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
40, 40, 50, 40, 50, 40, 50, 40, 40,
0, 50, 40, 50, 40, 50, 40, 50, 0,
],
generateLats: [
{ index: 2, type: [0], cus: [] },
{ index: 4, type: [0], cus: [] },
{ index: 6, type: [0], cus: [] },
{ index: 63, type: [0], cus: [] },
{ index: 64, type: [0], cus: [] },
{ index: 65, type: [0], cus: [] },
{ index: 66, type: [0], cus: [] },
{ index: 67, type: [0], cus: [] },
{ index: 68, type: [0], cus: [] },
{ index: 69, type: [0], cus: [] },
{ index: 70, type: [0], cus: [] },
{ index: 71, type: [0], cus: [] },
],
recycles: [46, 47, 48, 49, 50, 51, 52]
},
},
//24
{
baseElementTypes: [0, 1, 2, 3, 4],
effectInitProbability: 0.1,
stepCount: 30,
bubbleProbability: 0,
stepCount: 27,
passTarget: {
type: PassType.SCORE_TARGET,
score: 6000,
type: PassType.ELEMENT_TARGET,
elements: [
{
type: ElementType.ICE,
count: 31
},
]
},
starScores: [4000, 8000, 12000],
map: {
lattices: [
2, 0, 2, 2, 1, 0, 3, 3, 3,
2, 0, 0, 0, 0, 0, 3, 3, 3,
0, 0, 0, 0, 0, 0, 3, 3, 3,
0, 0, 1, 1, 1, 0, 3, 3, 3,
0, 0, 1, 1, 1, 0, 3, 3, 3,
0, 0, 1, 1, 1, 0, 3, 3, 3,
0, 0, 1, 1, 1, 0, 3, 3, 3,
0, 0, 1, 1, 1, 0, 3, 3, 3,
0, 0, 1, 1, 1, 0, 3, 3, 3,
],
elements: [
1, 0, 2, 2, 2, 0, 2, 0, 2,
1, 0, 0, 0, 0, 0, 2, 0, 2,
0, 0, 0, 0, 0, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 0, 2, 0,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
],
baseElements: [
11, 0, 2, 2, 2, 0, 2, 0, 2,
23, 0, 0, 0, 0, 0, 2, 0, 2,
0, 0, 0, 0, 0, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 0, 2, 0,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
0, 0, 2, 2, 2, 0, 2, 0, 2,
],
generateLats: [
{ index: 0, type: [0], cus: [] },
{ index: 2, type: [0], cus: [33] },
{ index: 3, type: [0], cus: [21] },
{ index: 4, type: [0], cus: [] },
],
connectedLats: [[2, 29], [3, 30], [4, 31], [74, 6], [75, 7], [76, 8]]
},
starScores: [2000, 4000, 6000]
},
]
\ No newline at end of file
......@@ -5,7 +5,7 @@ import { ChapterData } from "../interface/ChapterData";
//所有的关卡
const chapters: ChapterData[] = [].concat(
Chapters1,
// Chapters2,
Chapters2,
)
/**
* 获取关卡数据,返回关卡数据
......
......@@ -4,6 +4,8 @@ import { ElementType } from "../enum/ElementType";
/**
* 关卡数据接口
* ,,注意有些带数组的数据,避免被修改,需要用slice克隆操作
* 比如基础元素类型,定制掉落数组
*/
export interface ChapterData {
/**
......@@ -12,12 +14,13 @@ export interface ChapterData {
map: MapData;
/**
* 基础元素数量3-5,种类是否随机
* 基础类型和ElementType一致 0到4
*/
baseElementTypes: ElementType[];
/**
* 初始特效生成几率5-20%
* 气泡生成概率0到1
*/
effectInitProbability: number;
bubbleProbability?: number;
/**
* 总步数
*/
......
......@@ -56,7 +56,7 @@ export interface MapData {
/**
* 棒棒糖回收口
*
* 格子索引
*/
recycles?: number[];
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ import { ChickenEgg } from "../class/ChickenEgg";
import { HatchAni } from "../anis/HatchAni";
import { PieceToEggAni } from "../anis/PieceToEggAni";
import { StateType } from "../enum/StateType";
import { BubbleAni } from "../anis/BubbleAni";
//孵鸡的数量
const chickenNum: number = 4
......@@ -38,7 +39,7 @@ export class AiControl {
/**
* 用于判断格子中
* 是否有果冻,
* 是否有鸡蛋,
* 是否有鸡蛋,所有带鸡蛋的格子的索引
* 是否有毛球,
* 是否有变色气泡,
* 必须在初始化元素后执行,每关进入游戏都会初始化
......@@ -223,9 +224,12 @@ export class AiControl {
indexs.push(i);
}
}
//没有气泡,直接回调,
if (!indexs.length) {
//标记无气泡
this.hasBubble = false;
callback();
return
}
let count = 0;
let countAll = indexs.length;
......@@ -234,16 +238,26 @@ export class AiControl {
let index = indexs[a];
let lat = thisObj.lattices[index];
let ele = lat.element;
let fromType= ele.type;
//计算type
let type: ElementType = 1;
//直接重置类型,为了后续计算,但是要隐藏,待动画播放完显示
ele.resetType(type);
ele.visible = false;
///重写
ele.getState(StateType.BUBBLE).play(type, () => {
//播完重置类型
ele.resetType(type)
//变色动画
let bubbleAni: BubbleAni = Pool.takeOut(RecoverName.JELLYSPREAD_ANI)
if (!bubbleAni) {
bubbleAni = new BubbleAni()
}
//位置信息
var p = Tool.getPositionByIndex(index);
bubbleAni.x = p[0];
bubbleAni.y = p[1];
thisObj.addChild(bubbleAni);
//播放动画
bubbleAni.play(fromType,type, () => {
//显示
ele.visible = true;
count++;
if (count == countAll) {
callback();
......@@ -339,6 +353,8 @@ function judgeSpread(index: number, lattices: Lattice[]): number {
return null
}
// function getBubble
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment