void initMinimap(int selStage) { PA_ResetBgSysScreen(SUB_SCREEN); if(selStage == FINALDESTINATION) { PA_EasyBgLoad(SUB_SCREEN, 3, finaldestinationminimap); } else if(selStage == POKEMONSTADIUM) { PA_EasyBgLoad(SUB_SCREEN, 3, pokemonstadiumminimap); } // else if(selStage == CORNERIA) { // PA_EasyBgLoad(SUB_SCREEN, 3, corneria); // } // else if(selStage == CASTLESIEGE) { // PA_EasyBgLoad(SUB_SCREEN, 3, castleseige); // } PA_LoadSpritePal(SUB_SCREEN, 1, (void*)charminis_Pal); for(int n = 0; n < (int)players.size(); n++) { PA_CreateSprite(SUB_SCREEN, n+1, (void*)charminis, OBJ_SIZE_16X16, COLOR256, 1, -16, -16); if(players[n] -> name == "kirby") PA_StartSpriteAnimEx(SUB_SCREEN, n+1, KIRBY, KIRBY, 1, ANIM_LOOP, -1); else if(players[n] -> name == "mewtwo") PA_StartSpriteAnimEx(SUB_SCREEN, n+1, MEWTWO, MEWTWO, 1, ANIM_LOOP, -1); else if(players[n] -> name == "mario") PA_StartSpriteAnimEx(SUB_SCREEN, n+1, MARIO, MARIO, 1, ANIM_LOOP, -1); else if(players[n] -> name == "ike") PA_StartSpriteAnimEx(SUB_SCREEN, n+1, IKE, IKE, 1, ANIM_LOOP, -1); } PA_LoadSpritePal(SUB_SCREEN, 0, (void*)visibleminimap_Pal); PA_CreateSprite(SUB_SCREEN, 0, (void*)visibleminimap_Sprite, OBJ_SIZE_64X64, COLOR256, 0, -64, -64); // loads the sprite icons for the minimap } // initializes the minimap display on the sub screen
/* 화면초기화 함수. 비디오메모리를 초기화한다. */ void UnLoad_Screen() { int i; for (i = 0; i < 2; ++i) { PA_ResetBgSysScreen(i); PA_ResetSpriteSysScreen(i); } }
portTASK_FUNCTION(Unit_Task, pvParameters ) { body bd[MAX_BODY_LENGTH]; int i; u8 x = 5; u8 y = 5; unit.x = 5; unit.y = 5; u8 pfx; u8 pfy; u8 pfDirection; u8 tempx; u8 tempy; u8 tempDirection; unit.direction = D_DOWN; portTickType xLastWakeTime = xTaskGetTickCount(); PA_LoadSpritePal(DOWN_SCREEN, C_PAL, (void*) C_Pal); PA_LoadSpritePal(DOWN_SCREEN, BODY_PAL, (void*) man_Pal); PA_CreateSprite(DOWN_SCREEN, C, (void*) C_Sprite, OBJ_SIZE_32X32, TRUE, C_PAL, map[unit.x][unit.y].x-8, map[unit.x][unit.y].y-16); while (1) { x = unit.x; y = unit.y; switch (unit.direction) { case D_UP: y--; break; case D_DOWN: y++; break; case D_LEFT: x--; break; case D_RIGHT: x++; break; default: break; } if ((map[x][y].state == MAP_STATE_NULL) || (map[x][y].state == MAP_STATE_ITEM)) { pfx = unit.x; pfy = unit.y; pfDirection = unit.direction; if ((map[x][y].state == MAP_STATE_ITEM)) { if (length < MAX_BODY_LENGTH) // to max length { length++; fireCreate(map); } if (length == MAX_BODY_LENGTH) { dropshipCreate(map); } map[x][y].state = MAP_STATE_NULL; PA_StopSpriteAnim(DOWN_SCREEN,map[x][y].itemSpriteNum); PA_DeleteSprite(DOWN_SCREEN, map[x][y].itemSpriteNum); PA_CreateSprite(DOWN_SCREEN, BODY + (length-1), (void*) man_Sprite, OBJ_SIZE_16X32, TRUE, BODY_PAL, 0, 0); } unit.x = x; unit.y = y; PA_SetSpriteXY(DOWN_SCREEN, C, map[unit.x][unit.y].x - 8, map[unit.x][unit.y].y - 16); for (i = 0; i < length; i++) { tempx = bd[i].x; tempy = bd[i].y; tempDirection = bd[i].direction; map[tempx][tempy].state = MAP_STATE_NULL; bd[i].x = pfx; bd[i].y = pfy; map[pfx][pfy].state = MAP_STATE_C_BODY; bd[i].direction = pfDirection; pfx = tempx; pfy = tempy; pfDirection = tempDirection; PA_SetSpriteXY(DOWN_SCREEN, BODY + i, map[bd[i].x][bd[i].y].x, (map[bd[i].x][bd[i].y].y)-16); if(pfDirection!=bd[i].direction) PA_StartSpriteAnim(DOWN_SCREEN, BODY + i, bd[i].direction, bd[i].direction+2, 7); } } if((map[x][y].state == MAP_STATE_WALL) || map[x][y].state == MAP_STATE_C_BODY) //실패 { AS_SoundQuickPlay(die); PA_ResetSpriteSys (); PA_ResetBgSysScreen (DOWN_SCREEN); PA_LoadBackground(DOWN_SCREEN, 3, &FAILSCREEN); vTaskSuspend(NULL); } if(map[x][y].state == MAP_STATE_EXIT) //클리어 { PA_ResetSpriteSys (); PA_ResetBgSysScreen (DOWN_SCREEN); PA_LoadBackground(DOWN_SCREEN, 3, &CLEARSCREEN); vTaskSuspend(NULL); } vTaskDelayUntil(&xLastWakeTime, MSEC2TICK(300-(length*10)) ); } }