private void cam_CaptureImageAvailable(object sender, ContentReadyEventArgs e)
        {
            Dispatcher.BeginInvoke(() =>
            {
                var bmp = new BitmapImage();
                bmp.SetSource(e.ImageStream);
                var writeableBmp = BitmapFactory.New(bmp.PixelWidth, bmp.PixelHeight).FromStream(e.ImageStream);
                imageBitmap      = WriteableBitmapHelpers.TransformBitmapByCameraTypeAndPageOrientation(
                    writeableBmp, cam.CameraType, Orientation);

                var randomFileName = string.Format("{0}.jpg", Guid.NewGuid().ToString());
                LocalImagesHelper.WriteImageToIsolatedStorage(randomFileName, imageBitmap);
                using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
                {
                    db.SavedPictures.InsertOnSubmit(new PictureItem
                    {
                        Name   = randomFileName,
                        Width  = imageBitmap.PixelWidth,
                        Height = imageBitmap.PixelHeight
                    });
                    db.SubmitChanges();
                }
                e.ImageStream.Close();
            });
        }
Beispiel #2
0
        public static void WriteDefaultFaceCalculation(PointF[] shape)
        {
            var calculatedFaceAlignment = GetFaceCalculationsFromShape(shape);

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var faceCalculations = db.FaceCalculations.FirstOrDefault();

                faceCalculations._0_TamplaStanga         = calculatedFaceAlignment._0_TamplaStanga;
                faceCalculations._1_TamplaDreapta        = calculatedFaceAlignment._1_TamplaDreapta;
                faceCalculations._2_Barbie               = calculatedFaceAlignment._2_Barbie;
                faceCalculations._3_SpranceanaDreapta    = calculatedFaceAlignment._3_SpranceanaDreapta;
                faceCalculations._4_ArieOchiStang        = calculatedFaceAlignment._4_ArieOchiStang;
                faceCalculations._5_ArieOchiDrept        = calculatedFaceAlignment._5_ArieOchiDrept;
                faceCalculations._6_MarimeOchiStang      = calculatedFaceAlignment._6_MarimeOchiStang;
                faceCalculations._7_MarimeOchiDrept      = calculatedFaceAlignment._7_MarimeOchiDrept;
                faceCalculations._8_InaltimeGura         = calculatedFaceAlignment._8_InaltimeGura;
                faceCalculations._9_Unghi_60_67          = calculatedFaceAlignment._9_Unghi_60_67;
                faceCalculations._10_Unghi_64_65         = calculatedFaceAlignment._10_Unghi_64_65;
                faceCalculations._11_LungimeGuraExterior = calculatedFaceAlignment._11_LungimeGuraExterior;
                faceCalculations._12_UnghiNasStanga      = calculatedFaceAlignment._12_UnghiNasStanga;
                faceCalculations._13_UnghiNasDreapta     = calculatedFaceAlignment._13_UnghiNasDreapta;
                faceCalculations._14_ArieFata            = calculatedFaceAlignment._14_ArieFata;
                faceCalculations._15_ArieGura            = calculatedFaceAlignment._15_ArieGura;

                db.SubmitChanges();
            }
        }
 private FaceCalculationsItem GetDefaultFaceCalculations()
 {
     using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
     {
         return(db.FaceCalculations.FirstOrDefault());
     }
 }
Beispiel #4
0
 private void livesRespanTimer_Tick(object sender, EventArgs e)
 {
     if (NumberOfLives < Constants.MaxLives)
     {
         var      difference = DateTime.Now - _lastMomentOfDeath;
         TimeSpan t          = TimeSpan.FromSeconds(
             Constants.SecondsToWaitForLife
             - difference.Seconds
             - difference.Minutes * 60
             - difference.Hours * 3600
             - difference.Days * 3600 * 24
             );
         var display = string.Format("{0:D2}s", t.Seconds);
         TimeLeft = "Time left until next life: " + display;
     }
     else
     {
         NumberOfLives = Constants.MaxLives;
         livesRespanTimer.Stop();
         TimeLeft = string.Empty;
         using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
         {
             db.Settings.FirstOrDefault()._20_NumberLivesLeft = Constants.MaxLives;
             db.Settings.FirstOrDefault().LastMomentOfDeath   = DateTime.Now;
         }
     }
 }
