Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fly from Pokenav #5679

Open
wants to merge 16 commits into
base: upcoming
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 42 additions & 4 deletions src/field_region_map.c
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
#include "global.h"
#include "bg.h"
#include "field_effect.h"
#include "gpu_regs.h"
#include "international_string_util.h"
#include "main.h"
#include "malloc.h"
#include "menu.h"
#include "overworld.h"
#include "palette.h"
#include "region_map.h"
#include "sound.h"
#include "strings.h"
#include "text.h"
#include "text_window.h"
#include "window.h"
#include "constants/rgb.h"
#include "constants/songs.h"

/*
* This is the type of map shown when interacting with the metatiles for
Expand Down Expand Up @@ -45,6 +49,12 @@ static void VBCB_FieldUpdateRegionMap(void);
static void MCB2_FieldUpdateRegionMap(void);
static void FieldUpdateRegionMap(void);
static void PrintRegionMapSecName(void);
static void PrintTitleWindowText(void);

static const u8* const FlyPromptText = COMPOUND_STRING("{R_BUTTON}FLY");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be just a normal text string. We don't use compound strings like that.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is actually straight from the strings used in the pokenav helpbar, though there it's an array.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We use Compound Strings for non duplicate strings, so single use strings. If you want this to use multiply times it should be a normal string so

static const u8 sFlyPropmtText[] = _("{R_BUTTON}FLY");

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is technically a single use string- should it stay a compound string then?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You use it twice right?

The reason we use compound strings is because they make code more readable and additionally save a little bit of space so in your case it should be moved where it is needed in the first place. Though iirc we've decided to keep using normal strings for function arguments so you would need to convert it either way.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, i see, yeah it's used once in the file, but twice in the function. fixed!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm in this case should it be defined in the PrintTitleWindowText func? since it's only used there?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done!


u8 hoennOffset;
u8 flyOffset;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this outside of a function?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i figured it'd be better to set them when the FieldUpdateRegionMap() is called rather than every time the PrintTitleWindowText() function is called to speed up text display

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pass them as arguments into PrintTitleWindowText() instead then. We don't define variables outside of functions unless they are globals and those don't need to be globals.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, the function FieldUpdateRegionMap is rerun each case which means that they are calculated each time regardless so you aren't gaining any speed improvement with this which means you could just calc it in PrintTitleWindowText which will be better for speed because you aren't recalcing each time FieldUpdateRegionMap is run.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good to know! i thought it was a big loop inside FieldUpdateRegionMap lol


static const struct BgTemplate sFieldRegionMapBgTemplates[] = {
{
Expand All @@ -66,7 +76,7 @@ static const struct BgTemplate sFieldRegionMapBgTemplates[] = {
}
};

static const struct WindowTemplate sFieldRegionMapWindowTemplates[] =
const struct WindowTemplate sFieldRegionMapWindowTemplates[] =
{
[WIN_MAPSEC_NAME] = {
.bg = 0,
Expand Down Expand Up @@ -139,7 +149,8 @@ static void MCB2_FieldUpdateRegionMap(void)

static void FieldUpdateRegionMap(void)
{
u8 offset;
hoennOffset = GetStringCenterAlignXOffset(FONT_NORMAL, gText_Hoenn, 0x38);
flyOffset = GetStringCenterAlignXOffset(FONT_NORMAL, FlyPromptText, 0x38);

switch (sFieldRegionMapHandler->state)
{
Expand All @@ -151,8 +162,8 @@ static void FieldUpdateRegionMap(void)
break;
case 1:
DrawStdFrameWithCustomTileAndPalette(WIN_TITLE, FALSE, 0x27, 0xd);
offset = GetStringCenterAlignXOffset(FONT_NORMAL, gText_Hoenn, 0x38);
AddTextPrinterParameterized(WIN_TITLE, FONT_NORMAL, gText_Hoenn, offset, 1, 0, NULL);
FillWindowPixelBuffer(WIN_TITLE, PIXEL_FILL(1));
PrintTitleWindowText();
ScheduleBgCopyTilemapToVram(0);
DrawStdFrameWithCustomTileAndPalette(WIN_MAPSEC_NAME, FALSE, 0x27, 0xd);
PrintRegionMapSecName();
Expand All @@ -176,11 +187,21 @@ static void FieldUpdateRegionMap(void)
{
case MAP_INPUT_MOVE_END:
PrintRegionMapSecName();
PrintTitleWindowText();
break;
case MAP_INPUT_A_BUTTON:
case MAP_INPUT_B_BUTTON:
sFieldRegionMapHandler->state++;
break;
case MAP_INPUT_R_BUTTON:
if (sFieldRegionMapHandler->regionMap.mapSecType == MAPSECTYPE_CITY_CANFLY &&
OW_FLAG_POKE_RIDER && Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
PlaySE(SE_SELECT);
SetFlyDestination(&sFieldRegionMapHandler->regionMap);
gSkipShowMonAnim = TRUE;
ReturnToFieldFromFlyMapSelect();
}
}
break;
case 5:
Expand Down Expand Up @@ -213,3 +234,20 @@ static void PrintRegionMapSecName(void)
CopyWindowToVram(WIN_MAPSEC_NAME, COPYWIN_FULL);
}
}

static void PrintTitleWindowText(void)
{
FillWindowPixelBuffer(WIN_TITLE, PIXEL_FILL(1));

if (sFieldRegionMapHandler->regionMap.mapSecType == MAPSECTYPE_CITY_CANFLY &&
OW_FLAG_POKE_RIDER && Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
AddTextPrinterParameterized(WIN_TITLE, FONT_NORMAL, FlyPromptText, flyOffset, 1, 0, NULL);
ScheduleBgCopyTilemapToVram(WIN_TITLE);
}
else
{
AddTextPrinterParameterized(WIN_TITLE, FONT_NORMAL, gText_Hoenn, hoennOffset, 1, 0, NULL);
CopyWindowToVram(WIN_TITLE, COPYWIN_FULL);
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
}
}

6 changes: 4 additions & 2 deletions src/pokenav_region_map.c
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,8 @@ static u32 HandleRegionMapInput(struct Pokenav_RegionMapMenu *state)
state->callback = GetExitRegionMapMenuId;
return POKENAV_MAP_FUNC_EXIT;
case MAP_INPUT_R_BUTTON:
if (regionMap->mapSecType == MAPSECTYPE_CITY_CANFLY && OW_FLAG_POKE_RIDER && Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
if (regionMap->mapSecType == MAPSECTYPE_CITY_CANFLY && OW_FLAG_POKE_RIDER &&
Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
return POKENAV_MAP_FUNC_FLY;
}

Expand Down Expand Up @@ -774,7 +775,8 @@ void UpdateRegionMapHelpBarText(void)
{
struct RegionMap* regionMap = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP);

if (regionMap->mapSecType == MAPSECTYPE_CITY_CANFLY && OW_FLAG_POKE_RIDER && Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
if (regionMap->mapSecType == MAPSECTYPE_CITY_CANFLY && OW_FLAG_POKE_RIDER &&
Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
if (IsRegionMapZoomed())
PrintHelpBarText(HELPBAR_MAP_ZOOMED_IN_CANFLY);
Expand Down
Loading