From acc09ed3f935dd08b041698d5631e00ef8b7bda6 Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 9 Aug 2001 19:51:18 +0000 Subject: [PATCH] --- Graphics/UI/map/+map_arrow.bmp | Bin 358 -> 3822 bytes source/map/map.cpp | 311 ++++++++++++++------------------- source/map/map.h | 11 +- 3 files changed, 141 insertions(+), 181 deletions(-) diff --git a/Graphics/UI/map/+map_arrow.bmp b/Graphics/UI/map/+map_arrow.bmp index 3f49cd5cd496e2130f3899dd33d234c638ca9ef6..99bfb0b2ca3f44b7533ca948e7074c2cb99e58a6 100644 GIT binary patch literal 3822 zcmeH}QEXFH7{`x6&5%a75cGnm)Em(1HM*dchJbb$!Hb}6mP{KdXcaD0ZM4ncg(22u*h0C6qsVXu4K;~w|AH}|;5`aAcwz3mFRzI&E0=icx8|IYWF@0_+9 z*!TCt!W!QDg?N^ySFwKVKG9?O?>r>L+BLS}lmSuW&+XQQ$D@n>eq9U<=mdg7QG&va zDQ;%W;|UTA5(|l*o{;F3){7}2w3s`DE+jnCJR#N!37;>7K7ty4v{lRJ(E^TpA{(ZoeO9!F=QGtro6 zFt^EiCiP(+tlva$vaX3Xg*JsQg(igt^Q2feg(fAU(G;2tUCgjv23>}DhFlpD3TBAq z;j!L4@w`yvtT1D4%;Uy9dDhDdpEO?{rU+9+k10j8MRFI>@U9m{C{z>?Oo$S?61ox^ z%w1xwk_ZM%#3rZ->zN=vL3{#Vh4%{Y6?#%3SA{)RsI@|D8qGBC(?XY~Pve`R=QA)f z^kjzE3^8UMznH~8OTJnBv-mN67XKWz&f%Y9{W-LA_~xl)9^E`TOrOWMKphL@T)@A8 ze*xbjzD2l2e2cs%Ke~rFjz8dRd z12xvDk&jtt#%i_y?QT7w$@dx?Tzp@2JyxkMwQER-K9@^*uxoDBW-z5|Z0!RQd!$Ql z&5MensH!TzIlCB-x+J7&o4a6;z67Pov9=rTu>nQXyk4)Sb#(}jD?om~AFy}j>DFvh zfplF5>>}O9^_s2+!r^cLaOK&2Dv)8sVlgA|%!;um_IkrcERir7`=His+0wUq)qmpK z)c};4OeWKjO;7C}ipgT>&gQ<=|H3}`w%3T6$#gcG{W=smnM|6Am;njOL2kGg+OGzH z(%D?Dkj=rS(=DWh_T4S%F3m_Lv$;Z{SS&Ddppd4SFzlS1il%muo}iy(xk7QAQIu#7 zGM$A?&|0fnxl^_M-tE}-MT07rZPZHY6k8`Xwe54Y|C{fBE))RD_OO!5Y8%CpvO%tI z+2sdk&i#76Nx?eRLdyQg)9dPi+Kd)U`MmCG3 zLG?3{4Wc~`xaq`i7q2bjWVKdn?L%ofO|RC>xHC0*vlF!UX&3Jn<(4M6FF$$l zkB*G(4YE$tI!y1n2Ke;w*yQ!AonUK9`x?j#wD*MuCte#V+2DDrqm84KFHUP4cQ)Me zk$x{zy>^IQ-UGl8sXtcSa88ajUa@O1J~D?M;Y>J*O_orb1je z{L1lI;;T8vjj$fW#l-5DQ^-kGGSZ1McNj<@yc7~if*z;LTmh@)e-$x zNI(6rDDmvSB;T|D{_Zb^+1b+%IhK42`VWYmskD&{}Cv~C=^~^UN-HVAjnUG>gDC- uH6US-1dt6821=-wXI+F^%qSGL9;_OyLj$53tV0AY4AcQt4VC~AKmY)_N<|a^ diff --git a/source/map/map.cpp b/source/map/map.cpp index d0bb37cb8..99f5c441b 100644 --- a/source/map/map.cpp +++ b/source/map/map.cpp @@ -218,13 +218,15 @@ DVECTOR CMapScene::s_mapLevelPositions[CMapScene::MAP_NUM_LEVELS_PER_CHAPTE }; // Cursor positions for all icons -DVECTOR CMapScene::s_mapPointerPositions[CMapScene::MAP_NUM_LEVELS_PER_CHAPTER]= +DVECTOR CMapScene::s_mapPointerPositions[CMapScene::MAP_NUM_LEVELS_PER_CHAPTER+2]= { - { 42+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_1 - { 186+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_2 - { 330+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_3 - { 42+(MAP_LEVEL_WIDTH/2),113+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_4 - { 330+(MAP_LEVEL_WIDTH/2),113+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_BONUS + { MAP_CHAPTER_ARROW_XOFF,MAP_CHAPTER_ARROW_Y+25 }, // MAP_ICON_PREVIOUS_CHAPTER + { 42+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_1 + { 186+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_2 + { 330+(MAP_LEVEL_WIDTH/2),49+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_3 + { 42+(MAP_LEVEL_WIDTH/2),113+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_4 + { 330+(MAP_LEVEL_WIDTH/2),113+MAP_LEVEL_HEIGHT }, // MAP_ICON_LEVEL_BONUS + { 512-MAP_CHAPTER_ARROW_XOFF,MAP_CHAPTER_ARROW_Y+25 }, // MAP_ICON_NEXT_CHAPTER }; @@ -316,10 +318,7 @@ void CMapScene::render() int i; char buf[100]; - if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER) - { - m_pointerIcon->render(); - } + m_pointerIcon->render(); sb=CGameScene::getSpriteBank(); level=&s_mapLevelData[m_currentChapterSelection][0]; @@ -446,19 +445,21 @@ void CMapScene::renderChapterArrows() if(m_currentChapterSelection>0&&isChapterOpen(m_currentChapterSelection-1)) { - int scale; - scale=m_currentIconSelection==MAP_ICON_PREVIOUS_CHAPTER?383:256; - y=MAP_ARROW_PREVIOUS_Y-(fh->H/2); - x=256-(fh->W/2); - ft4=sb->printFT4Scaled(fh,x,y,0,0,0,scale); + int rgb; + rgb=m_currentIconSelection==MAP_ICON_PREVIOUS_CHAPTER?MAP_CHAPTER_ARROW_RGB_SELECTED:MAP_CHAPTER_ARROW_RGB_UNSELECTED; + x=MAP_CHAPTER_ARROW_XOFF-(fh->W/2); + y=MAP_CHAPTER_ARROW_Y; + ft4=sb->printFT4(fh,x,y,0,0,0); + setRGB0(ft4,rgb,rgb,rgb); } if(m_currentChapterSelection<5-1&&isChapterOpen(m_currentChapterSelection+1)) { - int scale; - scale=m_currentIconSelection==MAP_ICON_NEXT_CHAPTER?383:256; - y=MAP_ARROW_NEXT_Y-(fh->H/2); - x=256-(fh->W/2); - ft4=sb->printFT4Scaled(fh,x,y,0,1,0,scale); + int rgb; + rgb=m_currentIconSelection==MAP_ICON_NEXT_CHAPTER?MAP_CHAPTER_ARROW_RGB_SELECTED:MAP_CHAPTER_ARROW_RGB_UNSELECTED; + x=512-MAP_CHAPTER_ARROW_XOFF-(fh->W/2)+fh->W; + y=MAP_CHAPTER_ARROW_Y; + ft4=sb->printFT4(fh,x,y,1,0,0); + setRGB0(ft4,rgb,rgb,rgb); } } @@ -469,6 +470,78 @@ void CMapScene::renderChapterArrows() Params: Returns: ---------------------------------------------------------------------- */ +const int CMapScene::s_padToIconMappings[4][NUM_MAP_ICONS][NUM_MAP_ICONS]= +{ + // UP + { + // MAP_ICON_PREVIOUS_CHAPTER + { MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_3,MAP_ICON_PREVIOUS_CHAPTER }, + // MAP_ICON_LEVEL_1 + { MAP_ICON_LEVEL_1 }, + // MAP_ICON_LEVEL_2 + { MAP_ICON_LEVEL_2 }, + // MAP_ICON_LEVEL_3 + { MAP_ICON_LEVEL_3 }, + // MAP_ICON_LEVEL_4 + { MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_4 }, + // MAP_ICON_LEVEL_BONUS + { MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_BONUS }, + // MAP_ICON_NEXT_CHAPTER + { MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1,MAP_ICON_NEXT_CHAPTER }, + }, + // DOWN + { + // MAP_ICON_PREVIOUS_CHAPTER + { MAP_ICON_PREVIOUS_CHAPTER }, + // MAP_ICON_LEVEL_1 + { MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_1 }, + // MAP_ICON_LEVEL_2 + { MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_2 }, + // MAP_ICON_LEVEL_3 + { MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4,MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_3 }, + // MAP_ICON_LEVEL_4 + { MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_4 }, + // MAP_ICON_LEVEL_BONUS + { MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_BONUS }, + // MAP_ICON_NEXT_CHAPTER + { MAP_ICON_NEXT_CHAPTER }, + }, + // LEFT + { + // MAP_ICON_PREVIOUS_CHAPTER + { MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1,MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER }, + // MAP_ICON_LEVEL_1 + { MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1 }, + // MAP_ICON_LEVEL_2 + { MAP_ICON_LEVEL_1,MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2 }, + // MAP_ICON_LEVEL_3 + { MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1,MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_3 }, + // MAP_ICON_LEVEL_4 + { MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1,MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4 }, + // MAP_ICON_LEVEL_BONUS + { MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1,MAP_ICON_NEXT_CHAPTER,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_BONUS }, + // MAP_ICON_NEXT_CHAPTER + { MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_LEVEL_BONUS,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_1,MAP_ICON_NEXT_CHAPTER }, + }, + // RIGHT + { + // MAP_ICON_PREVIOUS_CHAPTER + { MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER }, + // MAP_ICON_LEVEL_1 + { MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_1 }, + // MAP_ICON_LEVEL_2 + { MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_2 }, + // MAP_ICON_LEVEL_3 + { MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_3 }, + // MAP_ICON_LEVEL_4 + { MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_4 }, + // MAP_ICON_LEVEL_BONUS + { MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER,MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS }, + // MAP_ICON_NEXT_CHAPTER + { MAP_ICON_LEVEL_1,MAP_ICON_LEVEL_2,MAP_ICON_LEVEL_3,MAP_ICON_LEVEL_4,MAP_ICON_LEVEL_BONUS,MAP_ICON_PREVIOUS_CHAPTER,MAP_ICON_NEXT_CHAPTER }, + }, +}; + void CMapScene::think(int _frames) { if(!CFader::isFading()&&!m_readyToExit) @@ -492,163 +565,51 @@ void CMapScene::think(int _frames) // Move cursor in the gayest way possible.. // Hahahaha! It's like a spiders nest! (pkg and proud of it) - if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER) - { - m_previousIconSelection=m_currentIconSelection; - } - if(pad&PAD_UP) - { - cursor=CURSOR_MOVED; - switch(m_currentIconSelection) - { - case MAP_ICON_PREVIOUS_CHAPTER: - cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_1: - case MAP_ICON_LEVEL_2: - case MAP_ICON_LEVEL_3: - if(m_currentChapterSelection>0&&isChapterOpen(m_currentChapterSelection-1))m_currentIconSelection=MAP_ICON_PREVIOUS_CHAPTER; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_4: - m_currentIconSelection=MAP_ICON_LEVEL_1; - break; - case MAP_ICON_LEVEL_BONUS: - if(isLevelOpen(m_currentChapterSelection,3-1))m_currentIconSelection=MAP_ICON_LEVEL_3; - else if(isLevelOpen(m_currentChapterSelection,2-1))m_currentIconSelection=MAP_ICON_LEVEL_2; - else m_currentIconSelection=MAP_ICON_LEVEL_1; - break; - case MAP_ICON_NEXT_CHAPTER: - m_currentIconSelection=m_previousIconSelection; - if(!isLevelOpen(m_currentChapterSelection,m_currentIconSelection-1)) - { - for(int i=MAP_ICON_LEVEL_BONUS;i>=MAP_ICON_LEVEL_1;i--) - { - if(isLevelOpen(m_currentChapterSelection,i-1)) - { - m_currentIconSelection=i; - m_pointerIcon->setTarget(getPointerTargetPosition()); - break; - } - } - } - break; - } - } - else if(pad&PAD_DOWN) - { - int nextChapterAvailable=false; - if(m_currentChapterSelection<5-1&&isChapterOpen(m_currentChapterSelection+1))nextChapterAvailable=true; + const int *mapBase=NULL; - cursor=CURSOR_MOVED; - switch(m_currentIconSelection) - { - case MAP_ICON_PREVIOUS_CHAPTER: - m_currentIconSelection=m_previousIconSelection; - if(!isLevelOpen(m_currentChapterSelection,m_currentIconSelection-1)) - { - m_currentIconSelection=MAP_ICON_LEVEL_1; - } - break; - case MAP_ICON_LEVEL_1: - case MAP_ICON_LEVEL_2: - if(isLevelOpen(m_currentChapterSelection,4-1))m_currentIconSelection=MAP_ICON_LEVEL_4; - else if(isLevelOpen(m_currentChapterSelection,5-1))m_currentIconSelection=MAP_ICON_LEVEL_BONUS; - else if(nextChapterAvailable)m_currentIconSelection=MAP_ICON_NEXT_CHAPTER; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_3: - if(isLevelOpen(m_currentChapterSelection,5-1))m_currentIconSelection=MAP_ICON_LEVEL_BONUS; - else if(isLevelOpen(m_currentChapterSelection,4-1))m_currentIconSelection=MAP_ICON_LEVEL_4; - else if(nextChapterAvailable)m_currentIconSelection=MAP_ICON_NEXT_CHAPTER; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_4: - case MAP_ICON_LEVEL_BONUS: - if(nextChapterAvailable)m_currentIconSelection=MAP_ICON_NEXT_CHAPTER; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_NEXT_CHAPTER: - cursor=CURSOR_COULDNT_MOVE; - break; - } - } - else if(pad&PAD_LEFT) - { - cursor=CURSOR_MOVED; - switch(m_currentIconSelection) - { - case MAP_ICON_PREVIOUS_CHAPTER: - cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_1: - cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_2: - m_currentIconSelection=MAP_ICON_LEVEL_1; - break; - case MAP_ICON_LEVEL_3: - m_currentIconSelection=MAP_ICON_LEVEL_2; - break; - case MAP_ICON_LEVEL_4: - cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_BONUS: - if(isLevelOpen(m_currentChapterSelection,4-1))m_currentIconSelection=MAP_ICON_LEVEL_4; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_NEXT_CHAPTER: - cursor=CURSOR_COULDNT_MOVE; - break; - } - } - else if(pad&PAD_RIGHT) - { - cursor=CURSOR_MOVED; - switch(m_currentIconSelection) - { - case MAP_ICON_PREVIOUS_CHAPTER: - cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_1: - if(isLevelOpen(m_currentChapterSelection,2-1))m_currentIconSelection=MAP_ICON_LEVEL_2; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_2: - if(isLevelOpen(m_currentChapterSelection,3-1))m_currentIconSelection=MAP_ICON_LEVEL_3; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_3: - cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_4: - if(isLevelOpen(m_currentChapterSelection,5-1))m_currentIconSelection=MAP_ICON_LEVEL_BONUS; - else cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_LEVEL_BONUS: - cursor=CURSOR_COULDNT_MOVE; - break; - case MAP_ICON_NEXT_CHAPTER: - cursor=CURSOR_COULDNT_MOVE; - break; - } - } + if(pad&PAD_UP)mapBase=&s_padToIconMappings[0][m_currentIconSelection][0]; + else if(pad&PAD_DOWN)mapBase=&s_padToIconMappings[1][m_currentIconSelection][0]; + else if(pad&PAD_LEFT)mapBase=&s_padToIconMappings[2][m_currentIconSelection][0]; + else if(pad&PAD_RIGHT)mapBase=&s_padToIconMappings[3][m_currentIconSelection][0]; - // What did the cursor do? - switch(cursor) + if(mapBase) { - case CURSOR_DIDNT_MOVE: - break; - case CURSOR_MOVED: - if(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER) + int i,level,isOpen; + for(i=0;isetTarget(getPointerTargetPosition()); + CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__ERROR,false,true); + break; } - CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__MOVE_CURSOR); - break; - case CURSOR_COULDNT_MOVE: - CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__ERROR,false,true); - break; + + isOpen=false; + switch(level) + { + case MAP_ICON_PREVIOUS_CHAPTER: + if(m_currentChapterSelection>0&&isChapterOpen(m_currentChapterSelection-1))isOpen=true; + break; + case MAP_ICON_LEVEL_1: + case MAP_ICON_LEVEL_2: + case MAP_ICON_LEVEL_3: + case MAP_ICON_LEVEL_4: + case MAP_ICON_LEVEL_BONUS: + if(isLevelOpen(m_currentChapterSelection,level-1))isOpen=true; + break; + case MAP_ICON_NEXT_CHAPTER: + if(m_currentChapterSelection<5-1&&isChapterOpen(m_currentChapterSelection+1))isOpen=true; + break; + } + + if(isOpen) + { + m_currentIconSelection=level; + m_pointerIcon->setTarget(getPointerTargetPosition()); + CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__MOVE_CURSOR); + break; + } + } } m_pointerIcon->think(_frames); @@ -793,11 +754,7 @@ void CMapScene::copyImageToScreen(int _file,int _x,int _y,int _w,int _h) DVECTOR CMapScene::getPointerTargetPosition() { DVECTOR pos; - - ASSERT(m_currentIconSelection!=MAP_ICON_PREVIOUS_CHAPTER&&m_currentIconSelection!=MAP_ICON_NEXT_CHAPTER); - - pos=s_mapPointerPositions[m_currentIconSelection-1]; - + pos=s_mapPointerPositions[m_currentIconSelection]; return pos; } diff --git a/source/map/map.h b/source/map/map.h index f00dbd224..8d1aa3fe5 100644 --- a/source/map/map.h +++ b/source/map/map.h @@ -65,8 +65,10 @@ private: MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT=10, MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES=13, - MAP_ARROW_PREVIOUS_Y=45, - MAP_ARROW_NEXT_Y=180, + MAP_CHAPTER_ARROW_XOFF=90, + MAP_CHAPTER_ARROW_Y=180, + MAP_CHAPTER_ARROW_RGB_UNSELECTED=50, + MAP_CHAPTER_ARROW_RGB_SELECTED=150, MAP_NUM_CHAPTERS=5, MAP_NUM_LEVELS_PER_CHAPTER=5, @@ -169,13 +171,14 @@ private: char *m_packedBackgroundImage; int m_currentChapterSelection; - int m_currentIconSelection,m_previousIconSelection; + int m_currentIconSelection; class CPointerIcon *m_pointerIcon; static sMapLevelGfxTable s_GfxTable[MAP_GFX_MAX]; static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER]; static DVECTOR s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER]; - static DVECTOR s_mapPointerPositions[MAP_NUM_LEVELS_PER_CHAPTER]; + static DVECTOR s_mapPointerPositions[MAP_NUM_LEVELS_PER_CHAPTER+2]; + static const int s_padToIconMappings[4][NUM_MAP_ICONS][NUM_MAP_ICONS]; static int s_chapterToStartOn; static int s_levelToStartOn;