자원과 보석과 관계를 찾아봤는데
한국어로 나온 사이트에선 잘 없어서 해외 사이트에서 까지 찾아봤습니다.
WIKI 에 계산기는 있는데 이 계산이 도저히 어떻게 되는지 몰라서 찾는데 꽤 어려움을 겪었습니다.
각 자원과 보석은 구간을 가지고 있습니다.
예를 들어 시간을 가지고 계산을 하면 1분은 1개 1시간은 20개 24시간은 260개 1주일은 1000개
2시간은? (2시간 - 1시간) 구간을 계산하고 + 1시간 분량(20개) 로 이뤄 집니다.
아래는 좀 어려울수도 있으니 이해를 하고 싶으신분만 더 접근해보세요.
정확한 공식은
(int)(((value - range[minRange])*1.0f / ((range[maxRange]-range[minRange])*1.0f/(gemRange[maxRange]-gemRange[minRange])) + gemRange[minRange]) + bonus);
이렇게 됩니다.
helper app에 있던 소스인데 참고 하세요.
helper app에서 계산기를 삭제하기로 마음을 먹어서 공개합니다.
public static final int RESOURCE_TYPE_GOLD = 1000;
public static final int RESOURCE_TYPE_DARK_ELIXIR = 1001;
public static final int RESOURCE_TYPE_TIME = 1002;
public static final int RESOURCE_TYPE_GEM = 1003;
public static int[] GOLD_RANGE = {100,1000,10000,100000,1000000,10000000};
public static int[] DARK_ELIXIR_RANGE = {1,10,100,1000,10000,100000};
public static int[] RESOURCE_GEM_RANGE = {1,5,25,125,600,3000};
public static int[] TIME_GEM_RANGE = {1,20,260,1000};
public static int[] TIME_RANGE = {60, 3600, 86400, 604800};
public int calculate_resource_to_gem(int type,int value) {
int ret = -1;
int minRange = -1;
int maxRange = -1;
int[] range = null;
int[] gemRange = null;
float bonus = 0f;
if(type == RESOURCE_TYPE_GOLD) {
range = GOLD_RANGE;
gemRange = RESOURCE_GEM_RANGE;
bonus = 0.5f;
} else if(type == RESOURCE_TYPE_DARK_ELIXIR) {
range = DARK_ELIXIR_RANGE;
gemRange = RESOURCE_GEM_RANGE;
bonus = 0.5f;
} else if(type == RESOURCE_TYPE_TIME) {
range = TIME_RANGE;
gemRange = TIME_GEM_RANGE;
bonus = 0.0f;
} else {
return -1;
}
int i=0;
if(range[0] > value) {
return 1;
}
for( i=1;i