Exemplo n.º 1
0
	/// <summary>used to enable/ disable an input definition</summary>
	public void SetActive(InputIdxCache idx, bool active)
	{
		inputGroups[idx.groupIdx].inputs[idx.inputIdx].isActive = active;
	}
Exemplo n.º 2
0
	/// <summary>will check if the prim/secondary button of the input is active as defined</summary>
	public bool IsHeld(InputIdxCache idx)
	{
		InputDefinition def = inputGroups[idx.groupIdx].inputs[idx.inputIdx];
		return ( (def.primaryButton != KeyCode.None && Input.GetKey(def.primaryButton))
				||
				(def.secondaryButton != KeyCode.None && Input.GetKey(def.secondaryButton))
				);
	}
Exemplo n.º 3
0
	/// <summary>returns true of the two definitions uses the same buttons</summary>
	public bool UsesSameButtons(InputIdxCache idx1, InputIdxCache idx2)
	{
		return (inputGroups[idx1.groupIdx].inputs[idx1.inputIdx].primaryButton == inputGroups[idx2.groupIdx].inputs[idx2.inputIdx].primaryButton ||
				inputGroups[idx1.groupIdx].inputs[idx1.inputIdx].secondaryButton == inputGroups[idx2.groupIdx].inputs[idx2.inputIdx].secondaryButton);
	}
Exemplo n.º 4
0
	/// <summary>Find input and return the idx of the group it is in and input's idx. null if not found</summary>
	public InputIdxCache GetInputIdx(string groupName, string inputName)
	{
		int i = GetInputGroupIdx(groupName);
		if (i >= 0)
		{
			for (int j = 0; j < inputGroups[i].inputs.Count; j++)
			{
				if (inputGroups[i].inputs[j].inputName.Equals(inputName))
				{
					InputIdxCache idx = new InputIdxCache() { groupIdx = i, inputIdx = j };
					return idx;
				}
			}
		}
		return new InputIdxCache() { groupIdx = -1, inputIdx = -1 };
	}
Exemplo n.º 5
0
	public InputDefinition GetInputDefinition(InputIdxCache idx)
	{
		return inputGroups[idx.groupIdx].inputs[idx.inputIdx];
	}
Exemplo n.º 6
0
	/// <summary>add a new input and return its idx and the idx for the group it is in. will return groupIdx=-1 and inputIdx=-1 if the inputdef was not added</summary>
	public InputIdxCache AddInput(InputDefinition definition)
	{
		if (!definition.isUsed) return new InputIdxCache() { groupIdx = -1, inputIdx = -1 }; // not actually used, dont add

		InputIdxCache idx = new InputIdxCache();

		// get the group idx, else add group
		idx.groupIdx = GetInputGroupIdx(definition.groupName);
		if (idx.groupIdx < 0)
		{
			InputGroup group = new InputGroup() { name = definition.groupName };
			inputGroups.Add(group);
			idx.groupIdx = inputGroups.IndexOf(group);
		}

		// check if the input was already raged before and show warning if so (someone forgot to unload an input binder)
		int inputIdx = GetInputIdx(idx.groupIdx, definition.inputName);
		if (inputIdx < 0)
		{
			inputGroups[idx.groupIdx].inputs.Add(definition);
			idx.inputIdx = inputGroups[idx.groupIdx].inputs.IndexOf(definition);

			if (definition.callback != null) callbackList.Add(definition); // add to special list too
			else if (definition.isCustom && !string.IsNullOrEmpty(definition.eventGUID))
			{
				RPGEvent e = UniRPGGlobal.DB.GetEvent(new GUID(definition.eventGUID));
				if (e != null)
				{					
					definition.cachedEvent = e;
					callbackList.Add(definition);
				}
			}
		}
		else
		{
			if (!definition.isCustom) Debug.LogError(string.Format("InputBinder Error. It seems like you are trying to load an InputBinder that is already loaded. Forgot to unload it when you should have? {0} :: {1}", definition.groupName, definition.inputName));
			return new InputIdxCache() { groupIdx = -1, inputIdx = -1 };
		}

		return idx;
	}