AddParameters() публичный Метод

public AddParameters ( string>.Dictionary parms ) : void
parms string>.Dictionary
Результат void
Пример #1
0
	public static IEnumerator	PostJoinWorld( int worldId, string playerClass ) {
		HTTP.Request request = new HTTP.Request( "Post", string.Format("{0}/worlds/{1}/players.json", urlServer, worldId) );
		request.AddHeader( "type", playerClass );
		request.AddParameters( WebRequests.authenticatedGodModeParameters );
		request.Send();
		
		while( !request.isDone ) {
			yield return 0;
		}
	}
Пример #2
0
	public static void	JoinWorld( int worldId, string playerClass ) {
		if( worldId < 0 ) {
			throw new ArgumentException( string.Format("WorldId( {0} ) is invalid", worldId) );
		}
		
		HTTP.JSON playerT = new HTTP.JSON( "{ \"player\": {\"type\": \"" + playerClass + "\"}}" );
		//WWW www = WWWX.Post( string.Format("{0}/worlds/{1}/players.json", urlServer, worldId), playerT, authenticatedGodModeParameters );
		
		HTTP.Request request = new HTTP.Request( "Post", string.Format("{0}/worlds/{1}/players.json", urlServer, worldId) );
		request.SetText( playerT );
		request.AddParameters( authenticatedGodModeParameters );
		request.Send();
		while( !request.isDone ) {
		}
		Debug.Log(request.response.Text);
		
		request = new HTTP.Request( "Get", urlGetUserPlayers() );
		request.AddParameters( authenticatedGodModeParameters );
		request.Send();
		while( !request.isDone ) {
		}
	}
Пример #3
0
	/// <summary>
	/// Downloads the player data.
	/// </summary>
	/// <returns>
	/// The player data for.
	/// </returns>
	/// <param name='player'>
	/// Player.
	/// </param>
	public static IEnumerator DownloadPlayerData(Player player)
	{
		HTTP.Request request = new HTTP.Request( "Get", urlGetUserPlayers() );
		request.AddParameters( authenticatedParameters );
		request.Send();
		
		while( !request.isDone ) {
			yield return 0;
		}
		
		Func<string, PlayersData>	playersDataDecodeDelegate = JSONDecoder.Decode<PlayersData>;
		IAsyncResult ar = playersDataDecodeDelegate.BeginInvoke( request.response.Text, null, null );
		while( !ar.IsCompleted ) {
			yield return 0;
		}
		
		PlayersData playersData = playersDataDecodeDelegate.EndInvoke( ar );
				
		// get the player from the list of players for the selected the world
		player.data = playersData.GetPlayerWithWorldId(UserData.worldNumber);
	}
Пример #4
0
	/// <summary>
	/// Downloads the world.
	/// </summary>
	/// <returns>
	/// The world.
	/// </returns>
	public static IEnumerator DownloadWorld()
	{
		HTTP.Request request = new HTTP.Request( "Get", WebRequests.urlGetWorld );
		request.AddParameters( authenticatedParameters );
		request.Send();
		
		while( !request.isDone ) {
			yield return 0;
		}
		
		if( request.ProducedError ) {
			Debug.LogError( request.Error );
			yield break;
		}
		
		Func<string, WorldsData>	asyncDelegate = JSONDecoder.Decode<WorldsData>;
		IAsyncResult ar = asyncDelegate.BeginInvoke( request.response.Text, null, null );
		while( !ar.IsCompleted ) {
			yield return 0;
		}
		
		WorldData world = asyncDelegate.EndInvoke( ar ).world;

		Debug.Log (string.Format ("This is the tilesize from world: {0}", world.megatile_height));
		TerrainManager.worldRegion = new Region(0, world.width-1, world.height-1, 0);
		Megatile.SetMegatileSize(world.megatile_height); // NOTE: just assumes square tile size
			
		// move terrain and camera to center
		float x, z;
		TerrainManager.worldRegion.GetCenter(out x, out z);
		CameraRig.use.JumpTo(new Vector3(x, 0f, z));
		TerrainManager.use.MoveTerrainToCenterOfView();
			
		// tell everyone the world is loaded
		MessengerAM.Send(new MessageWorldLoaded());
		//Messenger.Broadcast(kWorldLoaded);
	}
Пример #5
0
	public static bool	ClearWorldOfPlayers( int worldId ) {
		int prevWorld = UserData.worldNumber;
		
		UserData.worldNumber = worldId;

		HTTP.Request request = null;
		try {
			request = new HTTP.Request( "Get", WebRequests.urlGetWorld );
			request.AddParameters( WebRequests.authenticatedGodModeParameters );
			request.Send();
			while( !request.isDone ) {}
			
			if( request.ProducedError ) {
				Debug.Log( string.Format("Unable to find or delete players on world {0} (harmless)", worldId) );
				return true;
			}
		} catch {
			//Debug.LogError( www.error );
			return false;
		}
		
		WorldsData data = null;
		try {
			data = JSONDecoder.Decode<WorldsData>( request.response.Text );
		} catch( JsonException e ) {
			Debug.LogError( e );
			return false;
		}
		
		/////////
		foreach( PlayerData p in data.world.players ) {
			request = new HTTP.Request( "Delete", WebRequests.urlDeletePlayer(p.world_id, p.id) );
			request.AddParameters( WebRequests.authenticatedGodModeParameters );
			request.Send();
			while( !request.isDone ) {}
			
			if( request.ProducedError ) {
				Debug.LogError( request.Error );
				return false;
			}
		}
		/////////
		
		try {
			request = new HTTP.Request( "Get", WebRequests.urlGetWorld );
			request.AddParameters( WebRequests.authenticatedGodModeParameters );
			request.Send();
			
			while( !request.isDone ) {}

			if( request.ProducedError ) {
				Debug.LogError( request.Error );
				return false;
			}
		} catch {
			//Debug.LogError( www.error );
			return false;
		}
		
		UserData.worldNumber = prevWorld;
		
		try {
			data = JSONDecoder.Decode<WorldsData>( request.response.Text );
		} catch( JsonException e ) {
			Debug.LogError( e );
			return false;
		}

		return data.world.players == null || data.world.players.Length <= 0;
	}
Пример #6
0
	/// <summary>
	/// Forces a put of resource tile modifications using god mode.
	/// </summary>
	/// <remarks>
	/// This is a temporary solution for implementing actions with no server API point, and can eventually be removed.
	/// </remarks>
	/// <param name='selection'>
	/// The selection.
	/// </param>
	protected virtual IEnumerator Put(ResourceTileSelection selection)
	{
		HTTP.Request request;
		m_actionProgress = 0f;
		string json = GetActionJson();
		Debug.Log(json);
		List<ResourceTile> tiles = new List<ResourceTile>();
		float div = 1f/selection.Count();
		for (int i=0; i<selection.Count(); ++i) {
			int id = selection[i];
			request = new HTTP.Request( "Put", WebRequests.GetURLToResourceTile(id) );
			request.SetText( json );
			request.AddParameters( WebRequests.authenticatedGodModeParameters );
			request.Send();
			
			while (!request.isDone) {
				//m_actionProgress = (i+www.uploadProgress)*div;
				yield return 0;
			}
			if( request.ProducedError ) {
				m_actionProgress = 1f;
				yield break;
			}
			try {
				tiles.Add(JSONDecoder.Decode<IndividualResourceTile>(request.response.Text).resource_tile);
			}
			catch (JsonException) {
				Debug.LogError(request.response.Text);
			}
		}
//		ConcludeActionOnResourceTiles(tiles.ToArray());
		//Update the world
		IEnumerator e = WebRequests.RefreshWorldData(new WebCoroutine());
		yield return e.Current;
		while(e.MoveNext()) yield return e.Current;
	}
Пример #7
0
	/// <summary>
	/// Execute the harvest
	/// </summary>
	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);
	}
Пример #8
0
	/// <summary>
	/// Gets a WWW object do perform the harvest, configured for the associated api point on the server.
	/// </summary>
	/// <returns>
	/// The do it WWW.
	/// </returns>
	public HTTP.Request GetDoItWWW()
	{
		string apiPoint = "";
		Dictionary<string, string> parameters = WebRequests.authenticatedParameters;
		switch (this.cutType) {
		case CutType.Clearcut:
			apiPoint = "clearcut";
			break;
		case CutType.DiameterLimitCut:
			apiPoint = "diameter_limit_cut";
			parameters.Add(this.diameterLimitCutDirection==DiameterLimitCutDirection.Greater?"above":"below", this.diameterLimit.ToString());
			break;
		case CutType.QRatioCut:
			apiPoint = "partial_selection_cut";
			parameters.Add("qratio", this.qRatio.ToString());
			parameters.Add("target_basal_area", this.basalArea.ToString());
			break;
		}
		string url = string.Format(
			"{0}/worlds/{1}/resource_tiles/{2}.json",
			WebRequests.urlServer, UserData.worldNumber, apiPoint
		);
		HTTP.Request request = new HTTP.Request( "Post", url );
		request.AddParameters( parameters );
		
		HTTP.JSON json = new HTTP.JSON();
		json.Data = JsonMapper.ToJson( new ResourceTileSelection(this.ids) );
		request.SetText(json);   ///.ToJson() );
		//Debug.Log(new ResourceTileSelection(this.ids).ToJson());
		
		return request;
	}
Пример #9
0
	/// <summary>
	/// Computes the center point based on the bounds of the tile positions.
	/// </summary>
	/// <returns>
	/// The center point.
	/// </returns>
	public IEnumerator ComputeCenterPoint()
	{
		HTTP.Request request = new HTTP.Request( "Get", WebRequests.GetURLToResourceTile(this.ids[0]) );
		request.AddParameters( WebRequests.authenticatedGodModeParameters );
		request.Send();
		while( !request.isDone ) {
			yield return 0;
		}
		
		if( request.ProducedError ) {
			Debug.LogError( "Unable to compute center point of harvest: " + request.Error );
			yield break;
		};
		ResourceTile tile = new ResourceTile();
		try {
			tile = JSONDecoder.Decode<IndividualResourceTile>(request.response.Text).resource_tile;
		}
		catch (JsonException) {
			Debug.LogError("Error parsing json data:\n"+request.response.Text);
		}
		Bounds bounds = new Bounds(tile.GetSimpleCenterPoint(), new Vector3(1f,0f,1f));
		foreach (int id in this.ids) {
			request = new HTTP.Request( "Get", WebRequests.GetURLToResourceTile(id) );
			request.AddParameters( WebRequests.authenticatedGodModeParameters );
			request.Send();
			
			while( !request.isDone ) {
				yield return 0;
			}
			
			if( request.ProducedError ) {
				Debug.LogError( "Unable to compute center point of harvest: " + request.Error );
				yield break;
			}
			try {
				tile = JSONDecoder.Decode<IndividualResourceTile>(request.response.Text).resource_tile;
				bounds.Encapsulate(tile.GetSimpleCenterPoint());
			}
			catch (JsonException) {
				Debug.LogError("Error parsing json data:\n"+request.response.Text);
			}
		}
		// set the center point from the bounding box
		this.centerPoint = bounds.center;
	}