Example #1
0
 public Sprites(Texture2D TextureIn, Rectangle RectangleIn)
 {
     SpriteTexture   = TextureIn;
     SpriteRectangle = RectangleIn;
     SpriteType      = SpriteTypes.Sprite;
     SpriteColour    = Color.White;
 }
Example #2
0
        internal pSprite(Texture2D texture, FieldTypes fieldType, OriginTypes originType, ClockTypes clockType,
                         Vector2 startPosition, float drawDepth, bool alwaysDraw, Color colour, Object tag)
        {
            Type = SpriteTypes.Image;

            localTexture = texture;

            Disposable = false;

            SpriteEffect = SpriteEffects.None;

            OriginType = originType;

            UpdateTextureSize();
            UpdateTextureAlignment();

            Clock           = clockType;
            CurrentPosition = startPosition;
            StartPosition   = CurrentPosition;
            CurrentRotation = 0;
            CurrentScale    = 1;
            Depth           = drawDepth;
            AlwaysDraw      = alwaysDraw;
            Field           = fieldType;
            CurrentColour   = colour;
            StartColour     = colour;
            Tag             = tag;
        }
Example #3
0
 public InformationNugget(string infoText, DisplayStatus nextDisplayStatus, int displayTime, bool skippable, SpriteTypes type = SpriteTypes.None)
 {
     InfoText          = infoText;
     NextDisplayStatus = nextDisplayStatus;
     DisplayTime       = displayTime;
     Skippable         = skippable;
     Type = type;
 }
        private Dictionary <SpriteTypes, int> GetCellSpriteTyes(int maxCount, int noofAvaialbleSprites, ref List <SpriteTypes> cellSpriteTypesList) // returns sprite types for cells
        {
            HashSet <int> availableSpritesHash = new HashSet <int>();

            for (int i = 0; i < noofAvaialbleSprites; i++)
            {
                availableSpritesHash.Add(i);
            }

            Dictionary <SpriteTypes, int> spriteTypes = new Dictionary <SpriteTypes, int>(); //TODO : introduce duplciates

            for (int i = 0; i < maxCount; i++)
            {
                int randomRange = 0;
                if (availableSpritesHash.Count > 0) // maxCount < number of availabe
                {
                    randomRange = UnityEngine.Random.Range(0, availableSpritesHash.Count);
                }
                else
                {
                    randomRange = UnityEngine.Random.Range(0, noofAvaialbleSprites); // creats duplicate values

                    SpriteTypes spriteType = (SpriteTypes)randomRange;
                    if (spriteTypes.ContainsKey(spriteType))
                    {
                        spriteTypes[spriteType] = spriteTypes[spriteType] + 2;
                    }
                    else
                    {
                        cellSpriteTypesList.Add((SpriteTypes)randomRange);
                        spriteTypes.Add((SpriteTypes)randomRange, 2);
                    }

                    continue; // continue to next iteration
                }

                int j            = 0;
                int randomSprite = 0;
                foreach (int hashValue in availableSpritesHash) // might need to re write
                {
                    if (j == randomRange)
                    {
                        randomSprite = hashValue;
                        break;
                    }
                    j++;
                }

                cellSpriteTypesList.Add((SpriteTypes)randomSprite);
                spriteTypes.Add((SpriteTypes)randomSprite, 2); // two here represents number of pairs
                availableSpritesHash.Remove(randomSprite);
            }

            return(spriteTypes);
        }
        public ISpriteTime GetTimeSettings(SpriteTypes type)
        {
            ISpriteTime desired;

            switch (type)
            {
            case SpriteTypes.Correct:
                desired = CorrectSpriteSettings;
                break;

            case SpriteTypes.Incorrect:
                desired = IncorrectSpriteSettings;
                break;

            case SpriteTypes.Baseline:
                desired = BaselineSpriteSettings;
                break;

            case SpriteTypes.Target:
                desired = TargetSpriteSettings;
                break;

            case SpriteTypes.ControlCue:
                desired = ControlCueSpriteSettings;
                break;

            case SpriteTypes.ControlNonIncentive:
                desired = ControlNonincentiveSpriteSettings;
                break;

            case SpriteTypes.RewardCue:
                desired = RewardCueSpriteSettings;
                break;

            case SpriteTypes.RewardNonIncentive:
                desired = RewardNonIncentiveSpriteSettings;
                break;

            case SpriteTypes.PunishmentCue:
                desired = PunishmentCueSpriteSettings;
                break;

            case SpriteTypes.PunishmentNonIncentive:
                desired = PunishmentNonIncentiveSpriteSettings;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
            return(desired);
        }
Example #6
0
 private void InitValues()
 {
     _taskType           = Randomness.RandomizeField(_taskSettings.NumberOfTasks, _taskSettings.NonIncentivePercentage);
     _upcomingSpriteType = _taskType[0] == 0 ? _taskSettings.NonIncentiveOrder[0] : _taskSettings.IncentiveOrder[0];
     _reactionTimes      = new double[_taskSettings.NumberOfTasks];
     for (var i = 0; i < _taskSettings.NumberOfTasks; i++)
     {
         _reactionTimes[i] = -1;
     }
     _iSprite          = -1;
     _passedTime       = 0;
     _numberOfSpamming = 0;
     AntiSpamming.Clear();
 }
Example #7
0
        private Dictionary <SpriteTypes, Sprite> spriteMap; // cahe map for 0(1) retrivel

        void Awake()
        {
            spriteMap = new Dictionary <SpriteTypes, Sprite>();
            for (int i = 0; i < sprites.Length; i++)
            {
                string      spriteName = sprites[i].name;
                SpriteTypes spriteType = (SpriteTypes)Enum.Parse(typeof(SpriteTypes), spriteName);
                if (!spriteMap.ContainsKey(spriteType))
                {
                    spriteMap.Add(spriteType, sprites[i]);
                }
                else
                {
                    Debug.Log("some files got similar name");
                }
            }
        }
        /// <summary>
        /// Change of Sprite intervals
        /// </summary>
        /// <param name="spriteType"></param>
        /// <param name="type"></param>
        /// <param name="newValue"></param>
        public Change(SpriteTypes spriteType, SettingsType type, int newValue)
        {
            switch (type)
            {
            case SettingsType.WaitIntervalMin:
            case SettingsType.WaitIntervalMax:
            case SettingsType.DisplayIntervalMin:
            case SettingsType.DisplayIntervalMax:
                IsSprite     = true;
                SpriteType   = spriteType;
                SettingsType = type;
                NewValue     = newValue;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, "Not applicable type");
            }
        }
