📄 game.java
字号:
m_iTippOffDelay = 3000;
}
void SwitchOffenseTeam()
{
int iTeamOffset;
if(GetState()!= 6)
{
for(int i = 0; i < 10; i++)
{
m_pPlayers[i].SetPassTarget(false, null);
}
}
if(m_iOffenseTeamIndex != - 99)
{
iTeamOffset = GetTeamOffset(m_iOffenseTeamIndex);
for(int i = iTeamOffset; i < iTeamOffset + 5; i++)
{
m_pPlayers[i].ResetPlay();
m_pPlayers[i].SetTeamHasBall(false);
m_pPlayers[i].SetHasBall(false);
}
m_iOffenseDir = -m_iOffenseDir;
SetCameraDir(m_iOffenseDir);
m_iOffenseTeamIndex = GetOffenseTeam(m_iOffenseDir);
}
else
{
m_iOffenseTeamIndex = GetControlTeam();
if(m_iOffenseTeamIndex == - 99)
return;
m_iOffenseDir = GetTeamOffenseDir(m_iOffenseTeamIndex);
}
SetControlTeam(m_iOffenseTeamIndex);
if(GetPosY()* m_iOffenseDir < 0)
m_bBallBackCourt = true;
iTeamOffset = GetTeamOffset(m_iOffenseTeamIndex);
for(int j = iTeamOffset; j < iTeamOffset + 5; j++)
{
m_pPlayers[j].ResetPlay();
m_pPlayers[j].SetTeamHasBall(true);
}
}
public void ClrInput()
{
m_iLeft = 0;
m_iUpLeft = 0;
m_iUp = 0;
m_iUpRight = 0;
m_iRight = 0;
m_iDownRight = 0;
m_iDown = 0;
m_iDownLeft = 0;
m_iDblTapTime = 0;
m_iDblTapDir = 0;
m_iDblTap = 0;
m_iMoveMomentum = 0;
}
int GetKeyDir(int iKey)
{
switch(iKey)
{
case Canvas.KEY_NUM4 :
case Canvas.LEFT :
return(0);
case Canvas.KEY_NUM6 :
case Canvas.RIGHT :
return(4);
case Canvas.KEY_NUM2 :
case Canvas.UP :
return(2);
case Canvas.KEY_NUM8 :
case Canvas.DOWN :
return(6);
case Canvas.KEY_NUM3 :
return(3);
case Canvas.KEY_NUM1 :
return(1);
case Canvas.KEY_NUM7 :
return(7);
case Canvas.KEY_NUM9 :
default :
return(5);
}
}
void CreateOverlay(int iOverlay)
{
if(Basketball.hMenuWnd != null)
Basketball.hMenuWnd.endDialog();
Basketball.hMenuWnd = null;
Basketball.hMenuWnd = new FrontEnd(iOverlay);
}
long m_iFullSecTime = 0;
int m_iFrameCount = 0;
int m_iFrameRate = 0;
public void paint(Graphics g)
{
long iCurTime = System.currentTimeMillis();
long iDeltaT = iCurTime - m_iLastTime;
m_iLastTime = iCurTime;
if(m_iPaintFlags != 0)
{
update((int)iDeltaT, 125);
try
{
Render(g);
RenderObjs(g);
PaintScore(g);
PaintClock(g);
PaintAlerts(g);
PaintOffscreenIndicators(g);
PaintQtr(g);
g.setClip(0, 208 - 10 - 8, 176, 10 + 8);
g.setColor(0x000000);
g.fillRect(0, 208 - 10 - 8, 176, 10 + 8);
PaintCommentary(g);
}
catch(Exception e)
{
}
}
}
void PaintQtr(Graphics g)
{
int iPosX =(176 / 2)-(32 / 2);
int iPosY = 9+5;
g.setClip(iPosX, iPosY, 32, 2);
g.drawImage(m_pImgGameRes, iPosX - 26, iPosY - 38 - 9, 0);
iPosX = 176 / 2 - 10;
iPosY = 11+5;
int iDestX = 20;
int iDestY = 6;
g.setColor(0);
g.setClip(iPosX, iPosY, iDestX, iDestY);
g.fillRect(iPosX, iPosY, iDestX, iDestY);
for(int i = 0; i < m_iQtrNum; i++)
{
g.setColor(0xffffff);
g.fillRect(iPosX + 1 +(i * 5), iPosY + 1, 3, 4);
}
for(int j = m_iQtrNum; j < 4; j++)
{
g.setColor(m_iHomeTeamColor);
g.fillRect(iPosX + 1 +(j * 5), iPosY + 1, 3, 4);
}
if(m_iQtrNum > 4)
{
g.setColor(m_iHomeTeamColor);
g.setClip(iPosX + 20, iPosY - 2, 25, 8);
g.fillRect(iPosX + 20, iPosY - 2, 25, 8);
String pTmp;
pTmp = "" +(m_iQtrNum - 4)+ " OT";
m_pFont.stringChar(g, iPosX + 20, iPosY - 2, pTmp, - 1, 0);
}
}
void PaintAlerts(Graphics g)
{
if(ChkShtClockCondition()== true && m_iShotSecs < 11000 && m_iQtrTime > m_iShotSecs)
{
int iSecs = m_iShotSecs / 1000;
PaintAlertSecs(g, iSecs);
}
else if(ChkInbndClockCondition()== true && m_iInbndSecs < 3000)
{
int iSecs = m_iInbndSecs / 1000;
PaintAlertSecs(g, iSecs);
}
else if(ChkHfcrtClockCondition()== true && m_iBkCrtSecs < 4000)
{
int iSecs = m_iBkCrtSecs / 1000;
PaintAlertSecs(g, iSecs);
}
else if(ChkGameClockCondition()== true && m_iQtrTime < 10000)
{
int iSecs = m_iQtrTime / 1000;
iSecs =(iSecs > 0)? iSecs : 0;
PaintAlertSecs(g, iSecs);
}
}
void PaintClock(Graphics g)
{
int iPosX =(176 / 2)-(32 / 2);
int iPosY = 0+5;
g.setColor(0);
g.fillRect(iPosX, iPosY-5, 32, 5);
g.setClip(iPosX, iPosY, 32, 9);
g.drawImage(m_pImgGameRes, iPosX - 26, iPosY - 38, 0);
int iTotalMins = m_iQtrTime / 60000;
int iSecs1 = m_iQtrSecs / 10;
int iSecs2 = m_iQtrSecs % 10;
if(iSecs1 < 0)
iSecs1 = 0;
if(iSecs2 < 0)
iSecs2 = 0;
g.setClip(0, 0, 176, 208);
String pTmp;
pTmp = "" + iTotalMins;
m_pFont.stringChar(g, 176 / 2 - 2, 2, pTmp, - 1, 0x04);
pTmp = ":" + iSecs1 + iSecs2;
m_pFont.stringChar(g, 176 / 2 - 2, 2, pTmp, - 1, 0);
}
void PaintAlertSecs(Graphics g, int iSecs)
{
g.setColor(0xFF0000);
g.setClip(176 / 2 - 4-3, 17+10-1, 8+5, 7+6);
g.fillRect(176 / 2 - 4-3, 17+10-1, 8+5, 7+6);
String pTmp = "" + iSecs;
g.setClip(0, 0, 176, 208);
int iPosX = 176 / 2 - 1;
m_pFont.stringChar(g, iPosX, 17+10, pTmp, - 1, 0x02);
}
void PaintScore(Graphics g)
{
String pTmp;
g.setClip(0, 0, 176, 9+5);//050426 +5
g.setColor(m_iHomeTeamColor);
g.fillRect(0, 0, 176, 9+5);//050426 +5
m_pFont.stringChar(g,((176 / 2)+ 15), 1, GetNick(m_iHomeTeamIndex), - 1, 0);
pTmp = "" + GetTotalScore(m_iHomeTeamIndex);
int xOff = 4;
m_pFont.stringChar(g,((176 / 2)+ 15)+ 45 + xOff, 1, pTmp, - 1, 0x04);
m_pFont.stringChar(g, 0, 1, GetNick(m_iAwayTeamIndex), - 1, 0);
pTmp = "" + GetTotalScore(m_iAwayTeamIndex);
m_pFont.stringChar(g, 45 + xOff, 1, pTmp, - 1, 0x04);
}
void PaintOffscreenIndicators(Graphics g)
{
if(m_bDrawOffscreenIndicators == false)
return;
else
{
int iPosX = m_iIndicatorX;
int iPosY = m_iIndicatorY;
int iSrcX = OFFSCREENIND_FRAMES[m_iIndicatorDir][0];
int iSrcY = OFFSCREENIND_FRAMES[m_iIndicatorDir][1];
int iDestX = OFFSCREENIND_FRAMES[m_iIndicatorDir][2];
int iDestY = OFFSCREENIND_FRAMES[m_iIndicatorDir][3];
if(iPosX > 0)
iPosX -= iDestX;
if(iPosY >(11 - 2))
iPosY -= iDestY;
g.setClip(0,(11 - 2), 176,((208 -(11 - 2))-((Basketball.hGameWnd.m_iCommentaryTime > 0)? 10 : 0)));
g.clipRect(iPosX, iPosY, iDestX, iDestY);
g.drawImage(m_pImgGameRes, iPosX - iSrcX, iPosY - iSrcY, 0);
}
}
void PaintCommentary(Graphics g)
{
if(m_iCommentaryTime <= 0)
return;
else if(m_iCommentaryTime + 250 >= 2000)
m_iCommentaryOffsetX = 6;
g.setClip(0, 208 - 10-5, 176, 10+5);
if(m_bCenterCommentary == false)
{
g.setColor(0x000000);
g.fillRect(0, 208 - 10-5, m_iCommentaryOffsetX, 10+5);
g.drawImage(m_pImgCommentary, m_iCommentaryOffsetX, 208 - 10-5, 0);
}
else
{
g.drawImage(m_pImgCommentary, 0, 208 - 10-5, 0);
}
}
void RenderObjs(Graphics g)
{
SortObjsY();
int iOffsetX = GetOffsetX();
int iOffsetY = GetOffsetY();
for(int i = 0; i < 17; i++)
{
m_pObjList[m_pDrawOrder[i]].RenderIcon(g, iOffsetX, iOffsetY);
}
for(int j = 0; j < 17; j++)
{
m_pObjList[m_pDrawOrder[j]].Render(g, iOffsetX, iOffsetY);
m_pObjList[m_pDrawOrder[j]].RenderText(g, m_pFont, iOffsetX, iOffsetY);
}
}
boolean StartSaveGame()
{
if(win.BufferOpen("savegame.dat", false)== false)
{
if(win.BufferOpen("savegame.dat", true)== false)
return false;
}
Basketball.bSavedGames = false;
BufferSeek(0, 2155);
try
{
Basketball.bSavedGames = false;
ByteArrayOutputStream pBS = new ByteArrayOutputStream(1);
DataOutputStream pDO = new DataOutputStream(pBS);
pDO.writeBoolean(Basketball.bSavedGames);
BufferWrite(pBS.toByteArray(), 1);
pDO.close();
}
catch(Exception e)
{
BufferClose();
return false;
}
BufferSeek(0, 0);
Basketball.iSaveState = 0;
return true;
}
boolean SaveGameUpdate()
{
if(Basketball.iSaveState == 0)
{
if(SaveGameState()== false)
{
}
}
else if(Basketball.iSaveState == 1)
{
if(SaveBallState()== false)
{
}
}
else if(Basketball.iSaveState == 2)
{
if(SaveTeamState(m_iHomeTeamIndex)== false)
{
}
}
else if(Basketball.iSaveState == 3)
{
if(SaveTeamState(m_iAwayTeamIndex)== false)
{
}
}
else
{
if(m_pPlayers[Basketball.iSaveState - 4].SavePlayerState()== false)
{
}
}
Basketball.iSaveState++;
return true;
}
void EndSaveGame()
{
try
{
Basketball.bSavedGames = true;
ByteArrayOutputStream pBS = new ByteArrayOutputStream(1);
DataOutputStream pDO = new DataOutputStream(pBS);
pDO.writeBoolean(Basketball.bSavedGames);
BufferWrite(pBS.toByteArray(), 1);
pDO.close();
}
catch(Exception e)
{
}
BufferClose();
}
boolean SaveGameState()
{
try
{
ByteArrayOutputStream pBS = new ByteArrayOutputStream(154);
DataOutputStream pDO = new DataOutputStream(pBS);
pDO.writeInt(Basketball.iHomeTeam);
pDO.writeInt(Basketball.iAwayTeam);
pDO.writeBoolean(m_bUserHome);
pDO.writeBoolean(m_bDrawOffscreenIndicators);
pDO.writeBoolean(m_bUserLock);
pDO.writeBoolean(m_bPause);
pDO.writeBoolean(m_bBallOB);
pDO.writeBoolean(m_bBallBackCourt);
pDO.writeInt(m_iTippOffDelay);
pDO.writeInt(m_iTeamThatWonTippOff);
pDO.writeInt(m_iIndicatorX);
pDO.writeInt(m_iIndicatorY);
pDO.writeInt(m_iIndicatorDir);
pDO.writeInt(m_iRimAnim);
pDO.writeInt(m_iRimState);
pDO.writeInt(m_iCommentaryTime);
pDO.writeInt(m_iQtrNum);
pDO.writeInt(m_iQtrTime);
pDO.writeInt(m_iQtrSecs);
pDO.writeInt(m_iShotSecs);
pDO.writeInt(m_iBkCrtSecs);
pDO.writeInt(m_iInbndSecs);
pDO.writeInt(m_iLaneSecs);
pDO.writeInt(m_iPaintFlags);
pDO.writeInt(m_iOffenseDir);
pDO.writeInt(m_iHomeScore);
pDO.writeInt(m_iAwayScore);
char pChar[]= m_pCommentaryMsg.toCharArray();
byte pBuf[]= new byte[64];
for(int i = 0; i < m_pCommentaryMsg.length(); i++)
pBuf[i]=(byte)pChar[i];
pDO.write(pBuf, 0, 64);
win.BufferWrite(pBS.toByteArray(), 154);
pDO.close();
}
catch(Exception e)
{
return false;
}
return true;
}
boolean StartLoadGame()
{
if(win.BufferOpen("savegame.dat", false)== false)
{
if(win.BufferOpen("savegame.dat", true)== false)
return false;
}
m_iOffsetY = 0;
BufferSeek(0, 0);
return true;
}
boolean LoadGameUpdate()
{
if(Basketball.iSaveState == 1)
{
if(LoadGameState()== false)
{
}
}
else if(Basketball.iSaveState == 2)
{
if(LoadBallState()== false)
{
}
}
else if(Basketball.iSaveState == 3)
{
if(LoadTeamState(m_iHomeTeamIndex)== false)
{
}
}
else if(Basketball.iSaveState == 4)
{
if(LoadTeamState(m_iAwayTeamIndex)== false)
{
}
}
else
{
if(m_pPlayers[Basketball.iSaveState - 5].LoadPlayerState()== false)
{
}
}
Basketball.iSaveState++;
return true;
}
void EndLoadGame()
{
BufferClose();;
SetGamePtrs();
}
void SetGamePtrs()
{
m_iOffenseTeamIndex = m_iHomeTeamIndex;
TouchBall(GetPlayer(m_iHomeTeamIndex, 0));
m_pUserPlayer = m_pPlayers[GetTeamOffset(m_iUserTeamIndex)];
for(int i = 0; i < 10; i++)
{
if(m_pPlayers[i].GetAnimState()== 8)
{
for(int j = 0; j < 10; j++)
{
if(m_pPlayers[j].ChkPassTarget()== true)
m_pPlayers[i].SetTargetForPass(m_pPlayers[j]);
}
}
if(m_pPlayers[i].GetHasBall()== true)
{
SetController(m_pPlayers[i]);
m_iOffenseTeamIndex = m_pPlayers[i].GetTeam();
}
}
m_bShotGood = false;
m_bBallBackCourt = true;
}
boolean LoadGameState()
{
try
{
byte pBuf[]= new byte[154];
win.BufferRead(pBuf, 154);
ByteArrayInputStream pBS = new ByteArrayInputStream(pBuf);
DataInputStream pDI = new DataInputStream(pBS);
Basketball.iHomeTeam = pDI.readInt();
Basketball.iAwayTeam = pDI.readInt();
m_bUserHome = pDI.readBoolean();
m_bDrawOffscreenIndicators = pDI.readBoolean();
m_bUserLock = pDI.readBoolean();
m_bPause = pDI.readBoolean();
m_bBallOB = pDI.readBoolean();
m_bBallBackCourt = pDI.readBoolean();
m_iTippOffDelay = pDI.readInt();
m_iTeamThatWonTippOff = pDI.readInt();
m_iIndicatorX = pDI.readInt();
m_iIndicatorY = pDI.readInt();
m_iIndicatorDir = pDI.readInt();
m_iRimAnim = pDI.readInt();
m_iRimState = pDI.readInt();
m_iCommentaryTime = pDI.readInt();
m_iQtrNum = pDI.readInt();
SetScoreQtr(m_iQtrNum - 1);
m_iQtrTime = pDI.readInt();
m_iQtrSecs = pDI.readInt();
m_iShotSecs = pDI.readInt();
m_iBkCrtSecs = pDI.readInt();
m_iInbndSecs = pDI.readInt();
m_iLaneSecs = pDI.readInt();
m_iPaintFlags = pDI.readInt();
m_iOffenseDir = pDI.readInt();
m_iHomeScore = pDI.readInt();
m_iAwayScore = pDI.readInt();
byte pTmp[]= new byte[64];
pDI.read(pTmp, 0, 64);
m_pCommentaryMsg = FrontEnd.bufferToString(pTmp, 64);
pDI.close();
}
catch(Exception e)
{
return false;
}
return true;
}
private int m_iCameraX;
private int m_iCameraY;
private int m_iCameraDir;
private int m_iCameraState = 0;
private int m_iOffsetX;
private int m_iOffsetY = -45;
private boolean m_bCourtReady = false;
private RenderObj m_pFocusObj;
private static Image m_pCourtImgL = null;
private static Image m_pCourtImgR = null;
private boolean LoadCourtRes()
{
byte pTeamRemaps[]= new byte[11 * 4];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -