// Use this for initialization void Start() { if (instance != null) { return; } instance = this; AtavismEventSystem.RegisterEvent("CLAIM_ADDED", this); AtavismEventSystem.RegisterEvent("CLAIMED_REMOVED", this); AtavismEventSystem.RegisterEvent("LOGGED_OUT", this); // Register for messages relating to the claim system NetworkAPI.RegisterExtensionMessageHandler("claim_data", ClaimIDMessage); NetworkAPI.RegisterExtensionMessageHandler("remove_claim_data", ClaimRemoveDataMessage); NetworkAPI.RegisterExtensionMessageHandler("claim_updated", ClaimUpdatedMessage); NetworkAPI.RegisterExtensionMessageHandler("remove_claim", RemoveClaimMessage); NetworkAPI.RegisterExtensionMessageHandler("claim_deleted", RemoveClaimMessage); NetworkAPI.RegisterExtensionMessageHandler("claim_made", ClaimMadeMessage); NetworkAPI.RegisterExtensionMessageHandler("claim_object", ClaimObjectMessage); NetworkAPI.RegisterExtensionMessageHandler("claim_object_bulk", ClaimObjectBulkMessage); NetworkAPI.RegisterExtensionMessageHandler("move_claim_object", MoveClaimObjectMessage); NetworkAPI.RegisterExtensionMessageHandler("update_claim_object_state", UpdateClaimObjectStateMessage); NetworkAPI.RegisterExtensionMessageHandler("claim_object_info", ClaimObjectInfoMessage); NetworkAPI.RegisterExtensionMessageHandler("remove_claim_object", RemoveClaimObjectMessage); NetworkAPI.RegisterExtensionMessageHandler("buildingResources", HandleBuildingResources); NetworkAPI.RegisterExtensionMessageHandler("start_build_object", HandleStartBuildObject); NetworkAPI.RegisterExtensionMessageHandler("start_build_task", HandleStartBuildTask); NetworkAPI.RegisterExtensionMessageHandler("build_task_interrupted", HandleInterruptBuildTask); // Load in items buildObjectTemplates = new Dictionary <int, AtavismBuildObjectTemplate>(); Object[] prefabs = Resources.LoadAll("Content/BuildObjects"); foreach (Object displayPrefab in prefabs) { GameObject go = (GameObject)displayPrefab; AtavismBuildObjectTemplate displayData = go.GetComponent <AtavismBuildObjectTemplate>(); if (!buildObjectTemplates.ContainsKey(displayData.id) && displayData.id > 0) { buildObjectTemplates.Add(displayData.id, displayData); } } }
public void StartPlaceBuildObject(int buildTemplateID) { buildTemplate = WorldBuilder.Instance.GetBuildObjectTemplate(buildTemplateID); if (buildTemplate == null) { return; } ClearCurrentReticle(true); string prefabName = buildTemplate.gameObject; prefabName = prefabName.Remove(0, 17); prefabName = prefabName.Remove(prefabName.Length - 7); // Create an instance of the game Object GameObject prefab = (GameObject)Resources.Load(prefabName); SetBuildingState(WorldBuildingState.PlaceItem); GetHitLocation(); SetCurrentReticle((GameObject)UnityEngine.Object.Instantiate(prefab, hitPoint, prefab.transform.rotation)); }
public void OnEvent(AtavismEventData eData) { if (eData.eventType == "PLACE_CLAIM_OBJECT") { //if (GetBuildingState() != WorldBuildingState.PlaceItem) // return; OID itemOID = OID.fromString(eData.eventArgs[0]); itemBeingPlaced = Inventory.Instance.GetInventoryItem(itemOID); // Does the item have a ClaimObject effect? List <int> effectPositions = itemBeingPlaced.GetEffectPositionsOfTypes("ClaimObject"); if (effectPositions.Count == 0) { itemBeingPlaced = null; return; } else { SetBuildingState(WorldBuildingState.PlaceItem); int buildObjectID = int.Parse(itemBeingPlaced.itemEffectValues[effectPositions[0]]); buildTemplate = WorldBuilder.Instance.GetBuildObjectTemplate(buildObjectID); string prefabName = buildTemplate.gameObject.Remove(0, 17); prefabName = prefabName.Remove(prefabName.Length - 7); // Create an instance of the game Object GameObject prefab = (GameObject)Resources.Load(prefabName); GetHitLocation(); SetCurrentReticle((GameObject)UnityEngine.Object.Instantiate(prefab, hitPoint, prefab.transform.rotation)); } } else if (eData.eventType == "START_BUILD_CLAIM_OBJECT") { int buildTemplateID = int.Parse(eData.eventArgs[0]); buildTemplate = WorldBuilder.Instance.GetBuildObjectTemplate(buildTemplateID); Debug.Log("Checking claim type: " + WorldBuilder.Instance.ActiveClaim.claimType + " against: " + buildTemplate.validClaimTypes); // Verify the claim type matches ClaimType activeClaimType = WorldBuilder.Instance.ActiveClaim.claimType; if (activeClaimType != ClaimType.Any && buildTemplate.validClaimTypes != ClaimType.Any) { if (activeClaimType != buildTemplate.validClaimTypes) { string[] args = new string[1]; #if AT_I2LOC_PRESET args[0] = I2.Loc.LocalizationManager.GetTranslation("That object cannot be placed in this Claim"); #else args[0] = "That object cannot be placed in this Claim"; #endif AtavismEventSystem.DispatchEvent("ERROR_MESSAGE", args); return; } } SetBuildingState(WorldBuildingState.PlaceItem); itemBeingPlaced = null; StartPlaceBuildObject(buildTemplateID); } else if (eData.eventType == "CLAIM_OBJECT_CLICKED") { int objectID = int.Parse(eData.eventArgs[0]); if (GetBuildingState() == WorldBuildingState.SelectItem && WorldBuilder.Instance.ActiveClaim.claimObjects.ContainsKey(objectID)) { SetCurrentReticle(WorldBuilder.Instance.ActiveClaim.claimObjects[objectID].gameObject); } } else if (eData.eventType == "CLAIM_CHANGED") { ClearCurrentReticle(true); WorldBuilder.Instance.BuildingState = WorldBuildingState.None; } }