Exemplo n.º 1
0
        public GoalRecordAppInstall(IReadOnlyDictionary <string, int> columnMetadata, IList <object> row)
        {
            if (_goalIdOrdinal == -1)
            {
                _goalIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalId");
            }

            if (_appStoreIdOrdinal == -1)
            {
                _appStoreIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "AppStoreId");
            }

            if (_appPlatformOrdinal == -1)
            {
                _appPlatformOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "AppPlatform");
            }

            if (_lookbackWindowOrdinal == -1)
            {
                _lookbackWindowOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "LookbackWindow");
            }

            if (_goalValueOrdinal == -1)
            {
                _goalValueOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalValue");
            }

            if (_AccountIdOrdinal == -1)
            {
                _AccountIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "AccountId");
            }

            if (_goalTrackingType == -1)
            {
                _goalTrackingType = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalTrackingType");
            }

            if (_goalValueSourceIdOrdinal == -1)
            {
                _goalValueSourceIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalValueSourceId");
            }

            if (_customerIdOrdinal == -1)
            {
                _customerIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "CustomerId");
            }

            GoalId            = (int)row[_goalIdOrdinal];
            AppStoreId        = (string)row[_appStoreIdOrdinal];
            AppPlatform       = (string)row[_appPlatformOrdinal];
            LookbackWindow    = (int)row[_lookbackWindowOrdinal];
            GoalValue         = (double?)row[_goalValueOrdinal];
            AccountId         = (int?)row[_AccountIdOrdinal];
            GoalTrackingType  = (short)row[_goalTrackingType];
            GoalValueSourceId = (short)row[_goalValueSourceIdOrdinal];
            CustomerId        = (int)row[_customerIdOrdinal];
        }
Exemplo n.º 2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="columnMetadata"> Column name to column index mapping. </param>
        /// <param name="row"></param>
        protected TagToGoalRecord(IReadOnlyDictionary <string, int> columnMetadata, IList <object> row)
        {
            if (_tagIdOrdinal == -1)
            {
                _tagIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "TagId");
            }

            if (_goalIdOrdinal == -1)
            {
                _goalIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalId");
            }

            if (_lookbackWindowOrdinal == -1)
            {
                _lookbackWindowOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "LookbackWindow");
            }

            if (_goalValue == -1)
            {
                _goalValue = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalValue");
            }

            if (_goalTrackingType == -1)
            {
                _goalTrackingType = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalTrackingType");
            }

            if (_accountIdOrdinal == -1)
            {
                _accountIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "AccountId");
            }

            if (_goalValueSourceIdOrdinal == -1)
            {
                _goalValueSourceIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "GoalValueSourceId");
            }

            TagId             = (int)row[_tagIdOrdinal];
            GoalId            = (int)row[_goalIdOrdinal];
            LookbackWindow    = (int)row[_lookbackWindowOrdinal];
            GoalValue         = (double?)row[_goalValue];
            GoalTrackingType  = (short)row[_goalTrackingType];
            AccountId         = (int?)row[_accountIdOrdinal];
            GoalValueSourceId = (short)row[_goalValueSourceIdOrdinal];
        }
Exemplo n.º 3
0
        public TagToCustomerRecord(IReadOnlyDictionary <string, int> columnMetadata, IList <object> row)
        {
            if (_tagIdOrdinal == -1)
            {
                _tagIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "TagId");
            }

            if (_customerIdOrdinal == -1)
            {
                _customerIdOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "CustomerId");
            }

            if (_tagNameOrdinal == -1)
            {
                _tagNameOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "TagName");
            }

            TagId      = (int)row[_tagIdOrdinal];
            CustomerId = (int)row[_customerIdOrdinal];
            TagName    = (string)row[_tagNameOrdinal];
        }
