Today I Learned :
- 팀 프로젝트 작업
- 시작화면 아스키아트 적용
- 케릭터 생성에 직업 추가 (5종)
- 직업에 따른 스킬 2개씩 부여
- 전사
강격 : 딜*120% 마나 5
이중타격 : 딜*180% 마나 15
마법사
불화살 : 딜*130% 마나 5
블리자드 : 딜*120% 전체공격 마나 20
궁수
연사 : 딜*90% 전체공격 마나 10
저격 : 딜*220% 마나 20
도적
기습 : 딜*150% 마나 10
함정 : 딜*200% 마나 15
성직자
신성타격 : 딜*150% 마나 10
치료 : 딜*150% 마나 10
- 전사
- 그 외 깃, 노션 정리 등
- Padright 이슈 수정 https://cgtg.tistory.com/465
- Enum 저장 이슈
- 기본세팅으로는 Enum을 숫자로 저장한다.
- Enum컨버터를 적용할 필드 위에 [JsonConverter(typeof(JsonStringEnumConverter))]를 작성하면 숫자형식이 아닌 Enum명을 스트링으로 저장한다.
- 혹은 직렬화/역직렬화 할때 옵션을 준다.
- var options = new JsonSerializerOptions { Converters = { new JsonStringEnumConverter() } };
Player player = JsonSerializer.Deserialize<Player>(json, options); - 역직렬화시 에러가 나는경우
- 생성자를 json 형식에 맞춰서 만들어 준다.
- 혹은 프로퍼티가 모두 get;set; 적용된 값이면 public Player() { } 만으로 적용된다.
Padright 기능 수정
▶ CharUnicodeInfo.GetUnicodeCategory 반환값
- UppercaseLetter: 대문자 알파벳 문자
- LowercaseLetter: 소문자 알파벳 문자
- DecimalDigitNumber: 10진수 숫자
- MathSymbol: 수학 기호
- CurrencySymbol: 통화 기호
- OtherLetter: 다른 글자
위와 같이 반환이 되는데 이를 통하여 한글의 경우를 예외처리.
실질적으로 padding 을 얼마나 줘야 하는지 계산하여 적용한다.
public static string PadRightMixedText(string text, int padLength)
{
int curLength = CalculateLength(text);
int padding = padLength - curLength;
return text.PadRight(text.Length + padding);
}
public static int CalculateLength(string text)
{
int length = 0;
foreach (char c in text)
{
if (char.GetUnicodeCategory(c) == System.Globalization.UnicodeCategory.OtherLetter)
{
length += 2;
}
else
{
length += 1;
}
}
return length;
}
'TIL' 카테고리의 다른 글
20240112 TIL (0) | 2024.01.12 |
---|---|
20240111 TIL (1) | 2024.01.11 |
20240109 TIL (0) | 2024.01.09 |
20240108 TIL (1) | 2024.01.08 |
20240105 TIL (0) | 2024.01.05 |