public IEnumerator DoIt()
{
// submit harvest to API point
progress = 0f; doItError = "";
HTTP.Request request = GetDoItWWW();
//Debug.Log(request.bytes);
request.Send();
while (!request.isDone) {
//progress = Mathf.Min(www.uploadProgress+www.progress, 0.99f);
yield return 0;
}
// deserialize the product values
Harvest.Products products;
Debug.Log( request.response.status );
try {
products = JSONDecoder.Decode<Harvest.Products>( request.response.Text );
}
catch (JsonException e) {
Debug.LogError(e.ToString()+"\n"+request.response.Text);
//doItError = www.error;
progress = 1f;
yield break;
}
// TODO: since server api does not presently modify cover type, modify it with god mode here
if (this.cutType == CutType.Clearcut) {
PlayerAction.ResourceTileModification modification = new PlayerAction.ResourceTileModification();
modification.resource_tile = new ClearcutModifiedFields();
string json = JsonMapper.ToJson(modification);
foreach (int id in this.ids) {
request = new HTTP.Request( "Get", WebRequests.GetURLToResourceTile(id) );
request.AddParameters( WebRequests.authenticatedParameters );
request.Send();
while( !request.isDone ) {
yield return 0;
}
//if (!string.IsNullOrEmpty(www.error)) {
// progress = 1f; doItError = www.error;
// yield break;
//}
ResourceTile tile;
try {
tile = JSONDecoder.Decode<IndividualResourceTile>(request.response.Text).resource_tile;
switch (tile.baseCoverType) {
// case BaseCoverType.Barren:
// case BaseCoverType.CultivatedCrops:
case BaseCoverType.Developed:
case BaseCoverType.Excluded:
// case BaseCoverType.Forest:
// case BaseCoverType.Herbaceous:
case BaseCoverType.Unknown:
case BaseCoverType.Water:
// case BaseCoverType.Wetland:
continue;
}
}
catch (JsonException e) {
Debug.LogError(e.ToString()+"\n"+request.response.Text);
}
request = new HTTP.Request( "Put", WebRequests.GetURLToResourceTile(id) );
request.SetText( json );
request.AddParameters( WebRequests.authenticatedGodModeParameters );
request.Send();
while( !request.isDone ) {
yield return 0;
}
//if (!string.IsNullOrEmpty(www.error)) {
// progress = 1f; doItError = www.error;
// yield break;letmein
//}
}
}
// add products to harvest history
if (m_history == null) {
m_history = new List<Products>();
}
m_history.Add(products);
// set progress to done
progress = 1f; doItError = "";
// broadcast message that harvest was executed
MessengerAM.Send(new MessageHarvestExecuted(this, products));
// TODO: Collapse these two messages into one
Messenger<Products>.Broadcast("HarvestProducts",products);
}