GizmoR13 / pioneer

space simulation adventure game
http://pioneerspacesim.net/
1 stars 1 forks source link

.00 #17

Closed radius75 closed 11 years ago

radius75 commented 11 years ago

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

GizmoR13 commented 11 years ago

Usuniecie przecinka to nie wszystko, pracuje tez nad dodaniem separatora tysiecy, ale najpierw trzeba ustalic format pieniedzy.

radius75 commented 11 years ago

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

radius75 commented 11 years ago

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)

radius75 commented 11 years ago

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

GizmoR13 commented 11 years ago

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.

radius75 commented 11 years ago

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

GizmoR13 commented 11 years ago

Raczej nie, doszło by do sytuacji w której np. wodór miałby niezmienną cenę lub drożał od razu o 100%.

radius75 commented 11 years ago

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

GizmoR13 commented 11 years ago

Drobnostka :)

radius75 commented 11 years ago

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:]

radius75 commented 11 years ago

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.

radius75 commented 11 years ago

Zaokrąglanie przy x1000 wyglądało by mniej więcej tak: jak widać wartość za wymianę -ORZEŁ jeszcze jest po przecinku.

radius75 commented 11 years ago

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.

radius75 commented 11 years ago

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.

radius75 commented 11 years ago

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

radius75 commented 11 years ago

https://github.com/radius75/pioneer/compare/adv_money_format