Example #9
0
        private void HandleUserInput()
        {
            RemoveNotification();
            bool isIncentive = _taskType[(_iSprite - 1) / 3] != 0;

            if (!_spacebarPressed || _iSprite < 1)
            {
                return;
            }

            CheckSpamming();

            if (_iSprite < 1 || !(_reactionTimes[(_iSprite - 1) / 3] < 0))
            {
                return;
            }

            SpriteTypes type = SpriteTypes.Correct;

            _reactionTimes[(_iSprite - 1) / 3] = _passedTime;

            if (_passedTime > _threshold)
            {
                type = SpriteTypes.Incorrect;
            }

            if (!isIncentive)
            {
                _taskSettings.NonIncentiveOrder[2] = type;
                SendFeedback(_passedTime, false);
            }
            else
            {
                _taskSettings.IncentiveOrder[2] = type;
                SendFeedback(_passedTime, true);
            }
        }
Example #10
0
        private void ShowSprite()
        {
            _iSprite++;
            if (_iSprite % 3 == 2 && _reactionTimes[_iSprite / 3] < 0)
            {
                if (_taskType[_iSprite / 3] == 0)
                {
                    _taskSettings.NonIncentiveOrder[_iSprite % 3] = SpriteTypes.Incorrect;
                }
                else
                {
                    _taskSettings.IncentiveOrder[_iSprite % 3] = SpriteTypes.Incorrect;
                }
            }

            _currentSpriteType = _taskType[_iSprite / 3] == 0 ? _taskSettings.NonIncentiveOrder[_iSprite % 3] : _taskSettings.IncentiveOrder[_iSprite % 3];
            if (_iSprite < _taskSettings.NumberOfTasks * 3 - 1)
            {
                _upcomingSpriteType = _taskType[(_iSprite + 1) / 3] == 0 ? _taskSettings.NonIncentiveOrder[(_iSprite + 1) % 3] : _taskSettings.IncentiveOrder[(_iSprite + 1) % 3];
            }

            _currentSprite        = SpriteHandler.Sh.CreateSprite(_currentSpriteType, _panel);
            _currentDisplayStatus = DisplayStatus.DisplayingSprite;
        }
Example #11
0
 public void SetSpriteType(SpriteTypes newType)
 {
     Type = newType;
 }
