Exemple #1
0
        // 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);
                }
            }
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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;
            }
        }