136 if (index >= 0xE4) |
136 if (index >= 0xE4) |
137 return GetSpecialPlayerNameString(buffr, index - 0xE4, argv, last); |
137 return GetSpecialPlayerNameString(buffr, index - 0xE4, argv, last); |
138 break; |
138 break; |
139 |
139 |
140 case 15: |
140 case 15: |
141 /* User defined name */ |
141 error("Boo!"); |
142 return GetName(buffr, index, last); |
|
143 |
142 |
144 case 26: |
143 case 26: |
145 /* Include string within newgrf text (format code 81) */ |
144 /* Include string within newgrf text (format code 81) */ |
146 if (HasBit(index, 10)) { |
145 if (HasBit(index, 10)) { |
147 StringID string = GetGRFStringID(0, 0xD000 + GB(index, 0, 10)); |
146 StringID string = GetGRFStringID(0, 0xD000 + GB(index, 0, 10)); |
819 case SCC_CURRENCY: // {CURRENCY} |
818 case SCC_CURRENCY: // {CURRENCY} |
820 buff = FormatGenericCurrency(buff, _currency, GetInt64(&argv), false, last); |
819 buff = FormatGenericCurrency(buff, _currency, GetInt64(&argv), false, last); |
821 break; |
820 break; |
822 |
821 |
823 case SCC_WAYPOINT_NAME: { // {WAYPOINT} |
822 case SCC_WAYPOINT_NAME: { // {WAYPOINT} |
824 int64 temp[2]; |
|
825 Waypoint *wp = GetWaypoint(GetInt32(&argv)); |
823 Waypoint *wp = GetWaypoint(GetInt32(&argv)); |
826 StringID str; |
824 |
827 if (wp->string != STR_NULL) { |
825 if (!wp->IsValid()) { // waypoint doesn't exist anymore |
828 str = wp->string; |
826 buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last); |
|
827 } else if (wp->name != NULL) { |
|
828 buff = strecpy(buff, wp->name, last); |
829 } else { |
829 } else { |
|
830 int64 temp[2]; |
830 temp[0] = wp->town_index; |
831 temp[0] = wp->town_index; |
831 temp[1] = wp->town_cn + 1; |
832 temp[1] = wp->town_cn + 1; |
832 str = wp->town_cn == 0 ? STR_WAYPOINTNAME_CITY : STR_WAYPOINTNAME_CITY_SERIAL; |
833 StringID str = wp->town_cn == 0 ? STR_WAYPOINTNAME_CITY : STR_WAYPOINTNAME_CITY_SERIAL; |
|
834 |
|
835 buff = GetStringWithArgs(buff, str, temp, last); |
833 } |
836 } |
834 buff = GetStringWithArgs(buff, str, temp, last); |
|
835 break; |
837 break; |
836 } |
838 } |
837 |
839 |
838 case SCC_STATION_NAME: { // {STATION} |
840 case SCC_STATION_NAME: { // {STATION} |
839 const Station* st = GetStation(GetInt32(&argv)); |
841 const Station* st = GetStation(GetInt32(&argv)); |
840 |
842 |
841 if (!st->IsValid()) { // station doesn't exist anymore |
843 if (!st->IsValid()) { // station doesn't exist anymore |
842 buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last); |
844 buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last); |
|
845 } else if (st->name != NULL) { |
|
846 buff = strecpy(buff, st->name, last); |
843 } else { |
847 } else { |
844 int64 temp[3]; |
848 int64 temp[3]; |
845 temp[0] = STR_TOWN; |
849 temp[0] = STR_TOWN; |
846 temp[1] = st->town->index; |
850 temp[1] = st->town->index; |
847 temp[2] = st->index; |
851 temp[2] = st->index; |
857 assert(t->IsValid()); |
861 assert(t->IsValid()); |
858 |
862 |
859 temp[0] = t->townnameparts; |
863 temp[0] = t->townnameparts; |
860 uint32 grfid = t->townnamegrfid; |
864 uint32 grfid = t->townnamegrfid; |
861 |
865 |
862 if (grfid == 0) { |
866 if (t->name != NULL) { |
|
867 buff = strecpy(buff, t->name, last); |
|
868 } else if (grfid == 0) { |
863 /* Original town name */ |
869 /* Original town name */ |
864 buff = GetStringWithArgs(buff, t->townnametype, temp, last); |
870 buff = GetStringWithArgs(buff, t->townnametype, temp, last); |
865 } else { |
871 } else { |
866 /* Newgrf town name */ |
872 /* Newgrf town name */ |
867 if (GetGRFTownName(grfid) != NULL) { |
873 if (GetGRFTownName(grfid) != NULL) { |
875 break; |
881 break; |
876 } |
882 } |
877 |
883 |
878 case SCC_GROUP_NAME: { // {GROUP} |
884 case SCC_GROUP_NAME: { // {GROUP} |
879 const Group *g = GetGroup(GetInt32(&argv)); |
885 const Group *g = GetGroup(GetInt32(&argv)); |
880 int64 args[1]; |
|
881 |
886 |
882 assert(g->IsValid()); |
887 assert(g->IsValid()); |
883 |
888 |
884 args[0] = g->index; |
889 if (g->name != NULL) { |
885 buff = GetStringWithArgs(buff, IsCustomName(g->string_id) ? g->string_id : STR_GROUP_NAME_FORMAT, args, last); |
890 buff = strecpy(buff, g->name, last); |
886 |
891 } else { |
|
892 int64 args[1]; |
|
893 |
|
894 args[0] = g->index; |
|
895 buff = GetStringWithArgs(buff, STR_GROUP_NAME_FORMAT, args, last); |
|
896 } |
887 break; |
897 break; |
888 } |
898 } |
889 |
899 |
890 case SCC_ENGINE_NAME: { // {ENGINE} |
900 case SCC_ENGINE_NAME: { // {ENGINE} |
891 EngineID engine = (EngineID)GetInt32(&argv); |
901 EngineID engine = (EngineID)GetInt32(&argv); |
892 |
902 const Engine *e = GetEngine(engine); |
893 buff = GetString(buff, GetCustomEngineName(engine), last); |
903 |
|
904 if (e->name != NULL) { |
|
905 buff = strecpy(buff, e->name, last); |
|
906 } else { |
|
907 buff = GetStringWithArgs(buff, EngInfo(engine)->string_id, NULL, last); |
|
908 } |
894 break; |
909 break; |
895 } |
910 } |
896 |
911 |
897 case SCC_VEHICLE_NAME: { // {VEHICLE} |
912 case SCC_VEHICLE_NAME: { // {VEHICLE} |
898 const Vehicle *v = GetVehicle(GetInt32(&argv)); |
913 const Vehicle *v = GetVehicle(GetInt32(&argv)); |
899 |
914 |
900 int64 args[1]; |
915 if (v->name != NULL) { |
901 args[0] = v->unitnumber; |
916 buff = strecpy(buff, v->name, last); |
902 |
917 } else { |
903 buff = GetStringWithArgs(buff, v->string_id, args, last); |
918 int64 args[1]; |
|
919 args[0] = v->unitnumber; |
|
920 |
|
921 StringID str; |
|
922 switch (v->type) { |
|
923 default: NOT_REACHED(); |
|
924 case VEH_TRAIN: str = STR_SV_TRAIN_NAME; break; |
|
925 case VEH_ROAD: str = STR_SV_ROADVEH_NAME; break; |
|
926 case VEH_SHIP: str = STR_SV_SHIP_NAME; break; |
|
927 case VEH_AIRCRAFT: str = STR_SV_AIRCRAFT_NAME; break; |
|
928 } |
|
929 |
|
930 buff = GetStringWithArgs(buff, str, args, last); |
|
931 } |
904 break; |
932 break; |
905 } |
933 } |
906 |
934 |
907 case SCC_SIGN_NAME: { // {SIGN} |
935 case SCC_SIGN_NAME: { // {SIGN} |
908 const Sign *si = GetSign(GetInt32(&argv)); |
936 const Sign *si = GetSign(GetInt32(&argv)); |
909 buff = GetString(buff, si->str, last); |
937 if (si->name != NULL) { |
|
938 buff = strecpy(buff, si->name, last); |
|
939 } else { |
|
940 buff = GetStringWithArgs(buff, STR_280A_SIGN, NULL, last); |
|
941 } |
910 break; |
942 break; |
911 } |
943 } |
912 |
944 |
913 case SCC_COMPANY_NAME: { // {COMPANY} |
945 case SCC_COMPANY_NAME: { // {COMPANY} |
914 const Player *p = GetPlayer((PlayerID)GetInt32(&argv)); |
946 const Player *p = GetPlayer((PlayerID)GetInt32(&argv)); |
915 int64 args[1]; |
947 |
916 args[0] = p->name_2; |
948 if (p->name != NULL) { |
917 buff = GetStringWithArgs(buff, p->name_1, args, last); |
949 buff = strecpy(buff, p->name, last); |
|
950 } else { |
|
951 int64 args[1]; |
|
952 args[0] = p->name_2; |
|
953 buff = GetStringWithArgs(buff, p->name_1, args, last); |
|
954 } |
918 break; |
955 break; |
919 } |
956 } |
920 |
957 |
921 case SCC_COMPANY_NUM: { // {COMPANYNUM} |
958 case SCC_COMPANY_NUM: { // {COMPANYNUM} |
922 PlayerID player = (PlayerID)GetInt32(&argv); |
959 PlayerID player = (PlayerID)GetInt32(&argv); |
930 break; |
967 break; |
931 } |
968 } |
932 |
969 |
933 case SCC_PLAYER_NAME: { // {PLAYERNAME} |
970 case SCC_PLAYER_NAME: { // {PLAYERNAME} |
934 const Player *p = GetPlayer((PlayerID)GetInt32(&argv)); |
971 const Player *p = GetPlayer((PlayerID)GetInt32(&argv)); |
935 int64 args[1]; |
972 |
936 args[0] = p->president_name_2; |
973 if (p->president_name != NULL) { |
937 buff = GetStringWithArgs(buff, p->president_name_1, args, last); |
974 buff = strecpy(buff, p->president_name, last); |
|
975 } else { |
|
976 int64 args[1]; |
|
977 args[0] = p->president_name_2; |
|
978 buff = GetStringWithArgs(buff, p->president_name_1, args, last); |
|
979 } |
938 break; |
980 break; |
939 } |
981 } |
940 |
982 |
941 case SCC_SETCASE: { // {SETCASE} |
983 case SCC_SETCASE: { // {SETCASE} |
942 /* This is a pseudo command, it's outputted when someone does {STRING.ack} |
984 /* This is a pseudo command, it's outputted when someone does {STRING.ack} |