Example #12
0
 public Sprite(SpriteTypes spritetype)
 {
     SpriteType = spritetype;
 }
        public LevelSession GetLevelSession(int levelIndex, Vector3 levelCenterPostion)
        {
            LevelParserData levelParserData = LevelParser.LoadLevelData(levels[levelIndex].levelFileName);
            int             rows            = levelParserData.rows;
            int             columns         = levelParserData.columns;
            int             totlaNumberOFX  = levelParserData.filledCellCount; // number of filled blocks

            if (totlaNumberOFX % 2 != 0)
            {
                Debug.LogError("levele contains even tiles"); // we expect all even filled blocks
                Debug.Break();
            }

            List <Vector2> filledCellIndexList = new List <Vector2>();

            for (int i = 0; i < rows; i++)
            {
                List <bool> currentRow = levelParserData.levelInfoList[i];
                for (int j = 0; j < currentRow.Count; j++)
                {
                    if (currentRow[j] == true)
                    {
                        filledCellIndexList.Add(new Vector2(i, j));
                    }
                }
            }

            int numberOfTileSNeeded     = totlaNumberOFX / 2;
            int noofAvaialbleSprites    = Enum.GetNames(typeof(SpriteTypes)).Length;
            int numberOfCloseByExpected = UnityEngine.Random.Range(2, 4);                                                // expected close by pairs

            Dictionary <SpriteTypes, int> cellSpriteTypesDict = new Dictionary <SpriteTypes, int>();                     // dictionary will track the count of used ons
            List <SpriteTypes>            cellSpriteTypesList = new List <SpriteTypes>();                                // list as key for dictionary

            cellSpriteTypesDict = GetCellSpriteTyes(numberOfTileSNeeded, noofAvaialbleSprites, ref cellSpriteTypesList); // type of sprite that we are gonna show it on the screnn

            // we create grid with one extra 2 row and 2 column. this helps to find the outer path beyond the grid dimentions
            // session cell starts at (1,1) and end at ( row -1, column-1)

            Grid2D grid2D = new Grid2D(rows + 2, columns + 2, 1.0f, 1.0f, levelCenterPostion); // ading extra column and row
            Dictionary <SpriteTypes, List <Cell> > connectionMap = new Dictionary <SpriteTypes, List <Cell> >();

            //TODO: close by pairs

            for (int i = 0; i < filledCellIndexList.Count; i++)
            {
                Vector2 currentIndex = filledCellIndexList[i];
                Vector2 cellIndex    = new Vector2(currentIndex.x + 1, currentIndex.y + 1);
                Cell    cell         = grid2D.Cells[(int)cellIndex.x, (int)cellIndex.y];
                cell.CellPositionIndex = cellIndex;

                int         randomSpriteNo = UnityEngine.Random.Range(0, cellSpriteTypesList.Count);
                SpriteTypes randomSprite   = cellSpriteTypesList[randomSpriteNo];

                if (cellSpriteTypesDict.ContainsKey(randomSprite)) // we expecting the diction contins the key
                {
                    cellSpriteTypesDict[randomSprite] -= 1;
                    if (cellSpriteTypesDict[randomSprite] == 0)
                    {
                        cellSpriteTypesList.Remove(randomSprite);
                        cellSpriteTypesDict.Remove(randomSprite);
                    }
                }

                SpriteObject spriteObject = new SpriteObject(randomSprite);
                cell.CellObj            = spriteObject;
                spriteObject.ParentCell = cell;
                if (connectionMap.ContainsKey(randomSprite))
                {
                    connectionMap[randomSprite].Add(cell);
                }
                else
                {
                    connectionMap.Add(randomSprite, new List <Cell>()
                    {
                        cell
                    });
                }

                float randomeValue = UnityEngine.Random.value;
            }

            _currentLevelGrid = grid2D;
            LevelSession levelSession = new LevelSession(grid2D, connectionMap);

            levelSession.RemainigSpritObjCnt = totlaNumberOFX;  // init max sprite count
            levelSession.SpriteObjCount      = totlaNumberOFX;
            return(levelSession);
        }
 public SpriteTime(Interval waitInterval, Interval displayInterval, SpriteTypes type)
 {
     DisplayInterval = displayInterval;
     WaitInterval    = waitInterval;
     Type            = type;
 }
 public static void SetSpriteField(SpriteTypes spriteType, SettingsType type, int newValue)
 {
     Changes.Add(new Change(spriteType, type, newValue));
 }
Example #16
0
        public GameObject CreateSprite(SpriteTypes spriteType, GameObject panel, Position position = Position.Middle)
        {
            var newObj   = new GameObject();
            var newImage = newObj.AddComponent <Image>();

            switch (spriteType)
            {
            case SpriteTypes.Baseline:
                newImage.sprite = BaselineSprite;
                break;

            case SpriteTypes.Target:
                newImage.sprite = TargetSprite;
                break;

            case SpriteTypes.ControlCue:
                newImage.sprite = ControlCueSprite;
                break;

            case SpriteTypes.ControlNonIncentive:
                newImage.sprite = ControlNonIncentiveSprite;
                break;

            case SpriteTypes.RewardCue:
                newImage.sprite = RewardCueSprite;
                break;

            case SpriteTypes.PunishmentCue:
                newImage.sprite = PunishmentCueSprite;
                break;

            case SpriteTypes.RewardNonIncentive:
                newImage.sprite = RewardNonIncentiveSprite;
                break;

            case SpriteTypes.PunishmentNonIncentive:
                newImage.sprite = PunishmentNonIncentiveSprite;
                break;

            case SpriteTypes.Correct:
                newImage.sprite = CorrectSprite;
                break;

            case SpriteTypes.Incorrect:
                newImage.sprite = IncorrectSprite;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(spriteType), spriteType, null);
            }
            newObj.GetComponent <RectTransform>().SetParent(panel.transform);
            switch (position)
            {
            case Position.Middle:
                newObj.transform.localPosition = new Vector3(0, 0);
                break;

            case Position.Above:
                newObj.transform.localPosition = new Vector3(0, 200);
                break;

            case Position.Below:
                newObj.transform.localPosition = new Vector3(0, -200);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(position), position, null);
            }
            newObj.SetActive(true);
            return(newObj);
        }