summaryrefslogtreecommitdiff
path: root/src/economy.cpp
AgeCommit message (Collapse)Author
2020-01-28Change: Algorithm for transfer feeder paymentsJonathan G Rennison
The original algorithm pays intermediate legs in feeder systems based on the start and end stations of that particular leg. This tends to result in large negative payments on the final leg for journeys with many feeder legs, as the overall feeder payment increases with the number of legs, and the final leg is penalised for discrepancies between the previous leg payments and the actual payment for delivery from the source to the destination. The feeder share setting is a partial mitigation, however it is difficult to tune as a suitable value depends on the number of legs and the network topology, which are often not the same for all vehicles. The new incremental algorithm pays the cargo payment from the source station to the end station of the current leg, minus any previous transfer feeder payments for each leg. This prevents unbounded increase of feeder payments and therefore avoids the issue of excessive negative payments on the final leg. Feeder payments may be negative, e.g. in the case of poorly performing or highly indirect legs. This is better than penalising the final leg. This mode reduces the need to tune the feeder shares setting to the current network. The feeder share setting applies in the existing way.
2019-12-23Fix #7430: when train visits station, only reset time_since_pickup if has ↵Mingwei Samuel
room to load
2019-12-21Codechange: Replace FOR_ALL_TOWNS with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_SUBSIDIES with range-based for loopsglx
2019-12-21Codechange: Replace story related FOR_ALL with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_SIGNS with range-based for loopsglx
2019-12-21Codechange: Replace vehicle related FOR_ALL with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_GROUPS with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_GOALS with range-based for loopsglx
2019-12-21Codechange: Replace station related FOR_ALL with range-based for loopsglx
2019-12-21Codechange: Replace FOR_ALL_COMPANIES with range-based for loopsglx
2019-11-10Cleanup: Removed SVN headersS. D. Cloudt
2019-10-19Feature: Configure minimum share trading yearsJack Baron
2019-09-29Fix: Some typos found using codespellJMcKiern
2019-05-01Feature: Add NotRoadTypes (NRT)peter1138
2019-04-29Codechange: Remove Company/OwnerByte typesCharles Pigott
2019-04-11Fix #7491: Send company update admin message when bankruptcy counter changes.peter1138
2019-04-10Codechange: Use null pointer literal instead of the NULL macroHenry Wilson
2019-04-05Fix #7439: don't overwrite CompanyRemoveReason with ClientID (#7465)glx22
2019-03-26Codechange: Removed SmallVector completelyHenry Wilson
2019-03-26Codechange: Replaced SmallVector::[Begin|End]() with std alternativesHenry Wilson
2019-03-26Codechange: Replaced SmallVector::Include() with include()Henry Wilson
2019-03-26Codechange: Replace SmallVector::Clear() with std::vector::clear()Henry Wilson
2019-03-20Remove: ENABLE_NETWORK switchPatric Stout
This switch has been a pain for years. Often disabling broke compilation, as no developer compiles OpenTTD without, neither do any of our official binaries. Additionaly, it has grown so hugely in our codebase, that it clearly shows that the current solution was a poor one. 350+ instances of "#ifdef ENABLE_NETWORK" were in the code, of which only ~30 in the networking code itself. The rest were all around the code to do the right thing, from GUI to NewGRF. A more proper solution would be to stub all the functions, and make sure the rest of the code can simply assume network is available. This was also partially done, and most variables were correct if networking was disabled. Despite that, often the #ifdefs were still used. With the recent removal of DOS, there is also no platform anymore which we support where networking isn't working out-of-the-box. All in all, it is time to remove the ENABLE_NETWORK switch. No replacement is planned, but if you feel we really need this option, we welcome any Pull Request which implements this in a way that doesn't crawl through the code like this diff shows we used to.
2019-03-17Fix f58fa80e: Wrong company performance rating when money exceeds INT_MAX. ↵stormcone
(#7382) Company performance rating calculation does not take into account the companies' money when those exceeds INT_MAX.
2019-03-09Feature: Non-rectangular sparse station catchment area.Peter Nelson
2019-03-09Codechange: Convert IndustryVector to a std::set.peter1138
2019-03-08Feature: Industries with neutral stations (e.g. Oil Rig) only supply/accept ↵PeterN
cargo to/from their neutral station. (#7234) This change is a controlled by a game setting, located under Environment -> Industries which allows toggling the behaviour. It defaults to enabled. "Company stations can serve industries with attached neutral stations" When enabled, industries with attached neutral station (such as Oil Rigs) may also be served by company-owned stations built nearby. This is the traditional behaviour. When disabled, these industries may only be served by their neutral station. Any nearby company-owned stations won't be able to serve them, nor will the neutral station serve anything else other than the industry.
2019-03-02Fix #6633: Cargo monitor industry delivery now accounts for which IndustryID ↵Samu
the cargo was delivered to
2019-02-21Change: Owner of vehicle with exclusive transport rights may now load cargo ↵SamuXarick
from neutral stations (#7256)
2019-02-04Add: CompanyCtrlAction enum for CMD_COMPANY_CTRL actionsglx
2019-01-29Fix 11ab3c4ea2f: Vehicles could not be refitted to cargo IDs higher than 32.Peter Nelson
2018-11-25Fix #6498: Use int64 for all company rating calculationsNiels Martin Hansen
2018-11-03Add: NewGRF support for 16-in-16-out industriesNiels Martin Hansen
2018-11-03Add: Industries can produce and accept up to 16 different cargoesNiels Martin Hansen
2018-10-31Doc: Lots and lots of doxymentation fixesCharles Pigott
2018-06-27Codechange: Silence -Wclass-memaccess warnings with GCC8Charles Pigott
2018-05-21Change: Add CargoTypes type for cargo masks. (#6790)PeterN
2018-03-11(svn r27981) -Change [FS#6679]: Check companies for bankruptcy before ↵frosch
subtracting reoccuring monthly costs. (Samu)
2017-08-13(svn r27893) -Codechange: Use fallthrough attribute. (LordAro)frosch
2017-03-13(svn r27788) -Fix [FS#6536]: Get vehicle load amount after executing new ↵peter1138
cargo trigger.
2016-05-29(svn r27585) -Fix [FS#6437]: Enforce a non-zero load amount for all ↵frosch
vehicles, so that vehicles can process their cargo reservations.
2016-05-29(svn r27584) -Codechange: Add some assertions about Vehicle::cargo_payment.frosch
2015-05-11(svn r27282) -Fix [FS#6254]: Enforce the company's default service intervals ↵frosch
when purchasing another company. (Johnnei)
2015-05-11(svn r27281) -Codechange: Do not shadow local variables with other local ↵frosch
variables in sub-scopes.
2014-09-24(svn r26918) -Fix [FS#6110]: Reserve cargo only after unloading finished or ↵fonsinchen
if the vehicle has the desired cargo already
2014-09-24(svn r26917) -Revert (r26857): It broke improved loading.fonsinchen
2014-09-20(svn r26857) -Fix [FS#6110]: Reserve cargo after refitting and only if ↵fonsinchen
necessary.
2014-09-18(svn r26847) -Fix [FS#6110]: Don't assign a next hop when returning cargofonsinchen
2014-05-13(svn r26586) -Fix [FS#5995]: Consider multiheaded trains in station refits ↵fonsinchen
(and clean up a bit)