Closed radius75 closed 11 years ago
Usuniecie przecinka to nie wszystko, pracuje tez nad dodaniem separatora tysiecy, ale najpierw trzeba ustalic format pieniedzy.
separator jako spacja lub , ? No to faktycznie uczyni te ceny bardziej czytelnymi 10 000 000.85 10,000,000.85
albo całkowicie bez groszy 1,000,000,085
edit jeden wniosek, zastosowanie w grze groszy to 3 a nie 2 separatory przy 9cyfrowej liczbie 1,000,000.00 100,000,000
problem może wystąpić w tych największych cenach z dużą ilością cyfr. braknie miejsca na separatory i rozjedzie się na inne kolumny?
Kwestia czy 9-cyfrowe ceny z separatorami groszy i tysięcy zmieszczą się w tak blisko siebie będących kolumnach jak zakup 'ship' w stoczni. Ale kolumnę 'wymiana' można jeszcze ciut w prawo przesunąć. Problem może być jeśli dodane zostanie coś z ceną mającą 10 lub więcej cyfr. Portfel gracza raczej nie osiągnie aż takich wartości ponad 10 cyfr, ale kto wie:)
EDIT
Tak to by wyglądało, może screen Ci się przyda jako przykład na 4 warianty;)
Liczba 9cyfrowa, 10 cyfr już stwarzałoby niewielki problem.
EDIT zapomniałem o $ no to 10 cyfr już na bank nie mieści się
edit wersja bez groszy (centów) i z przecinkami jako separatorem tysięcy jest tą która będzie najmniej rozlazłą ale i tak na tym screenie wypadało by przesunąć drugą kolumną kilka pikseli w prawo
edit
tak by wyglądało bez przesuwania kolumn
edit StationShipEquipmentForm.cpp przesunięcie kolumny o 2 pkt to max (275 ->277) bo najedzie nazwą na następną ... innerbox->Add(new Gui::Label(format_money(REMOVAL_VALUE_PERCENT * m_station->GetPrice(type) / 100)), 275, num*YSEP); ... heading->Add((new Gui::Label(Lang::PRICE_TO_REMOVE))->Color(col), 275, 0); ...
btw.. wiesz jak po Chorwacku jest 'temperatura kadłuba'? Ja już wiem i popłakałem się z tego powodu:D
edit StationShipMarketForm.cpp przesunięcie kolumny o 2 pkt to max (275 ->277) bo najedzie nazwą na następną ... heading->Add((new Gui::Label(Lang::PART_EX))->Color(col), 275, 0); ... f->Add(new Gui::Label(format_money((*i).price - Pi::player->GetFlavour()->price) ), 275, 0); ...
Teraz dopiero zauważyłem :/ ze wszystkie ceny statków i sprzętu są 8cyfrowe tak że ewentualne przesuwanie kolumn o 1 czy 2 pkt może być niekonieczne. No i zmieści się wersja z . i , (centy) , przy 8cyfrowych liczbach zawsze wyjdą 2 separatory. Wersja ze 'spacjami' jest najdłuższa ale wejdzie na styk
Któraś z tych wersji ewentualnie by przeszła 8 cyfr
Bez centów: " "
Bez centów: ","
Z centami: " " + "."
Z centami: "," + "."
osobiście wersja nr 3 mi się podoba
ps. zawsze separator tysięcy (nawet centów) można dodać jako nowy string do plików jezyka ;) wtedy w zależności od regionu (tłumaczenia) każdy ustawi po swojemu (bo chyba są tu jakieś różnice . , czy spacja)
poprawiam się są statki z ceną 9cyfową, bez przesunięcia kolumn raczej się nie obejdzie Tak pomyślałem że najbardziej ceny by były czytelne gdyby jakaś mądra procedura równania do prawej strony.
1 000,56 23 676.00 22,56
_1 000,56 23 676.00 ___22,56
edit nie wiem jak w tych postach formatować tekst wrzuce obrazek
edit
szybki fotomontaż w pierwszej kolumnie cen dla przykładu formatowanie do prawej strony
procedura musiała by się opierac na liczeniu pikseli żeby wyliczyć o ile przesunąć albo rysować string "od końca" (od ostatniej cyfry) w lewo
Niestety to wszystko nie jest takie proste jak myślisz (i jak ja myślałem), jeśli chodzi o dodanie separatora tysięcy to 2 miesiące temu spędziłem nad tym tydzień i zrobiłem sobie przerwę bo się wk... snprintf w standardzie nie ma formatowania tysięcy, trzeba by użyć innego polecenia co troszkę komplikuje sprawę. Dodatkowo jeśli chodzi o format kasy to już widzę że są zdecydowani całkowicie zrezygnować z wyświetlania "groszy", ale założę się o beczkę piwa że nie w taki sposób jaki podałem jako przykład w moim pull.
a samo formatowanie do prawej, bez separatora x1000, polepszyło by wgląd w ceny?
procedura skomplikowana, zdaję sobie sprawę bo z matematyki byłem dobry i w basic na c64 ;)
zakładki z cenami mają max liczbę cyfr inną (inna w statkach, inna w sprzęcie, inna w produktach) tak że ilość pikseli do przesunięcia w prawo będzie inna za każdym razem dodatkowo każda cena ma różną długość w pikselach i to kolejna zmienna do odejmowania przy przesuwaniu w prawo
co innego procedura pisząca od końca w lewo, jedna stała wartość dla przesunięcia
edit ps ale napisanie procedury piszącej od końca w lewo i tak by musiało opierać się zapewne na liczeniu pikseli xD
edit może myślą o odjęciu 1-2 cyfr i zaokrągleniu cen na stałe a nie tylko o zrezygnowaniu z x.01
Raczej nie, doszło by do sytuacji w której np. wodór miałby niezmienną cenę lub drożał od razu o 100%.
aaa.. na % opierają się operacje wskaźnikami, no tak.
Btw.
zauważyłem kolejny PR z nowymi stringami i zmianami dla menu opcji
+COMPRESS_TEXTURES +Compress Textures
-Other graphics settings +Other graphics settings (restart to apply)
-Use shaders (restart to apply) +Use shaders
Drobnostka :)
ha, no tak. Przy formatowaniu liczb to pikuś :)
Ps. czy jest możliwość kasowania własnych 'Branch' z poziomu przeglądarki? Nie znajduję takich opcji na github w menu admin. Wydaje mi się to dziwne:]
A czy tak naprawdę nie chodzi w tym issue- 133 o to żeby po prostu nie wyświetlało już centów przy liczbach większych od >$999.99 ? Ale mimo to prowadziło obliczenia na przecinkach.
$900.95 wyświetlało by jako $900.95 $1000.95 wyświetlało by w zaokrągleniu [?] $1001(albo jako $1001~) zarówno wartości zakupu jak i wymiany. wszystkich produktów i kasy gracza
Jesli nie >$999.99 bo za szybko, to może >$9999.99. $10000 już bez przecinka.
Ale tylko jeśli chodzi o wyrzucenie na ekran, przecinki nadal by brało pod uwagę w obliczeniach.
Zaokrąglanie przy x1000 wyglądało by mniej więcej tak:
jak widać wartość za wymianę -ORZEŁ jeszcze jest po przecinku.
Przy zakupie sprzętu już widać pewien zgrzyt:
Chyba niepotrzebnie wyświetla wartość z przecinkiem dla .00
Oba screeny są obrobione i nie ma tu zaokrąglenia do jedności.
Przy kasowaniu zbędnego .00 pozostało by to:
Jedynie Smart Missile za wymianę.
Bo wszystkie wartości powyżej 999.99 byłyby i tak zaokrąglone do jedności.
Oczywiście zaokrąglanie dla .00 to 0 do jedności:)
Taki wariant formatowanie wg mnie ładnie się prezentuje. A tak naprawdę nie zmienia nic w cenach, czy obliczeniach skoku cen. Jeśli coś tu minimalnie zdrożeje to pojawi się wartość po przecinku.
Można przewidzieć problem ze stanem Cash kiedy płynnie przeskoczy w trakcie zakupu/sprzedaży np. ze 100.85 na 102 Czy nie trzeba będzie kasować .85 dodając za liczbą 102 jakieś " " (nakładanie się krótszego tekstu na dłuższy)
Przy cenach to nie grozi bo nie będą/są odświeżane na bieżąco podwyżki w trakcie zakupu?
Przykładowy ciąg od liczby 125 z kasowaniem .00 i bez konieczności zaokrąglania: 125 (125.00 wartość faktyczna) 125.01 ... 125.10 (zachować format całych setnych dla .10 .20 .30 etc.) ... 125.99 126 (126.00) 126.01 etc.
przykładowy ciąg od liczby 999.99 już z zaokrąglaniem: 999.99 1000 (1000.00) 1000 (1000.01) ... 1000 (1000.44) 1001 (1000.45) < zaokrąglanie przy .45 w górę 1001 (1000.46) ... 1001 (1001.44) 1002 (1001.45) < .045 w górę etc.
Ale skoro już zrobiłeś [?] wcześniej zaokrąglanie do jedności (bez setnych), to wystarczy zrobić teraz warunek:
if (liczba ma .00) lub (liczba jest >=1000) to zaokrąglamy tę liczbę dla wyświetlenia:) else wyświetlamy tę liczbę z setnymi po przecinku (normalnie)
I cały mój ostatni wywód w tak prostym rozwiązaniu? ^^
Pozdrawiam
PS Jeśli nie ma w kodzie narzędzia do sprawdzania czy jest .00 czy nie ma to można policzyć to matematycznie.
Może w ten sposób przy pomocy tego zaokrąglenia? np. liczba $25.88 a = 25.88 x 100 = 2588 b = (25.88)zaokrąglamy x 100 = 26x100 = 2600
if a - b = 0 to zaokraglamy właściwa liczbę dla wyświetlenia i pozbywamy się .00 else nie zaokrąglamy
matematycznie tak bym to zrobił na commodore64 basic xD
Wydaje mi się że usunięcie przecinka daje tak naprawdę niewielką poprawę czytelności. Może rozwiązaniem byłoby pozostawienie tego przecinka ale zastosowanie procedury która pomijała by wyświetlanie .00 a zezwalała na wartości inne od .00 (.85 itd) Podejrzewam ze to ciut skomplikowane by było.
edit
np wartość 100.00 wyświetla jako 100 ale 100.85 juz jako 100.85
edit ale to jedynie przy zakupie sprzętu likwiduje te .00 nieszczęsne ewentualnie zastosować można też przy stanie konta