?? player_west.java
字號:
speedX = -speedX;
}
setCurrSequence(data.getPlayer()[20],
data.getPlayer()[21]);
mark = getFrameSequenceLength();
break;
case 1024:
case 1025:
prePlayerState = playerState;
speedX = 0;
setCurrSequence(data.getPlayer()[28],
data.getPlayer()[29]);
mark = getFrameSequenceLength();
break;
case 2048:
case 2049:
prePlayerState = playerState;
speedX = 0;
speedY = 6;
setCurrSequence(data.getPlayer()[16],
data.getPlayer()[17]);
}
}
if ((64 & playerState) != (64 & prePlayerState)
|| (isChangeDir && (64 & prePlayerState) != 0))
{
if ((64 & playerState) == 0)
{
prePlayerState -= 64;
setFinalSequence(true);
}
if ((64 & playerState) != 0)
{
if ((64 & prePlayerState) == 0)
prePlayerState += 64;
setCurrSequence(data.getPlayer()[22], data.getPlayer()[23]);
if (isChangeDir)
{
speedX = -speedX;
}
}
}
}
}
/**
* 設(shè)置動畫序列
*
* @param imgIndex
* 從第幾張圖片開始
* @param totalNum
* 連續(xù)設(shè)置多少張
*/
private void setCurrSequence(int imgIndex, int totalNum)
{
int array[] = new int[totalNum];
for (int i = 0; i < totalNum; i++)
{
if ((1 & prePlayerState) == 0)
array[i] = data.getPlayerFrame()[imgIndex + i];
else
{
array[i] = data.getPlayerFrame()[imgIndex + i] + 24;
}
}
setFrameSequence(array);
}
/**
* 處理是移動地圖還是主角動
*
* @param startX
* 左邊緣
* @param endX
* 右邊緣
*/
private void moveMap(int startX, int endX)
{
x += speedX;
WestGameCanvas.mapY -= speedY;
;
xPlayerInMap = x - WestGameCanvas.mapX;
yPlayerInMap = y - WestGameCanvas.mapY;
if (xPlayerInMap >= data.getPlayer()[30] + startX
&& xPlayerInMap <= endX)
{
x = data.getPlayer()[30];
WestGameCanvas.mapX = x - xPlayerInMap;
}
}
/**
*
* @return
*/
private void changeMapY()
{
int mapI = getMapIdI();
int mapJ = getMapIdJ();
int mapId = 0;
if (mapI >= 0 && mapI <= data.getWorld().length && mapJ >= 0
&& mapJ <= data.getWorld()[0].length)
{
mapId = data.getWorld()[mapI][mapJ];
}
switch (WestGameCanvas.gameLevel)
{
case 1:
case 4:
if ((prePlayerState & 0x800) != 0 && mapId != 9)
mapId = 12;
break;
default://2 3
if ((prePlayerState & 8) != 0 && mapId != 2)
return;
break;
}
if (mapId == 0)
{
if (isDownWorld)
{
WestGameCanvas.mapY -= 20;
}
if ((prePlayerState & 198) != 0 && cloudIdx == -1)
{
playerState = 16 + (65 & prePlayerState);
return;
}
}
else
{
switch (WestGameCanvas.gameLevel)
{
case 1:
case 4:
if((this.prePlayerState&8)>0)
return;
switch (mapId)
{
case 1://平地部分
case 2:
case 3:
WestGameCanvas.mapY = (short) (y
+ data.getPlayer()[32] - 20 - mapI
* data.getWorldMessage()[3]);
break;
case 4:
case 5:
case 6:
case 7:
case 10:
case 11:
int littleNum = ((x + data.getPlayer()[31]
- (WestGameCanvas.mapX) & 31)) >> 2;
int useId = 0;
for (int i = 0; i < data.getLittleMap().length; i++)
{
if (mapId == data.getLittleMap()[i][0])
{
useId = data.getLittleMap()[i][littleNum + 2];
if (useId == -1)
{
if (data.getLittleMap()[i][1] == 1)
{
WestGameCanvas.mapY += 32;
}
else
{
WestGameCanvas.mapY -= 32;
}
changeMapY();
return;
}
break;
}
}
WestGameCanvas.mapY = (short) (y
+ data.getPlayer()[32] - (mapI << 5) - ((useId + 1) << 2));
break;
// case 8:
case 9:
if (cloudIdx == -1)
{
playerState = 16 + (1 & prePlayerState);
WestGameCanvas.mapX += (speedX << 1);
if (data.getWorld()[mapI][mapJ + 1] == 9)
mapId = 12;
}
else
{
WestGameCanvas.mapX += speedX;
}
break;
case 8:
WestGameCanvas.mapY += 32;
changeMapY();
break;
case 12:
if ((prePlayerState & 220) != 0)
{
//無敵修改
//playerState = 32 + (1 & prePlayerState);
//WestGameCanvas.hp = 0;
}
}
if ((prePlayerState & 24) != 0 && mapId != 12)
{
playerState = 2 + (65 & prePlayerState);
}
break;
case 2:
case 3:
switch (mapId)
{
case 1://平地部分
case 7:
case 9:
WestGameCanvas.mapY = (short) (y
+ data.getPlayer()[32] - 20 - mapI
* data.getWorldMessage()[3]);
break;
case 3:
case 4:
case 5:
case 6:
int inLock = (x + data.getPlayer()[31] - WestGameCanvas.mapX) & 31;
for (int i = 0; i < data.getLittleMap().length; i++)
{
if (mapId == data.getLittleMap()[i][0])
{
int useId;
if (inLock <= data.getLittleMap()[i][1])
useId = data.getLittleMap()[i][2];
else
useId = data.getLittleMap()[i][3];
if (useId != 0)
{
if (useId == 1)
WestGameCanvas.mapY += 32;
else if (useId == -1)
WestGameCanvas.mapY -= 32;
changeMapY();
return;
}
int baseY = y + data.getPlayer()[32];
int mapH = mapI * data.getWorldMessage()[3];
switch (mapId)
{
case 3:
WestGameCanvas.mapY = baseY - mapH
- (20 + inLock);
break;
case 4:
WestGameCanvas.mapY = baseY - mapH
- (32 - (inLock - 20));
break;
case 5:
WestGameCanvas.mapY = baseY - mapH
- (inLock - 12);
break;
case 6:
WestGameCanvas.mapY = baseY - mapH
- (20 - inLock);
break;
}
break;//for
}
}
break;//case 3456
case 8:
if ((prePlayerState & 220) != 0)
{
//無敵
// playerState = 32 + (1 & prePlayerState);
//WestGameCanvas.hp = 0;
}
break;//case 8
default:
if (isDownWorld)
return;
WestGameCanvas.mapX = mapDx;
WestGameCanvas.mapY = mapDy;
x = dx;
isDownWorld = true;
changeMapY();
return;
}
if ((prePlayerState & 0x18) != 0)
playerState = 2 | (65 & prePlayerState);
break;
}
}
}
/**
* 在第幾行
*
* @return
*/
private int getMapIdI()
{
return (y + data.getPlayer()[32] - WestGameCanvas.mapY) / 32;
}
/**
* 在第幾列
*
* @return
*/
private int getMapIdJ()
{
return (x + data.getPlayer()[31] - WestGameCanvas.mapX) / 32;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -