ALMaSS Hare ODDox  1.1
The hare model description following ODdox protocol
WWheatPControl.cpp
Go to the documentation of this file.
1 //
2 // WWheatPControl.cpp
3 //
4 /*
5 *******************************************************************************************************
6 Copyright (c) 2011, Christopher John Topping, Aarhus University
7 All rights reserved.
8 
9 Redistribution and use in source and binary forms, with or without modification, are permitted provided
10 that the following conditions are met:
11 
12 Redistributions of source code must retain the above copyright notice, this list of conditions and the
13 following disclaimer.
14 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
15 the following disclaimer in the documentation and/or other materials provided with the distribution.
16 
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
18 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
19 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
20 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
22 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 ********************************************************************************************************
26 */
27 
28 #include "../../Landscape/ls.h"
29 #include "../../Landscape/cropprogs/WWheatPControl.h"
30 
31 extern CfgFloat cfg_ins_app_prop1;
32 extern CfgFloat cfg_herbi_app_prop;
33 extern CfgFloat cfg_fungi_app_prop1;
34 extern CfgFloat cfg_greg_app_prop;
35 extern CfgFloat cfg_pest_product_1_amount;
36 
37 bool WWheatPControl::Do( Farm *a_farm, LE *a_field, FarmEvent *a_ev )
38 {
39  m_farm = a_farm;
40  m_field = a_field;
41  m_ev = a_ev;
42 
43  bool done = false;
44 
45  switch ( m_ev->m_todo )
46  {
47  case wwpc_start:
48  {
49  WWPC_AUTUMN_PLOUGH = false;
50  WWPC_WAIT_FOR_PLOUGH = false;
51  int d1 = g_date->OldDays() + g_date->DayInYear( 15,8 );
52  if (g_date->Date() >= d1)
53  {
54  // if we are really too late then lie and say we are done
55  if (g_date->DayInYear()>g_date->DayInYear(1,10)) {
56  // ---FN---
57  done=true;
58  break;
59  }
60  }
61  if (g_date->Date() >= d1) d1 += 365;
62  if (m_farm->IsStockFarmer()) // StockFarmer
63  {
64  SimpleEvent( d1, wwpc_ferti_s1, false );
65  }
66  else SimpleEvent( d1, wwpc_ferti_p1, false );
67  }
68  break;
69 
70  case wwpc_ferti_p1:
71  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
72  {
73  if (!m_farm->FP_Slurry( m_field, 0.0,
74  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
75  SimpleEvent( g_date->Date() + 1, wwpc_ferti_p1, true );
76  break;
77  }
78  }
79  SimpleEvent( g_date->Date(),wwpc_autumn_plough, false );
80  break;
81 
82  case wwpc_ferti_s1:
83  if (!m_farm->FA_Slurry( m_field, 0.0,
84  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
85  SimpleEvent( g_date->Date() + 1, wwpc_ferti_s1, true );
86  break;
87  }
88  // This may cause two applications of fertilizer in one day...
89  // --FN--
90  SimpleEvent( g_date->Date(),wwpc_ferti_s2, false );
91  // --FN--
92  break;
93 
94  case wwpc_ferti_s2:
95  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
96  {
97  if (!m_farm->FA_Manure( m_field, 0.0,
98  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
99  SimpleEvent( g_date->Date() + 1, wwpc_ferti_s2, true );
100  break;
101  }
102  }
103  SimpleEvent( g_date->Date(),wwpc_autumn_plough, false );
104  break;
105 
106  case wwpc_autumn_plough:
107  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
108  {
109  if (!m_farm->AutumnPlough( m_field, 0.0,
110  g_date->DayInYear( 1,10 ) - g_date->DayInYear())) {
111  SimpleEvent( g_date->Date() + 1, wwpc_autumn_plough, true );
112  break;
113  }
114  else
115  {
116  WWPC_AUTUMN_PLOUGH=true;
117  SimpleEvent( g_date->Date()+1,wwpc_autumn_harrow, false );
118  break;
119  }
120  }
121  SimpleEvent( g_date->Date()+1,wwpc_stubble_harrow1, false );
122  break;
123 
124  case wwpc_autumn_harrow:
125  if (!m_farm->AutumnHarrow( m_field, 0.0,
126  g_date->DayInYear( 10,10 ) - g_date->DayInYear())) {
127  SimpleEvent( g_date->Date() + 1, wwpc_autumn_harrow, true );
128  break;
129  }
130  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,9 ),
131  wwpc_autumn_sow, false );
132  break;
133 
135  if (!m_farm->StubbleHarrowing( m_field, 0.0,
136  g_date->DayInYear( 10,10 ) - g_date->DayInYear())) {
137  SimpleEvent( g_date->Date() + 1, wwpc_stubble_harrow1, true );
138  break;
139  }
140  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,9 ),
141  wwpc_autumn_sow, false );
142  break;
143 
144  case wwpc_autumn_sow:
145  if (!m_farm->AutumnSow( m_field, 0.0,
146  g_date->DayInYear( 20,10 ) - g_date->DayInYear())) {
147  SimpleEvent( g_date->Date() + 1, wwpc_autumn_sow, true );
148  break;
149  }
150  // --FN-- Oooo!
151  //SimpleEvent( g_date->OldDays() + g_date->Date( ),
152  // wwpc_autumn_roll, false );
153  SimpleEvent( g_date->Date() + 1, wwpc_autumn_roll, false );
154  break;
155 
156  case wwpc_autumn_roll:
157  if (( m_ev->m_lock || m_farm->DoIt( 0 ))&& (WWPC_AUTUMN_PLOUGH))
158  {
159  if (!m_farm->AutumnRoll( m_field, 0.0,
160  g_date->DayInYear( 27,10 ) - g_date->DayInYear())) {
161  SimpleEvent( g_date->Date() + 1, wwpc_autumn_roll, true );
162  break;
163  }
164  }
165  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,9 ),
166  wwpc_ferti_p2, false );
167  break;
168 
169  case wwpc_ferti_p2:
170  if (( m_ev->m_lock || m_farm->DoIt( 100 )) && (!m_farm->IsStockFarmer()))
171  {
172  if ( m_field->GetVegBiomass()>0)
173  //only when there has been a bit of growth
174  {
175  if (!m_farm->FP_ManganeseSulphate( m_field, 0.0,
176  g_date->DayInYear( 30,10 ) - g_date->DayInYear()))
177  {
178  SimpleEvent( g_date->Date() + 1, wwpc_ferti_p2, true );
179  break;
180  }
181  }
182  }
183  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 20,9 ),
184  wwpc_herbicide1, false );
185  break;
186 
187  case wwpc_herbicide1:
188  if ( m_ev->m_lock || m_farm->DoIt( (int) ( 100*cfg_herbi_app_prop.value() )))
189  {
190  if (!m_farm->HerbicideTreat( m_field, 0.0,
191  g_date->DayInYear( 5,10 ) - g_date->DayInYear())) {
192  SimpleEvent( g_date->Date() + 1, wwpc_herbicide1, true );
193  break;
194  }
195  }
196  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,4 )+365,
197  wwpc_spring_roll, false );
198  break;
199 
200  case wwpc_spring_roll:
201  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
202  {
203  if (!m_farm->SpringRoll( m_field, 0.0,
204  g_date->DayInYear( 30,4 ) - g_date->DayInYear())) {
205  SimpleEvent( g_date->Date() + 1, wwpc_spring_roll, true );
206  break;
207  }
208  }
209  if (m_farm->IsStockFarmer()) // StockFarmer
210  {
211  SimpleEvent( g_date->Date() + 1, wwpc_ferti_s3, false );
212  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,4 ),
213  wwpc_ferti_s4, false );
214  }
215  else
216  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,3 ),
217  wwpc_ferti_p3, false );
218  // All need the next threads
219  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,4 ),
220  wwpc_herbicide2, false );
221  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,4 ),
222  wwpc_GR, false );
223  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 20,4 ),
224  wwpc_fungicide, false );
225  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,5 ),
226  wwpc_insecticide1, false );
227  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,4 ),
228  wwpc_strigling1, false );
229  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,5 ),
230  wwpc_water1, false );
231  break;
232 
233  case wwpc_herbicide2:
234  if ( m_ev->m_lock || m_farm->DoIt( (int) ( 1*cfg_herbi_app_prop.value() )))
235  {
236  if (!m_farm->HerbicideTreat( m_field, 0.0,
237  g_date->DayInYear( 30,4 ) - g_date->DayInYear())) {
238  SimpleEvent( g_date->Date() + 1, wwpc_herbicide2, true );
239  break;
240  }
241  }
242  // End of thread
243  break;
244 
245  case wwpc_GR:
246  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
247  {
248  // --FN--
249  if (!m_farm->GrowthRegulator( m_field, 0.0,
250  g_date->DayInYear( 10,5 ) - g_date->DayInYear())) {
251  SimpleEvent( g_date->Date() + 1, wwpc_GR, true );
252  break;
253  }
254  }
255  // End of thread
256  break;
257 
258  case wwpc_fungicide:
259  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
260  {
261  if (!m_farm->FungicideTreat( m_field, 0.0,
262  g_date->DayInYear( 10,5 ) - g_date->DayInYear())) {
263  SimpleEvent( g_date->Date() + 1, wwpc_fungicide, true );
264  break;
265  }
266  }
267  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 20,5 ),
268  wwpc_fungicide2, false );
269  break;
270 
271  case wwpc_fungicide2:
272  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
273  {
274  if (!m_farm->FungicideTreat( m_field, 0.0,
275  g_date->DayInYear( 15,5 ) - g_date->DayInYear())) {
276  SimpleEvent( g_date->Date() + 1, wwpc_fungicide2, true );
277  break;
278  }
279  }
280  // End of thread
281  break;
282 
283  case wwpc_insecticide1:
284  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
285  {
286  if (!m_farm->ProductApplication_DateLimited( m_field, 0.0, g_date->DayInYear( 15,5 ) - g_date->DayInYear(), cfg_pest_product_1_amount.value(), ppp_1)) {
287  SimpleEvent( g_date->Date() + 1, wwpc_insecticide1, true );
288  break;
289  }
290  else
291  {
292  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
293  wwpc_insecticide2, false );
294  break;
295  }
296  }
297  break;
298 
299  case wwpc_insecticide2:
300  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
301  {
302  if (!m_farm->ProductApplication_DateLimited(m_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear(), cfg_pest_product_1_amount.value(), ppp_1)) {
303  SimpleEvent( g_date->Date() + 1, wwpc_insecticide2, true );
304  break;
305  }
306  else
307  {
308  if ((g_date->Date()+7)<( g_date->OldDays() + g_date->DayInYear( 15,6 )))
309  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,6 ),
310  wwpc_insecticide3, false );
311  else
312  SimpleEvent( g_date->Date()+7, wwpc_insecticide3, false );
313  break;
314  }
315  }
316  break;
317 
318  case wwpc_insecticide3:
319  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
320  {
321  if (!m_farm->ProductApplication_DateLimited(m_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear(), cfg_pest_product_1_amount.value(), ppp_1)) {
322  SimpleEvent( g_date->Date() + 1, wwpc_insecticide3, true );
323  break;
324  }
325  }
326  // End of thread
327  break;
328 
329  case wwpc_strigling1:
330  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
331  {
332  if (!m_farm->Strigling( m_field, 0.0,
333  g_date->DayInYear( 25,4 ) - g_date->DayInYear())) {
334  SimpleEvent( g_date->Date() + 1, wwpc_strigling1, true );
335  break;
336  }
337  else
338  {
339  if ((g_date->Date()+7)<( g_date->OldDays() + g_date->DayInYear( 15,6 )))
340  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,4),
341  wwpc_strigling2, false );
342  else
343  SimpleEvent( g_date->Date()+7,wwpc_strigling2, false );
344  }
345  }
346  break;
347 
348  case wwpc_strigling2:
349  if (!m_farm->Strigling( m_field, 0.0,
350  g_date->DayInYear( 5,5 ) - g_date->DayInYear())) {
351  SimpleEvent( g_date->Date() + 1, wwpc_strigling2, true );
352  break;
353  }
354  // End of thread
355  break;
356 
357  case wwpc_water1:
358  if ( m_ev->m_lock || m_farm->DoIt( 0 )) // **CJT** Soil type 1-4 only
359  {
360  if (!m_farm->Water( m_field, 0.0,
361  g_date->DayInYear( 15,5 ) - g_date->DayInYear())) {
362  SimpleEvent( g_date->Date() + 1, wwpc_water1, true );
363  break;
364  }
365  else
366  if ((g_date->Date()+5)<( g_date->OldDays() + g_date->DayInYear( 2,5 )))
367  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 2,5 ),
368  wwpc_water2, false );
369  else
370  SimpleEvent( g_date->Date()+5, wwpc_water2, false );
371  }
372  break;
373 
374  case wwpc_water2:
375  if (!m_farm->Water( m_field, 0.0,
376  g_date->DayInYear( 1,6 ) - g_date->DayInYear())) {
377  SimpleEvent( g_date->Date() + 1, wwpc_water2, true );
378  break;
379  }
380  // End of thread
381  break;
382 
383  case wwpc_ferti_p3:
384  if (!m_farm->FP_NPK( m_field, 0.0,
385  g_date->DayInYear( 15,4 ) - g_date->DayInYear())) {
386  SimpleEvent( g_date->Date() + 1, wwpc_ferti_p3, true );
387  break;
388  }
389 
390  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 25,4 ),
391  wwpc_ferti_p4, false );
392  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,4 ),
393  wwpc_ferti_p5, false );
394  break;
395 
396  case wwpc_ferti_p4:
397  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
398  {
399  if (!m_farm->FP_NPK( m_field, 0.0,
400  g_date->DayInYear( 15,5 ) - g_date->DayInYear())) {
401  SimpleEvent( g_date->Date() + 1, wwpc_ferti_p4, true );
402  break;
403  }
404  }
405 
406  // The Main thread
407  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,8 ),
408  wwpc_harvest, false );
409  break;
410 
411  case wwpc_ferti_p5:
412  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
413  {
414  if (!m_farm->FP_ManganeseSulphate( m_field, 0.0,
415  g_date->DayInYear( 5,5 ) - g_date->DayInYear())) {
416  SimpleEvent( g_date->Date() + 1, wwpc_ferti_p5, true );
417  break;
418  }
419  }
420  break;
421 
422  case wwpc_ferti_s3:
423  if (!m_farm->FA_Slurry(m_field, 0.0,
424  g_date->DayInYear( 30,5 ) - g_date->DayInYear())) {
425  SimpleEvent( g_date->Date() + 1, wwpc_ferti_s3, true );
426  break;
427  }
428  // The Main thread
429  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,8 ),
430  wwpc_harvest, false );
431  break;
432 
433  case wwpc_ferti_s4:
434  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
435  {
436  if (!m_farm->FA_NPK( m_field, 0.0,
437  g_date->DayInYear( 20,4 ) - g_date->DayInYear())) {
438  SimpleEvent( g_date->Date() + 1, wwpc_ferti_s4, true );
439  break;
440  }
441  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 21,4 ),
442  wwpc_ferti_s5, false );
443  }
444  break;
445 
446  case wwpc_ferti_s5:
447  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
448  {
449  if (!m_farm->FA_NPK( m_field, 0.0,
450  g_date->DayInYear( 1,5 ) - g_date->DayInYear())) {
451  SimpleEvent( g_date->Date() + 1, wwpc_ferti_s5, true );
452  break;
453  }
454  }
455  break;
456 
457  case wwpc_harvest:
458  if (!m_farm->Harvest( m_field, 0.0,
459  g_date->DayInYear( 20,8 ) - g_date->DayInYear()))
460  {
461  SimpleEvent( g_date->Date() + 1, wwpc_harvest, true );
462  break;
463  }
464  SimpleEvent( g_date->Date(), wwpc_straw_chopping, false );
465  break;
466 
467  case wwpc_straw_chopping:
468  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
469  {
470  if (!m_farm->StrawChopping( m_field, 0.0,
471  g_date->DayInYear( 20,8 ) - g_date->DayInYear())) {
472  SimpleEvent( g_date->Date() + 1, wwpc_straw_chopping, true );
473  break;
474  }
475  else
476  {
477  if ((g_date->Date()+5)<( g_date->OldDays() + g_date->DayInYear( 2,5 )))
478  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,8 ),
479  wwpc_stubble_harrow2, false );
480  else
481  SimpleEvent( g_date->Date()+1, wwpc_stubble_harrow2, false );
482  }
483  } else {
484  SimpleEvent( g_date->Date()+1, wwpc_hay_turning, false );
485  }
486  break;
487 
488  case wwpc_hay_turning:
489  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
490  {
491  if (!m_farm->HayTurning( m_field, 0.0,
492  g_date->DayInYear( 20,8 ) - g_date->DayInYear())) {
493  SimpleEvent( g_date->Date() + 1, wwpc_hay_turning, true );
494  break;
495  }
496  }
497  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,8 ),
498  wwpc_hay_baling, false );
499  break;
500 
501  case wwpc_hay_baling:
502  if (!m_farm->HayBailing( m_field, 0.0,
503  g_date->DayInYear( 25,8 ) - g_date->DayInYear())) {
504  SimpleEvent( g_date->Date() + 1, wwpc_hay_baling, true );
505  break;
506  }
507  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,8 ),
508  wwpc_stubble_harrow2, false );
509  break;
510 
512  if ( m_ev->m_lock || m_farm->DoIt( 100 ))
513  {
514  if (!m_farm->StubbleHarrowing( m_field, 0.0,
515  g_date->DayInYear( 15,9 ) - g_date->DayInYear())) {
516  SimpleEvent( g_date->Date() + 1, wwpc_stubble_harrow2, true );
517  break;
518  }
519  }
520  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,8 ),
521  wwpc_grubning, false );
522  break;
523 
524  case wwpc_grubning:
525  if ( m_ev->m_lock || m_farm->DoIt( 0 ))
526  {
527  if (!m_farm->DeepPlough( m_field, 0.0,
528  g_date->DayInYear( 15,10 ) - g_date->DayInYear())) {
529  SimpleEvent( g_date->Date() + 1, wwpc_grubning, true );
530  break;
531  }
532  }
533  done=true;
534  // END OF MAIN THREAD
535  break;
536 
537  default:
538  g_msg->Warn( WARN_BUG, "WheatPControl::Do(): "
539  "Unknown event type! ", "" );
540  exit( 1 );
541  }
542  return done;
543 }
wwpc_ferti_s2
Definition: WWheatPControl.h:48
wwpc_autumn_sow
Definition: WWheatPControl.h:52
wwpc_harvest
Definition: WWheatPControl.h:74
wwpc_spring_roll
Definition: WWheatPControl.h:56
Farm::SpringRoll
virtual bool SpringRoll(LE *a_field, double a_user, int a_days)
Carry out a roll event in the spring on a_field.
Definition: farmfuncs.cpp:525
Farm::FA_Slurry
virtual bool FA_Slurry(LE *a_field, double a_user, int a_days)
Spready slurry on a_field owned by an stock farmer.
Definition: farmfuncs.cpp:965
wwpc_insecticide2
Definition: WWheatPControl.h:62
Farm::HerbicideTreat
virtual bool HerbicideTreat(LE *a_field, double a_user, int a_days)
Apply herbicide to a_field.
Definition: farmfuncs.cpp:1156
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: farm.h:905
Farm::Strigling
virtual bool Strigling(LE *a_field, double a_user, int a_days)
Carry out a mechanical weeding on a_field.
Definition: farmfuncs.cpp:1545
Farm::Harvest
virtual bool Harvest(LE *a_field, double a_user, int a_days)
Carry out a harvest on a_field.
Definition: farmfuncs.cpp:1769
wwpc_ferti_p3
Definition: WWheatPControl.h:68
FarmEvent::m_lock
bool m_lock
Definition: farm.h:465
Farm::FP_ManganeseSulphate
virtual bool FP_ManganeseSulphate(LE *a_field, double a_user, int a_days)
Apply Manganse Sulphate to a_field owned by an arable farmer.
Definition: farmfuncs.cpp:727
FarmEvent
A struct to hold the information required to trigger a farm event.
Definition: farm.h:463
Farm::FP_NPK
virtual bool FP_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer, on a_field owned by an arable farmer.
Definition: farmfuncs.cpp:629
Farm::DoIt
bool DoIt(double a_probability)
Return chance out of 0 to 100.
Definition: farm.cpp:800
wwpc_autumn_roll
Definition: WWheatPControl.h:53
cfg_ins_app_prop1
CfgFloat cfg_ins_app_prop1
wwpc_GR
Definition: WWheatPControl.h:58
cfg_pest_product_1_amount
CfgFloat cfg_pest_product_1_amount
wwpc_ferti_s5
Definition: WWheatPControl.h:73
wwpc_strigling1
Definition: WWheatPControl.h:64
wwpc_ferti_p2
Definition: WWheatPControl.h:54
Farm::FA_Manure
virtual bool FA_Manure(LE *a_field, double a_user, int a_days)
Spread manure on a_field owned by an stock farmer.
Definition: farmfuncs.cpp:1036
wwpc_autumn_plough
Definition: WWheatPControl.h:49
wwpc_ferti_p5
Definition: WWheatPControl.h:70
Farm::ProductApplication_DateLimited
virtual bool ProductApplication_DateLimited(LE *a_field, double, int, double a_applicationrate, PlantProtectionProducts a_ppp)
Special pesticide trial functionality.
Definition: farmfuncs.cpp:2396
Farm::FA_NPK
virtual bool FA_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer to a_field owned by an stock farmer.
Definition: farmfuncs.cpp:917
wwpc_fungicide
Definition: WWheatPControl.h:59
Farm::FungicideTreat
virtual bool FungicideTreat(LE *a_field, double a_user, int a_days)
Apply fungicide to a_field.
Definition: farmfuncs.cpp:1279
wwpc_hay_baling
Definition: WWheatPControl.h:77
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: farm.cpp:307
WWPC_AUTUMN_PLOUGH
#define WWPC_AUTUMN_PLOUGH
Definition: WWheatPControl.h:41
Farm::AutumnSow
virtual bool AutumnSow(LE *a_field, double a_user, int a_days)
Carry out a sowing event in the autumn on a_field.
Definition: farmfuncs.cpp:364
wwpc_straw_chopping
Definition: WWheatPControl.h:75
wwpc_hay_turning
Definition: WWheatPControl.h:76
wwpc_ferti_s1
Definition: WWheatPControl.h:47
cfg_herbi_app_prop
CfgFloat cfg_herbi_app_prop
cfg_greg_app_prop
CfgFloat cfg_greg_app_prop
Farm::HayBailing
virtual bool HayBailing(LE *a_field, double a_user, int a_days)
Carry out hay bailing on a_field.
Definition: farmfuncs.cpp:2184
wwpc_insecticide3
Definition: WWheatPControl.h:63
Farm::StrawChopping
virtual bool StrawChopping(LE *a_field, double a_user, int a_days)
Carry out straw chopping on a_field.
Definition: farmfuncs.cpp:2132
wwpc_ferti_p4
Definition: WWheatPControl.h:69
wwpc_ferti_s3
Definition: WWheatPControl.h:71
wwpc_fungicide2
Definition: WWheatPControl.h:60
wwpc_ferti_p1
Definition: WWheatPControl.h:46
wwpc_stubble_harrow1
Definition: WWheatPControl.h:51
Crop::m_farm
Farm * m_farm
Definition: farm.h:537
Crop::m_field
LE * m_field
Definition: farm.h:538
wwpc_insecticide1
Definition: WWheatPControl.h:61
WWheatPControl::Do
virtual bool Do(Farm *a_farm, LE *a_field, FarmEvent *a_ev)
Definition: WWheatPControl.cpp:37
wwpc_grubning
Definition: WWheatPControl.h:79
FarmEvent::m_todo
int m_todo
Definition: farm.h:469
Farm::AutumnRoll
virtual bool AutumnRoll(LE *a_field, double a_user, int a_days)
Carry out a roll event in the autumn on a_field.
Definition: farmfuncs.cpp:288
Farm::FP_Slurry
virtual bool FP_Slurry(LE *a_field, double a_user, int a_days)
Apply slurry to a_field owned by an arable farmer.
Definition: farmfuncs.cpp:701
cfg_fungi_app_prop1
CfgFloat cfg_fungi_app_prop1
ppp_1
Definition: farm.h:422
wwpc_herbicide2
Definition: WWheatPControl.h:57
Farm::Water
virtual bool Water(LE *a_field, double a_user, int a_days)
Carry out a watering on a_field.
Definition: farmfuncs.cpp:1717
wwpc_autumn_harrow
Definition: WWheatPControl.h:50
Farm::AutumnPlough
virtual bool AutumnPlough(LE *a_field, double a_user, int a_days)
Carry out a ploughing event in the autumn on a_field.
Definition: farmfuncs.cpp:132
wwpc_ferti_s4
Definition: WWheatPControl.h:72
Farm::AutumnHarrow
virtual bool AutumnHarrow(LE *a_field, double a_user, int a_days)
Carry out a harrow event in the autumn on a_field.
Definition: farmfuncs.cpp:261
wwpc_start
Definition: WWheatPControl.h:44
Farm
The base class for all farm types.
Definition: farm.h:767
wwpc_strigling2
Definition: WWheatPControl.h:65
Farm::DeepPlough
virtual bool DeepPlough(LE *a_field, double a_user, int a_days)
Carry out a deep ploughing event on a_field.
Definition: farmfuncs.cpp:417
wwpc_stubble_harrow2
Definition: WWheatPControl.h:78
Farm::GrowthRegulator
virtual bool GrowthRegulator(LE *a_field, double a_user, int a_days)
Apply growth regulator to a_field.
Definition: farmfuncs.cpp:1250
WWPC_WAIT_FOR_PLOUGH
#define WWPC_WAIT_FOR_PLOUGH
Definition: WWheatPControl.h:40
wwpc_water2
Definition: WWheatPControl.h:67
wwpc_herbicide1
Definition: WWheatPControl.h:55
Farm::HayTurning
virtual bool HayTurning(LE *a_field, double a_user, int a_days)
Carry out hay turning on a_field.
Definition: farmfuncs.cpp:2159
Crop::m_ev
FarmEvent * m_ev
Definition: farm.h:539
wwpc_water1
Definition: WWheatPControl.h:66
Farm::StubbleHarrowing
virtual bool StubbleHarrowing(LE *a_field, double a_user, int a_days)
Carry out stubble harrowing on a_field.
Definition: farmfuncs.cpp:2209