Beispiel #5
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Back)
            {
                return;
            }

            SystemTray.IsVisible = true;
            if (NavigationContext.QueryString.ContainsKey("editprofile"))
            {
                editProfile = true;
            }

            Message = "Generate a random cartoon:";

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();
                width  = settings.DefaultImagePixelWidth;
                height = settings.DefaultImagePixelHeight;
                _sex   = settings.Sex;
                _race  = settings.Race;
            }

            ImageSource = LocalImagesHelper.ReadImageFromIsolatedStorage(Constants.DEFAULT_FACE_PHOTO, width, height);
            GenerateRandomCartoon();
        }
Beispiel #6
0
 public static FaceCalculationsItem ReadDefaultFaceCalculations()
 {
     using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
     {
         return(db.FaceCalculations.FirstOrDefault());
     }
 }
Beispiel #7
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            SystemTray.IsVisible = true;

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                History.Clear();
                var cartoon = LocalImagesHelper.ReadImageFromIsolatedStorage(Constants.DEFAULT_CARTOON_PHOTO, Constants.CartoonWidth, Constants.CartoonHeight);
                History.Add(new HistoryImage
                {
                    Name   = Constants.DEFAULT_CARTOON_PHOTO,
                    Image  = cartoon,
                    Width  = Constants.CartoonWidth,
                    Height = Constants.CartoonHeight
                });
                var savedPictures = db.SavedPictures;
                foreach (var picture in savedPictures)
                {
                    var image = LocalImagesHelper.ReadImageFromIsolatedStorage(picture.Name, picture.Width, picture.Height);
                    History.Add(new HistoryImage
                    {
                        Name   = picture.Name,
                        Image  = image,
                        Width  = picture.Width,
                        Height = picture.Height
                    });
                }
                NotifyPropertyChanged(() => History);
            }
        }
        private async Task startHardWork()
        {
            worker         = new BackgroundWorker();
            worker.DoWork += (sender, arg) =>
            {
                FaceSdkHelper.Initialize();
            };
            await worker.BeginWorkerAsync();

            var sdkImg = ImageConverter.SystemToSdk(imageBitmap);
            var result = FaceSdkHelper.Detect(sdkImg);

            if (SdkHelper.foundFace == true && SdkHelper.results.Count == 1)
            {
                var shape = SdkHelper.results.FirstOrDefault();

                var defaultFaceCalculations = Calculus.ReadDefaultFaceCalculations();
                var array = FaceCalculationsHelpers.FromFaceCalculationsToVector(defaultFaceCalculations);

                var calculatedFaceCalculations = Calculus.GetFaceCalculationsFromShape(shape);
                var resultArray = FaceCalculationsHelpers.FromFaceCalculationsToVector(calculatedFaceCalculations);

                var conditions         = new Conditions();
                var resultFromCalculus = conditions.GetLevelVerifierFunction(Level).Invoke(array, resultArray);

                if (resultFromCalculus != 0)
                {
                    using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
                    {
                        var passedLevels = db.Settings.FirstOrDefault()._16_PassedLevels;
                        db.Settings.FirstOrDefault()._16_PassedLevels = Math.Max(passedLevels, Level);

                        var level = db.Levels.FirstOrDefault(t => t.Level == Level);
                        level.Stars = Math.Max(resultFromCalculus, level.Stars);

                        db.SubmitChanges();
                    }
                    MessageBox.Show("Level passed. You won " + resultFromCalculus + " point" + (resultFromCalculus > 1 ? "s!" : "!"));
                }
                else
                {
                    InGameLifeHelpers.LoseLife();
                    MessageBox.Show("Level failed");
                }
            }
            else
            {
                MessageBox.Show("Camera did not detect your face! Try again!");
            }

            NavigationService.Navigate(new Uri(Pages.GeneralGameplay_Adventure, UriKind.RelativeOrAbsolute));
            FaceSdkHelper = null;
            GC.Collect();
        }
Beispiel #9
0
 public static void LoseLife()
 {
     using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
     {
         var settings = db.Settings.FirstOrDefault();
         settings.LastMomentOfDeath   = DateTime.Now;
         settings._20_NumberLivesLeft = Math.Max(0, settings._20_NumberLivesLeft - 1);
         // TODO: uncomment this
         //db.SubmitChanges();
     }
 }