Exemplo n.º 4
0
        public TagToGoalRecordDestinationUrl(IReadOnlyDictionary <string, int> columnMetadata, IList <object> row)
            : base(columnMetadata, row)
        {
            GoalType = GoalType.DestinationUrl;

            if (_destinationUrlOrdinal == -1)
            {
                _destinationUrlOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "DestinationURL");
            }

            if (_comparisonOperatorOrdinal == -1)
            {
                _comparisonOperatorOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "DestinationURLOperator");
            }

            var destinationUrl         = (string)row[_destinationUrlOrdinal];
            var comparisonOperatorByte = (byte)row[_comparisonOperatorOrdinal];

            if (!GoalUtils.IsValidComparisonOperator(comparisonOperatorByte))
            {
                throw new Exception(String.Format("DestinationUrl comparison operator value {0} is outside of range.", comparisonOperatorByte));
            }

            var comparisonOperator = (GoalComparisonOperator)comparisonOperatorByte;

            if (!GoalUtils.IsValidStringOperator(comparisonOperator))
            {
                throw new Exception(String.Format("Comparison operator value {0} is not supported by {1} goal type.", comparisonOperator.ToString(), GoalType));
            }

            DestinationUrlProperty = new GoalProperty <string>
            {
                ComparisonOperator = comparisonOperator,
                PropertyValue      = destinationUrl.Trim()
            };
        }
        public TagToGoalRecordPagesPerVisit(IReadOnlyDictionary <string, int> columnMetadata, IList <object> row)
            : base(columnMetadata, row)
        {
            GoalType = GoalType.PagesPerVisit;

            if (_numberOfPagesOrdinal == -1)
            {
                _numberOfPagesOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "PageVisitGoal");
            }

            if (_comparisonOperatorOrdinal == -1)
            {
                _comparisonOperatorOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "PageVisitOperator");
            }

            var numberOfPages     = (short)row[_numberOfPagesOrdinal];
            var valueOperatorByte = (byte)row[_comparisonOperatorOrdinal];

            if (!GoalUtils.IsValidValueOperator(valueOperatorByte))
            {
                throw new Exception(String.Format("NumberOfPages comparison operator value {0} is outside of range.", valueOperatorByte));
            }

            var valueComparisonOperator = (ValueComparisonOperator)valueOperatorByte;

            if (!GoalUtils.IsValidNumericOperator(valueComparisonOperator))
            {
                throw new Exception(String.Format("Value operator value {0} is not supported by {1} goal type.", valueComparisonOperator.ToString(), GoalType));
            }

            NumberOfPagesProperty = new GoalProperty <short>
            {
                ValueComparisionOperator = valueComparisonOperator,
                PropertyValue            = numberOfPages
            };
        }
Exemplo n.º 6
0
        public override void ReadSource(SymSource aSource, TSynchronicity aSynchronicity)
        {
            // Need to work out if it's a GCCE or RVCT map file.
            TMapFileType type = MapFileUtils.Type(aSource.FileName);
            //
            MapReader reader = null;

            switch (type)
            {
            case TMapFileType.ETypeRVCT:
                reader = new RVCTMapFileReader(aSource, base.Tracer);
                break;

            case TMapFileType.ETypeGCCE:
                reader = new GCCEMapFileReader(aSource, base.Tracer);
                break;

            case TMapFileType.ETypeUnknown:
            default:
                throw new NotSupportedException();
            }
            //
            reader.Read(aSynchronicity);
        }
Exemplo n.º 7
0
        public TagToGoalRecordCustomEvent(Dictionary <string, int> columnMetadata, object[] row)
            : base(columnMetadata, row)
        {
            GoalType = GoalType.CustomEvent;

            if (_eventCategoryOrdinal == -1)
            {
                _eventCategoryOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventCategory");
            }

            if (_categoryComparisonOperatorOrdinal == -1)
            {
                _categoryComparisonOperatorOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventCategoryOperator");
            }

            if (_eventNameOrdinal == -1)
            {
                _eventNameOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventName");
            }

            if (_nameComparisonOperatorOrdinal == -1)
            {
                _nameComparisonOperatorOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventNameOperator");
            }

            if (_eventLabelOrdinal == -1)
            {
                _eventLabelOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventLabel");
            }

            if (_labelComparisonOperatorOrdinal == -1)
            {
                _labelComparisonOperatorOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventLabelOperator");
            }

            if (_eventValueOrdinal == -1)
            {
                _eventValueOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventValue");
            }

            if (_valueComparisonOperatorOrdinal == -1)
            {
                _valueComparisonOperatorOrdinal = MapFileUtils.GetColumnOrdinal(columnMetadata, "EventValueOperator");
            }

            var eventCategory = (string)row[_eventCategoryOrdinal];
            var categoryComparisonOperatorByte = (byte?)row[_categoryComparisonOperatorOrdinal];

            EventCategoryProperty = CreateCustomEventGoalProperty("Category", eventCategory, categoryComparisonOperatorByte);

            var eventName = (string)row[_eventNameOrdinal];
            var nameComparisonOperatorByte = (byte?)row[_nameComparisonOperatorOrdinal];

            EventActionProperty = CreateCustomEventGoalProperty("Name", eventName, nameComparisonOperatorByte);

            var eventLabel = (string)row[_eventLabelOrdinal];
            var labelComparisonOperatorByte = (byte?)row[_labelComparisonOperatorOrdinal];

            EventLabelProperty = CreateCustomEventGoalProperty("Label", eventLabel, labelComparisonOperatorByte);

            var eventValue = (double?)row[_eventValueOrdinal];
            var valueComparisonOperatorByte = (byte?)row[_valueComparisonOperatorOrdinal];

            if (eventValue != null)
            {
                if (valueComparisonOperatorByte == null)
                {
                    throw new Exception("ValueComparisonOperator value cannot be null when EventValue value is not null.");
                }

                if (!GoalUtils.IsValidValueOperator((byte)valueComparisonOperatorByte))
                {
                    throw new Exception(String.Format("ValueComparisonOperator value {0} is outside of range.", valueComparisonOperatorByte));
                }

                var valueOperator = (ValueComparisonOperator)valueComparisonOperatorByte;

                if (!GoalUtils.IsValidNumericOperator(valueOperator))
                {
                    throw new Exception(String.Format("ValueOperator value {0} is not supported by {1} goal type.", valueOperator.ToString(), GoalType));
                }

                EventValueProperty = new GoalProperty <double>
                {
                    ValueComparisionOperator = valueOperator,
                    PropertyValue            = (double)eventValue
                };
            }
        }
