summaryrefslogtreecommitdiff
path: root/src/code/m_land.c
blob: b8b39c156015a9f3d7c2927de9a0f09757de3598 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include "m_land.h"
#include "m_string.h"
#include "m_lib.h"
#include "m_msg_main.h"
#include "6B81C0.h"

s32 mLd_NullCheckLandName(char* landName) {
    s32 isNull = FALSE;
    s32 i;

    for (i = 0; i < LAND_NAME_SIZE; i++) {
        if (*landName != ' ') {
            break;
        }
        landName++;
    }

    if (i == LAND_NAME_SIZE) {
        isNull = TRUE;
    }
    return isNull;
}

s32 mLd_CheckId(u16 landId) {
    s32 res = FALSE;

    if (mLd_CHECK_ID(landId)) {
        res = TRUE;
    }

    return res;
}

s32 mLd_CheckCmpLandName(char* nameA, char* nameB) {
    s32 equal = FALSE;

    if (mLd_NullCheckLandName(nameA) == FALSE && mLd_NullCheckLandName(nameB) == FALSE) {
        equal = mem_cmp((u8*)nameA, (u8*)nameB, LAND_NAME_SIZE);
    }

    return equal;
}

s32 mLd_CheckCmpLand(char* nameA, u16 idA, char* nameB, u16 idB) {
    s32 equal = FALSE;

    if (idA == idB && mLd_CheckCmpLandName(nameA, nameB) == TRUE) {
        equal = TRUE;
    }

    return equal;
}

void mLd_ClearLandName(char* name) {
    mem_clear((u8*)name, LAND_NAME_SIZE, ' ');
}

void mLd_CopyLandName(char* nameA, char* nameB) {
    mem_copy((u8*)nameA, (u8*)nameB, LAND_NAME_SIZE);
}

size_t mLd_AddMuraString(char* name, size_t len) {
    char buf[10];
    size_t size;
    UNUSED s32 pad;
    size_t lenNew;

    mString_Load_StringFromRom(buf, sizeof(buf), 484);
    size = mMsg_Get_Length_String(buf, sizeof(buf));
    lenNew = size + len;

    mem_copy((u8*)(name + len), (u8*)buf, size);

    return lenNew;
}

size_t mLd_GetLandNameStringAddMura(char* buf) {
    char* name;
    size_t size;
    size_t muraSize;
    s32 i;

    name = mLd_GetLandName();
    size = mMsg_Get_Length_String(name, LAND_NAME_SIZE);

    mem_copy((u8*)buf, (u8*)name, size);
    muraSize = mLd_AddMuraString(buf, size);

    for (i = muraSize; i < LAND_NAME_MURA_SIZE; i++) {
        buf[i] = ' ';
    }

    return muraSize;
}

void mLd_SetFreeStrLandMuraName(char* name, s32 freeStr) {
    char str[8];
    size_t nameLen;
    s32 i;

    for (i = 0; i < LAND_NAME_MURA_SIZE; i++) {
        str[i] = ' ';
    }

    nameLen = mMsg_Get_Length_String(name, LAND_NAME_SIZE);
    mem_copy((u8*)str, (u8*)name, nameLen);
    nameLen = mLd_AddMuraString(str, nameLen);
    mMsg_Set_free_str(mMsg_Get_base_window_p(), freeStr, str, nameLen);
}

char* mLd_GetLandName() {
    return common_data.save.landInfo.name;
}

u16 mLd_MakeLandId() {
    return (u16)(RANDOM_F(256)) | 0x3000;
}

s32 mLd_PlayerManKindCheckNo(u8 playerNo) {
    s32 foreigner = TRUE;

    if (playerNo < PLAYER_NUM) {
        foreigner = FALSE;
    }

    return foreigner;
}

s32 mLd_PlayerManKindCheck() {
    return mLd_PlayerManKindCheckNo(common_data.playerNumber);
}

s32 mLd_CheckThisLand(char* otherName, u16 otherId) {
    return mLd_CheckCmpLand(otherName, otherId, common_data.save.landInfo.name, common_data.save.landInfo.id);
}

void mLd_LandInfoInit() {
    LandInfo* landInfo = &common_data.save.landInfo;

    landInfo->id = mLd_MakeLandId();
    landInfo->exists = TRUE;
}

void mLd_LandDataInit() {
    mLd_LandInfoInit();
    mHm_ClearAllHomeInfo();
}