public static T Create <T>(IDefaultData defaultData, ObjectCreationStrategy objectCreationStrategy)
        {
            var type         = typeof(T);
            var defaultValue = type.GetDefaultValue(defaultData);

            if (defaultValue != null)
            {
                return((T)defaultValue);
            }

            if (type.IsInterface)
            {
                return(InterfaceCreator.Create <T>(type, defaultData, objectCreationStrategy));
            }

            if (type.IsAbstract)
            {
                return(AbstractClassCreator.Create <T>(type, defaultData, objectCreationStrategy));
            }

            if (type.IsArray)
            {
                return(ArrayCreator.Create <T>(type, defaultData, objectCreationStrategy));
            }

            if (type.IsAction())
            {
                return(ActionCreator.Create <T>(type));
            }

            if (type.IsFunc())
            {
                return(FuncCreator.Create <T>(type, defaultData, objectCreationStrategy));
            }

            if (type.IsTask())
            {
                return(TaskCreator.Create <T>(type, defaultData, objectCreationStrategy));
            }

            return(UnknownTypeCreator.CreateDynamicFrom <T>(type, defaultData, objectCreationStrategy));
        }
示例#2
0
        public override void Update(GameTime gameTime)
        {
            // Console.WriteLine(EnemyManager.enemySpawnTimer);

            #region worldConfigurator
            if (WorldConfigurator.developerMode)
            {
                InterfaceCreator.Update();
                return;
            }
            #endregion
            #region buttonChecking
            foreach (var button in ScreenManager.buttons)
            {
                button.UpdateComponent();
                button.HandleButtonActions();
            }
            #endregion

            #region PauseGame
            if (MouseInput.LastMouseState.MiddleButton == ButtonState.Pressed && MouseInput.MouseState.MiddleButton == ButtonState.Released)
            {
                pauseGame = pauseGame == true ? false : true;
                foreach (var button in ScreenManager.buttons.ToList())
                {
                    if (button.Name.Contains("pause"))
                    {
                        button.Visible = pauseGame;
                    }
                }
                foreach (var image in ScreenManager.images.ToList())
                {
                    if (image.Name.Contains("pause"))
                    {
                        image.Visible = pauseGame;
                    }
                }
            }
            #region level handler
            Level.Update();
            #endregion
            if (pauseGame || Level.nextLevel)
            {
                return;
            }
            //level accelerator
            Level.percentageTillNextLevel += WorldConfigurator.NEXT_LEVEL_INCREMENT * (float)gameTime.ElapsedGameTime.Milliseconds;
            #endregion

            #region water Handling
            ScreenManager.water.Update();
            #endregion

            #region sun handling
            Sun.Update(gameTime);
            #endregion

            #region FoodClicking
            Actions.clickForFood();
            foreach (var food in ScreenManager.food.ToList())
            {
                food.UpdateGameObject(gameTime);
                food.Update(gameTime);
            }
            #endregion

            #region Fish Wandering & Fish eating & Fish dropping money
            foreach (var friendly in ScreenManager.friendly.ToList())
            {
                friendly.UpdateEntity(gameTime);
            }
            #endregion

            #region coins clicking
            foreach (var coin in ScreenManager.coins.ToList())
            {
                coin.UpdateGameObject(gameTime);
                coin.Update(gameTime);
            }
            #endregion

            #region Enemies
            Actions.hitEnemy();
            EnemyManager.Update(gameTime);
            foreach (var enemy in ScreenManager.enemies.ToList())
            {
                enemy.UpdateEntity(gameTime);
            }

            #endregion

            #region fonts
            foreach (var font in ScreenManager.fonts.ToList())
            {
                font.Update(gameTime);
            }
            #endregion
        }
示例#3
0
        public override void Draw(GameTime gameTime)
        {
            ScreenManager.water.DrawToRenderTargets();
            #region waterDrawing
            ScreenManager.water.Draw();
            #endregion
            ScreenManager.Sprites.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);

            //Console.WriteLine(ScreenManager.getCurrentScreen());
            #region WorldConfigurator developer mode
            if (WorldConfigurator.developerMode)
            {
                InterfaceCreator.Draw();
                ScreenManager.Sprites.End();
                return;
            }
            #endregion



            #region draw Friendly
            foreach (var friendly in ScreenManager.friendly)
            {
                friendly.DrawEntity();
            }
            #endregion
            #region draw Food
            foreach (var food in ScreenManager.food)
            {
                food.Draw();
            }
            #endregion

            #region draw Coins
            if (Player.MoneyBuffer > 0)
            {
                Player.Gold        += (Player.MoneyBuffer / 2);
                Player.MoneyBuffer -= (Player.MoneyBuffer / 2);
            }
            foreach (var coins in ScreenManager.coins)
            {
                coins.Draw();
            }
            #endregion
            #region draw Enemies
            foreach (var enemy in ScreenManager.enemies)
            {
                enemy.DrawEntity();
            }
            #endregion

            #region drawBackground
            foreach (var item in ScreenManager.Textures2D)
            {
                {
                    if (item.Key.Equals(ScreenManager.SPRITE_PLAYSCREEN + "test_background"))
                    {
                        // ScreenManager.effect.CurrentTechnique.Passes[0].Apply();
                        ScreenManager.Sprites.Draw(item.Value, new Rectangle(0, (int)ScreenManager.water.GetHeight(100), item.Value.Width, item.Value.Height * 2), Color.White);
                        //  ScreenManager.effect.CurrentTechnique.Passes[1].Apply();
                    }
                }
            }
            #endregion
            #region draw Buttons
            foreach (var button in ScreenManager.buttons)
            {
                button.DrawComponent();
            }
            foreach (var image in ScreenManager.images)
            {
                image.DrawComponent();
            }
            #endregion
            #region draw fonts
            foreach (var font in ScreenManager.fonts)
            {
                font.Draw();
            }
            #endregion
            #region Draw cursor_damage
            foreach (var item in ScreenManager.Textures2D)
            {
                {
                    if (item.Key.Equals(ScreenManager.SPRITES_CURSORS + "cursor_damage"))
                    {
                        if (ScreenManager.enemies.Count > 0)
                        {
                            ScreenManager.Sprites.Draw(item.Value, new Rectangle(MouseInput.getMouseX() - item.Value.Width / 2, MouseInput.getMouseY() - item.Value.Height / 2, item.Value.Width, item.Value.Height), Color.White);
                        }
                    }
                }
            }
            #endregion
            ScreenManager.Sprites.End();
        }