Я пытаюсь закодировать глобальную таблицу поиска.
У меня есть игровые данные, которые хранятся в формате символов / строк в plist, но при загрузке они должны быть в формате целых чисел / идентификаторов.
Например, в файле данных уровня "p" означает проигрыватель. В игровом коде игрок представлен как целое число 1. Это позволяет мне выполнять побитовые операции и т. Д. Я здесь значительно упрощаюсь, но пытаюсь донести смысл. Кроме того, есть преобразование в координаты для спрайта на листе спрайта.
Прямо сейчас это преобразование строки -> целое число, целое число -> строка, целое число -> координата и т. Д. Выполняется в нескольких местах кода с использованием оператора case. Конечно, это воняет, и я бы предпочел сделать это с помощью поиска по словарю.
Я создал класс levelInfo и хочу определить словарь для этого преобразования, а затем методы класса для вызова, когда мне нужно выполнить преобразование или иным образом работать с данными уровня.
NSString *levelObjects = @"empty,player,object,thing,doohickey";
int levelIDs[] = [0,1,2,4,8];
// etc etc
@implementation LevelInfo
+(int) crateIDfromChar: (char) crateChar {
int idx = [[crateTypes componentsSeparatedByString:@","] indexOfObject: crateChar];
return levelIDs[idx];
}
+(NSString *) crateStringFromID: (int) crateID {
return [[crateTypes componentsSeparatedByString:@","] objectAtIndex: crateID];
}
@end
Есть ли лучший способ сделать это? Кажется неправильным создавать эти временные массивы или словари или что-то еще для каждого вызова, чтобы сделать этот перевод. И я не знаю, как объявить константу NSArray или NSDictionary.
Пожалуйста, расскажите мне лучше ...