Exemplo n.º 8
0
 private void LoadMaps()
 {
     _mapList = MapFileUtils.GetMapList();
     _pageHandler.SetElements(_mapList.ToArray());
     _selectionHandler.CurrentSelectionIndex = 0;
 }
Exemplo n.º 9
0
        private void InitializeGlobalData()
        {
            if (_globalData == null)
            {
                _globalData = new GlobalData();
            }

            _globalData.Origin = GameObject.Find("slide")?.transform.position ?? Vector3.zero;

            _globalData.TreeOrigin = GameObject.Find("stool")?.transform.position ?? Vector3.zero;

            // Tree Teleport Stuff
            if (_globalData.BigTreeTeleportToMap == null)
            {
                var         teleporterPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(typeof(MapFileUtils).Assembly.Location), Constants.MiscObjectsFolderName, "Teleporter");
                AssetBundle bundle         = MapFileUtils.GetAssetBundleFromZip(teleporterPath);
                _globalData.BigTreeTeleportToMap = Object.Instantiate(bundle.LoadAsset <GameObject>("_Teleporter"));

                _globalData.BigTreeTeleportToMap.layer = Constants.MaskLayerPlayerTrigger;
                Object.DontDestroyOnLoad(_globalData.BigTreeTeleportToMap);
                _globalData.BigTreeTeleportToMap.transform.position += new Vector3(0, -0.05f, 2.9f);
                _globalData.BigTreeTeleportToMap.transform.Rotate(new Vector3(0, 20, 0));
            }


            var         orbPath   = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(typeof(MapFileUtils).Assembly.Location), Constants.MiscObjectsFolderName, "Orb");
            AssetBundle orbBundle = MapFileUtils.GetAssetBundleFromZip(orbPath);

            GameObject orb        = Object.Instantiate(orbBundle.LoadAsset <GameObject>("_Orb"));
            GameObject orbVisuals = Object.Instantiate(orb);

            orb.AddComponent <RotateByHand>();
            orb.GetComponent <Renderer>().enabled = false;
            Object.Destroy(orb.GetComponent <Renderer>());
            orb.layer = 18;

            orbVisuals.transform.SetParent(orb.transform);
            orbVisuals.transform.localPosition = Vector3.zero;
            orbVisuals.transform.localScale    = Vector3.one;
            orbVisuals.transform.localRotation = Quaternion.identity;

            orbVisuals.AddComponent <PreviewOrb>();
            orbVisuals.GetComponent <Collider>().enabled = false;
            Object.Destroy(orbVisuals.GetComponent <Collider>());

            //orb.layer = Constants.MaskLayerPlayerTrigger;

            Teleporter treeTeleporter = _globalData.BigTreeTeleportToMap.GetComponent <Teleporter>();

            treeTeleporter.TeleporterType     = TeleporterType.Map;
            treeTeleporter.JoinGameOnTeleport = true;
            treeTeleporter.TeleportPoints     = new List <Transform>();
            treeTeleporter.Delay     = 1.5f;
            treeTeleporter.TouchType = GorillaTouchType.Head;

            Object.DontDestroyOnLoad(treeTeleporter);
            if (_globalData.BigTreePoint == null)
            {
                _globalData.BigTreePoint = new GameObject("TreeHomeTargetObject");
                _globalData.BigTreePoint.transform.position = new Vector3(-66f, 12.3f, -83f);
                _globalData.BigTreePoint.transform.rotation = Quaternion.Euler(0f, -90f, 0f);
                Object.DontDestroyOnLoad(_globalData.BigTreePoint);
            }
            treeTeleporter.TeleportPoints.Add(_globalData.BigTreePoint.transform);

            ColorTreeTeleporter(new Color(0, 1, 0));

            // Emergency Teleport Stuff
            if (_globalData.FallEmergencyTeleport != null)
            {
                Object.Destroy(_globalData.FallEmergencyTeleport);
                _globalData.FallEmergencyTeleport = null;
            }
            _globalData.FallEmergencyTeleport       = new GameObject("FallEmergencyTeleport");
            _globalData.FallEmergencyTeleport.layer = Constants.MaskLayerHandTrigger;
            _globalData.FallEmergencyTeleport.AddComponent <BoxCollider>().isTrigger = true;
            _globalData.FallEmergencyTeleport.transform.localScale = new Vector3(1000f, 1f, 1000f);
            _globalData.FallEmergencyTeleport.transform.position   = _globalData.TreeOrigin + new Vector3(0f, -200f, 0f);
            Object.DontDestroyOnLoad(_globalData.FallEmergencyTeleport);

            Teleporter emergencyFallTeleporter = _globalData.FallEmergencyTeleport.AddComponent <Teleporter>();

            emergencyFallTeleporter.TeleportPoints = new List <Transform>()
            {
                _globalData.BigTreePoint.transform
            };
        }