Beispiel #10
0
        public App()
        {
            UnhandledException += Application_UnhandledException;
            InitializeComponent();
            InitializePhoneApplication();

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                if (!db.DatabaseExists())
                {
                    db.CreateDatabase();
                }
            }
        }
Beispiel #11
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Back)
            {
                return;
            }

            SystemTray.IsVisible = true;

            int width, height;

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();
                width  = settings.DefaultImagePixelWidth;
                height = settings.DefaultImagePixelHeight;
            }
            ImageSource = LocalImagesHelper.ReadImageFromIsolatedStorage(Constants.DEFAULT_FACE_PHOTO, width, height);

            var worker = new BackgroundWorker();

            worker.DoWork += (sender, arg) =>
            {
                FaceSdkHelper.Initialize();
            };
            await worker.BeginWorkerAsync();

            var sdkImg = ImageConverter.SystemToSdk(ImageSource);
            var result = FaceSdkHelper.Detect(sdkImg);

            ImageSource = ImageConverter.SdkToSystem(result);

            if (SdkHelper.foundFace == true && SdkHelper.results.Count == 1)
            {
                (ApplicationBar.Buttons[0] as ApplicationBarIconButton).IsEnabled = true;
                (ApplicationBar.Buttons[1] as ApplicationBarIconButton).IsEnabled = true;
                IsCalculating = false;
            }
            else
            {
                MessageBox.Show("Camera did not detect your face! Try again!");
                NavigationService.GoBack();
            }

            FaceSdkHelper = null;
            GC.Collect();
        }
Beispiel #12
0
        private void next_Click(object sender, EventArgs e)
        {
            LocalImagesHelper.WriteImageToIsolatedStorage(Constants.DEFAULT_FACE_PHOTO, ImageSource);

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();

                settings.DefaultImagePixelHeight = ImageSource.PixelHeight;
                settings.DefaultImagePixelWidth  = ImageSource.PixelWidth;
                settings.PhoneOrientation        = orientation;

                db.SubmitChanges();
            }

            NavigationService.Navigate(new Uri(Pages.CreateProfile_ProfileCreated, UriKind.RelativeOrAbsolute));
        }
Beispiel #13
0
 private void InitializeButtons()
 {
     Buttons.Clear();
     using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
     {
         for (int i = 1; i <= Constants.AvailableLevels; i++)
         {
             var level = db.Levels.FirstOrDefault(t => t.Level == i);
             Buttons.Add(new ButtonWrapper
             {
                 Content   = i.ToString(),
                 IsEnabled = i <= _lastLevelPassed ? true : false,
                 Stars     = level.Stars
             });
         }
     }
 }
Beispiel #14
0
 private void DeleteImage_Click(object sender, EventArgs e)
 {
     using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
     {
         if (isoStore.FileExists(_pictureName))
         {
             isoStore.DeleteFile(_pictureName);
         }
     }
     using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
     {
         var picture = db.SavedPictures.FirstOrDefault(t => t.Name == _pictureName);
         db.SavedPictures.DeleteOnSubmit(picture);
         db.SubmitChanges();
     }
     NavigationService.GoBack();
 }
Beispiel #15
0
        private void Next_Click(object sender, EventArgs e)
        {
            LocalImagesHelper.WriteImageToIsolatedStorage(Constants.DEFAULT_CARTOON_PHOTO, ImageSource);

            if (editProfile)
            {
                NavigationService.GoBack();
                return;
            }

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();
                settings.Initialized = true;
                db.SubmitChanges();
            }
            NavigationService.Navigate(new Uri(Pages.MainPage, UriKind.RelativeOrAbsolute));
        }
        private void Next_Click(object sender, EventArgs e)
        {
            if (PlayerName.IsNullOrEmptyOrWhiteSpace())
            {
                MessageBox.Show("Please insert a name");
                return;
            }

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();
                settings.PlayerName = PlayerName;
                settings.Sex        = GetSexType();
                settings.Race       = GetHumanRaceType();
                db.SubmitChanges();
            }
            NavigationService.Navigate(new Uri(Pages.CreateProfile_TakePhotoDefault, UriKind.Relative));
        }
