You could check for the code where production programs (for mines) and
production sites (for other sites) send "Out of Resources" messages. The
production program has a handle on the production site, so both of these
could set a flag in the production site that the AI could check for, or
whenever the player gets a notification message the AI gest a message as
well. This way, the calculation of the check if a site is out of
resources remains with the production and worker programs.



29/07/2014 08:52, sgrìobh Tibor Bamhor:
> SirVer,
> 
> 
> I tried, spend some time, but all those namespaces, classes, virtual
> functions are too complicated to me. I even failed to identify a place
> (source file) where such function would logically belong.
> 
> 
> :(
> 
> 
> 
> 2014-07-25 22:58 GMT+02:00 Holger Rapp <holgerr...@gmx.net
> <mailto:holgerr...@gmx.net>>:
> 
>     Hooray \o/ !!!
> 
>     On 25.07.2014, at 22:23, Tibor Bamhor <tibor...@gmail.com
>     <mailto:tibor...@gmail.com>> wrote:
> 
>>     I will look at it...and do what I can..
>>
>>
>>     2014-07-25 22:08 GMT+02:00 Holger Rapp <holgerr...@gmx.net
>>     <mailto:holgerr...@gmx.net>>:
>>
>>         Which just strengthens my argument, right? The code there is
>>         already copy and pasted and if anything changes you have to
>>         change it twice. With your change we need to change it three
>>         times.
>>
>>         You are a good programmer and can do it. If you do not do it
>>         you accrue technical debt that others have to suffer under
>>         later on.
>>
>>
>>         On 25.07.2014, at 21:52, Tibor Bamhor <tibor...@gmail.com
>>         <mailto:tibor...@gmail.com>> wrote:
>>
>>>         similar procedure is used twice in production_program.cc, but
>>>         both istances adds some own woodo-magic I dont fully
>>>         understand and dont need. So there is no count-resources-only
>>>         algorithm used there so for me it is hard to integrate. Maybe
>>>         for more skilled programmer it would be doable...
>>>
>>>
>>>         2014-07-25 21:35 GMT+02:00 Holger Rapp <holgerr...@gmx.net
>>>         <mailto:holgerr...@gmx.net>>:
>>>
>>>
>>>             On 25.07.2014, at 21:31, Tibor Bamhor <tibor...@gmail.com
>>>             <mailto:tibor...@gmail.com>> wrote:
>>>
>>>>             Hi,
>>>>
>>>>             In the meantime I looked into particular cc file (I dont
>>>>             remember which one) and in AI I implemented basically
>>>>             the same procedure - AI counts current and starting
>>>>             amount of resources within radius around a mine and
>>>>             calculate the % of exhaustion.
>>>
>>>             That is really bad. We already have enough copy & pasted
>>>             code in Widelands. Please do not add to this. Pull the
>>>             common function into a new common header and use it from
>>>             the AI and the old code, please.
>>>
>>>>             Seems it works fine.
>>>>
>>>>             Also it would be usefull if AI could query&modify ware's
>>>>             target quantities. So far there are no ready-for-AI
>>>>             functions for this it seems. I am considering to write
>>>>             them, but perhaps some more skillfull programmer could
>>>>             do the job.
>>>>
>>>>             To be consistent with similar functions used by AI, new
>>>>             functions could be:
>>>>             int send_player_get_ware_target(ware)
>>>>             bool send_player_set_ware_target(ware, int)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>             2014-07-25 21:01 GMT+02:00 Holger Rapp
>>>>             <holgerr...@gmx.net <mailto:holgerr...@gmx.net>>:
>>>>
>>>>
>>>>                 On 25.07.2014, at 00:04, Tibor Bamhor
>>>>                 <tibor...@gmail.com <mailto:tibor...@gmail.com>> wrote:
>>>>
>>>>>                 well, after some investigation in code it seems
>>>>>                 that mine is able to mine some % of resources
>>>>>                 within some radius. Obviously it does not mine
>>>>>                 resources evenly across fields, so to check one
>>>>>                 (even central) field is not enough.
>>>>
>>>>                 You could randomize the field that resources are
>>>>                 taken from, so that this happens evenly. 
>>>>
>>>>>
>>>>>                 Also it seems that there is no avaiable function to
>>>>>                 query if mineable resources are mined or not yet.
>>>>>                 Of course, the mine sends a message ("cant find any
>>>>>                 more resources") but I am not sure if AI can easily
>>>>>                 read them. It would help much…
>>>>
>>>>                 So there must be a method in the mine that does it
>>>>                 already. You can pull it out and make it available
>>>>                 for the AI to use. Something like void
>>>>                 percentage_of_coal_available(field, radius,
>>>>                 coal_resource_index,
>>>>                 & total_pieces_of_coal_at_start,
>>>>                 &total_pieces_of_coal_now);
>>>>
>>>>>
>>>>>
>>>>>
>>>>>                 ---------- Forwarded message ----------
>>>>>                 From: *Tibor Bamhor* <tibor...@gmail.com
>>>>>                 <mailto:tibor...@gmail.com>>
>>>>>                 Date: 2014-07-24 23:05 GMT+02:00
>>>>>                 Subject: can find any more resources
>>>>>                 To: widelands-dev@lists.launchpad.net
>>>>>                 <mailto:widelands-dev@lists.launchpad.net>
>>>>>
>>>>>
>>>>>                 Hi,
>>>>>
>>>>>                 Please explain to me:
>>>>>
>>>>>                 I am watching a game (testing AI), there is a mine
>>>>>                 that shows "can't find any more resources",
>>>>>                 performance % is 0, it is full of food, yet when I
>>>>>                 click on it and click DBG it shows coal: 19/20.
>>>>>                 This is coal mine (the first/lowest level of mine).
>>>>>
>>>>>                 Now for AI it is quite relevant question - AI test
>>>>>                 remaining resource on the field and if 0, the mine
>>>>>                 is to be dismounted. But if mine is not able to
>>>>>                 mine all resources on a field, then things are
>>>>>                 getting more complicated.
>>>>>
>>>>>                 Now I noticed that mines have aihint like
>>>>>                 mines_percent=30. Does it mean that this mine can
>>>>>                 mine only 30% of initial amount 20? 30% of 20 is 6
>>>>>                 so the mine should stuck on remaining resources
>>>>>                 14/20, or not?
>>>>>
>>>>>                 Waiting for explanation, thanks! 
>>>>>
>>>>>                 Tibor
>>>>>
>>>>>
>>>>>                 _______________________________________________
>>>>>                 Mailing list: https://launchpad.net/~widelands-dev
>>>>>                 Post to     : widelands-dev@lists.launchpad.net
>>>>>                 <mailto:widelands-dev@lists.launchpad.net>
>>>>>                 Unsubscribe : https://launchpad.net/~widelands-dev
>>>>>                 More help   : https://help.launchpad.net/ListHelp
>>>>
>>>>
>>>>             _______________________________________________
>>>>             Mailing list: https://launchpad.net/~widelands-dev
>>>>             Post to     : widelands-dev@lists.launchpad.net
>>>>             <mailto:widelands-dev@lists.launchpad.net>
>>>>             Unsubscribe : https://launchpad.net/~widelands-dev
>>>>             More help   : https://help.launchpad.net/ListHelp
>>>
>>>
>>
>>
> 
> 
> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~widelands-dev
> Post to     : widelands-dev@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~widelands-dev
> More help   : https://help.launchpad.net/ListHelp
> 
> 
> 
> No virus found in this message.
> Checked by AVG - www.avg.com <http://www.avg.com>
> Version: 2014.0.4716 / Virus Database: 3986/7937 - Release Date: 07/28/14
> 

_______________________________________________
Mailing list: https://launchpad.net/~widelands-dev
Post to     : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to