Harvest.DoIt C# (CSharp) Method

DoIt() public method

Execute the harvest
public DoIt ( ) : IEnumerator
return IEnumerator
	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);
	}