Beispiel #17
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Back)
            {
                return;
            }

            await Extensions.WaitAsync(3000);

            var settingsExists = false;

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var count = db.Settings.Count();
                if (count == 0)
                {
                    db.Settings.InsertOnSubmit(new SettingsItem
                    {
                        Initialized       = false,
                        LastMomentOfDeath = DateTime.Now
                    });
                    db.FaceCalculations.InsertOnSubmit(new FaceCalculationsItem());
                    for (int i = 1; i <= Constants.AvailableLevels; i++)
                    {
                        db.Levels.InsertOnSubmit(new LevelItem {
                            Level = i, Stars = 0
                        });
                    }
                    db.SubmitChanges();
                }
                var settings = db.Settings.FirstOrDefault();
                settingsExists = settings.Initialized;
            }

            if (settingsExists)
            {
                NavigationService.Navigate(new Uri(Pages.MainPage, UriKind.RelativeOrAbsolute));
            }
            else
            {
                NavigationService.Navigate(new Uri(Pages.CreateProfile_CreateProfile, UriKind.RelativeOrAbsolute));
            }
        }
Beispiel #18
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            SystemTray.IsVisible = true;

            while (NavigationService.CanGoBack)
            {
                NavigationService.RemoveBackEntry();
            }

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();
                PlayerName = settings.PlayerName;

                Adventure       = Constants.AvailableLevels - settings._16_PassedLevels;
                Survival        = settings._17_SurvivalScore;
                MultiplayerWin  = settings._18_MultiplayerWinScore;
                MultiplayerLose = settings._19_MultiplayerLoseScore;
            }

            Cartoon = LocalImagesHelper.ReadImageFromIsolatedStorage(Constants.DEFAULT_CARTOON_PHOTO, Constants.CartoonWidth, Constants.CartoonHeight);
        }
Beispiel #19
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Back)
            {
                return;
            }

            SystemTray.IsVisible = true;

            int width, height;

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();
                PlayerName = settings.PlayerName;
                width      = settings.DefaultImagePixelWidth;
                height     = settings.DefaultImagePixelHeight;
            }

            DefaultPhoto   = LocalImagesHelper.ReadImageFromIsolatedStorage(Constants.DEFAULT_FACE_PHOTO, width, height);
            DefaultCartoon = LocalImagesHelper.ReadImageFromIsolatedStorage(Constants.DEFAULT_CARTOON_PHOTO, Constants.CartoonWidth, Constants.CartoonHeight);
        }
Beispiel #20
0
        private void Next_Click(object sender, EventArgs e)
        {
            Calculus.WriteDefaultFaceCalculation(SdkHelper.results.FirstOrDefault());
            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var settings = db.Settings.FirstOrDefault();

                settings._16_PassedLevels         = Constants.DefaultAvailableLevels;
                settings._17_SurvivalScore        = 0;
                settings._18_MultiplayerWinScore  = 0;
                settings._19_MultiplayerLoseScore = 0;
                settings._20_NumberLivesLeft      = Constants.MaxLives;
                settings.LastMomentOfDeath        = DateTime.Now;

                foreach (var level in db.Levels)
                {
                    level.Stars = 0;
                }
                db.SubmitChanges();
            }

            NavigationService.Navigate(new Uri(Pages.CreateProfile_CartoonCreator, UriKind.RelativeOrAbsolute));
        }
Beispiel #21
0
        private void ResetProfile_Click(object sender, EventArgs e)
        {
            var result = MessageBox.Show("Are you sure you want to reset your profile?", "Confirm", MessageBoxButton.OKCancel);

            switch (result)
            {
            case MessageBoxResult.OK:
                using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    isoStore.DeleteFile(Constants.DEFAULT_SETTINGS_FILE);
                    isoStore.DeleteFile(Constants.DEFAULT_FACE_PHOTO);
                    isoStore.DeleteFile(Constants.DEFAULT_CARTOON_PHOTO);

                    using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
                    {
                        db.Settings.FirstOrDefault().Initialized = false;
                        db.SubmitChanges();
                    }
                }

                NavigationService.Navigate(new Uri(Pages.CreateProfile_CreateProfile, UriKind.RelativeOrAbsolute));
                break;
            }
        }