Exemplo n.º 10
0
        public IEnumerator LoadMapFromPackageFileAsync(MapInfo mapInfo, Action <bool> isSuccess)
        {
            if (_isLoading)
            {
                yield break;
            }

            _isLoading = true;
            _lobbyName = "";

            UnloadMap();
            Logger.LogText("Loading map: " + mapInfo.FilePath + " -> " + mapInfo.PackageInfo.Descriptor.Name);

            var bundleDataStream = MapFileUtils.GetMapDataStreamFromZip(mapInfo);

            if (bundleDataStream == null)
            {
                Logger.LogText("Bundle not found in package");

                _isLoading = false;
                isSuccess(false);
                yield break;
            }

            var loadBundleRequest = AssetBundle.LoadFromStreamAsync(bundleDataStream);

            yield return(loadBundleRequest);

            var bundle = loadBundleRequest.assetBundle;

            if (bundle == null)
            {
                Logger.LogText("Bundle NOT LOADED");

                _isLoading = false;
                isSuccess(false);
                yield break;
            }

            Logger.LogText("Bundle loaded");

            var assetNames = bundle.GetAllAssetNames();

            Logger.LogText("Asset count: " + assetNames.Length + ", assets: " + string.Join(";", assetNames));

            Logger.LogText("Asset name: " + mapInfo.PackageInfo.Descriptor.Name);

            string[] scenePath = bundle.GetAllScenePaths();

            if (scenePath.Length <= 0)
            {
                Logger.LogText("Bundle NOT LOADED");

                _isLoading = false;
                isSuccess(false);
                yield break;
            }

            var scene = SceneManager.LoadSceneAsync(scenePath[0], LoadSceneMode.Additive);

            yield return(scene);

            GameObject[]  allObjects = Object.FindObjectsOfType <GameObject>();
            MapDescriptor descriptor = Object.FindObjectOfType <MapDescriptor>();

            foreach (GameObject gameObject in allObjects)
            {
                if (gameObject.scene.name != "GorillaTagNewVisuals" && gameObject.scene.name != "DontDestroyOnLoad")
                {
                    if (gameObject.transform.parent == null & gameObject.transform != descriptor.transform)
                    {
                        gameObject.transform.SetParent(descriptor.transform);
                    }
                }
            }
            GameObject map = descriptor.gameObject;

            if (map == null)
            {
                _isLoading = false;
                isSuccess(false);
                bundle.Unload(false);
                yield break;
            }

            Logger.LogText("Map asset loaded: " + map.name);
            _lobbyName = mapInfo.PackageInfo.Descriptor.Author + "_" + mapInfo.PackageInfo.Descriptor.Name;
            if (!String.IsNullOrWhiteSpace(mapInfo.PackageInfo.Config.GUID))
            {
                _lobbyName = mapInfo.PackageInfo.Config.GUID + "_" + mapInfo.PackageInfo.Config.Version;
            }

            Exception ex = null;

            yield return(ProcessAndInstantiateMap(map).AsIEnumerator(exception => ex = exception));

            yield return(null);

            if (ex != null)
            {
                Logger.LogException(ex);

                isSuccess(false);
                _isLoading = false;
                bundle.Unload(false);
                yield break;
            }

            bundle.Unload(false);
            bundleDataStream.Close();

            _isLoading = false;
            isSuccess(true);
        }