Beispiel #22
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            while (NavigationService.CanGoBack)
            {
                NavigationService.RemoveBackEntry();
            }

            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                var lastLevel = db.Levels.OrderByDescending(t => t.Level).FirstOrDefault(t => t.Stars > 0);
                if (lastLevel == null)
                {
                    _lastLevelPassed = 2;
                }
                else
                {
                    _lastLevelPassed = Math.Max(2, lastLevel.Level + 1);
                }

                _lastMomentOfDeath = db.Settings.FirstOrDefault().LastMomentOfDeath;
                NumberOfLives      = db.Settings.FirstOrDefault()._20_NumberLivesLeft;
            }
            InitializeButtons();

            if (NumberOfLives == Constants.MaxLives)
            {
                return;
            }
            if (NumberOfLives > Constants.MaxLives)
            {
                NumberOfLives = Constants.MaxLives;
                using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
                {
                    db.Settings.FirstOrDefault()._20_NumberLivesLeft = Constants.MaxLives;
                    db.Settings.FirstOrDefault().LastMomentOfDeath   = DateTime.Now;
                }
                return;
            }

            var difference = DateTime.Now - _lastMomentOfDeath;

            try
            {
                var mustBeWaitedSeconds = Constants.SecondsToWaitForLife * (Constants.MaxLives - NumberOfLives);
                if (difference.TotalSeconds >= mustBeWaitedSeconds)
                {
                    NumberOfLives = Constants.MaxLives;
                    using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
                    {
                        db.Settings.FirstOrDefault()._20_NumberLivesLeft = Constants.MaxLives;
                        db.Settings.FirstOrDefault().LastMomentOfDeath   = DateTime.Now;
                    }
                    return;
                }
            }
            catch (Exception)
            {
                using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
                {
                    db.Settings.FirstOrDefault()._20_NumberLivesLeft = Constants.MaxLives;
                    db.Settings.FirstOrDefault().LastMomentOfDeath   = DateTime.Now;
                }
                return;
            }

            var livesEarned = (int)Math.Floor(difference.TotalSeconds / Constants.SecondsToWaitForLife);

            NumberOfLives = Math.Min(NumberOfLives + livesEarned, Constants.MaxLives);
            using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
            {
                db.Settings.FirstOrDefault()._20_NumberLivesLeft = NumberOfLives;
                db.Settings.FirstOrDefault().LastMomentOfDeath   = DateTime.Now;
            }

            if (NumberOfLives < Constants.MaxLives)
            {
                livesRespanTimer.Tick    += new EventHandler(livesRespanTimer_Tick);
                livesRespanTimer.Interval = new TimeSpan(0, 0, 1);
                livesRespanTimer.Start();
            }
        }
Beispiel #23
0
        void startHardWork(int currentPhoto)
        {
            try
            {
                Dispatcher.BeginInvoke(delegate()
                {
                    var source = new BitmapImage();

                    using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        using (var fileStream = isoStore.OpenFile(currentPhoto + ".jpg", FileMode.Open, FileAccess.Read))
                        {
                            source.SetSource(fileStream);
                        }
                    }

                    this.bitmap = new WriteableBitmap(source);

                    var sdkImg = ImageConverter.SystemToSdk(this.bitmap);
                    var result = this.FaceSdkHelper.Detect(sdkImg);

                    if (SdkHelper.foundFace == true)
                    {
                        foreach (var shape in SdkHelper.results)
                        {
                            var defaultFaceCalculations = Calculus.ReadDefaultFaceCalculations();
                            var array = FaceCalculationsHelpers.FromFaceCalculationsToVector(defaultFaceCalculations);

                            var calculatedFaceCalculations = Calculus.GetFaceCalculationsFromShape(shape);
                            var resultArray = FaceCalculationsHelpers.FromFaceCalculationsToVector(calculatedFaceCalculations);

                            Conditions c           = new Conditions();
                            var resultFromCalculus = c.GetLevelVerifierFunction(selectedPhotos[currentPhoto]).Invoke(array, resultArray);
                            if (resultFromCalculus != 0)
                            {
                                using (var db = new GrimacizerContext(GrimacizerContext.ConnectionString))
                                {
                                    db.Settings.FirstOrDefault()._17_SurvivalScore += resultFromCalculus;
                                    db.SubmitChanges();
                                }
                                MessageBox.Show("Picture number " + currentPhoto + " correct! You won " + resultFromCalculus + " points!");
                            }
                            else
                            {
                                MessageBox.Show("Picture number " + currentPhoto + " did not match!");
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Picture number " + currentPhoto + "! Camera did not detect your face!");
                    }
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show("Something bad appeared! Going back..");
                NavigationService.Navigate(new Uri(Pages.MainPage, UriKind.RelativeOrAbsolute));
            }
            finally
            {
                GC.Collect();
            }
        }