Esempio n. 1
0
        // Timer fields.
        #endregion

        public CowBehaviour(KhvGame game, Animal owner)
            : base(game, owner)
        {
            texture = game.Content.Load <Texture2D>(Path.Combine("Entities", owner.Dataset.AssetName));
            world   = (game.GameStateManager.Current as GameplayScreen).World;

            calendarSystem = game.Components.GetGameComponent <CalendarSystem>();
            calendarSystem.OnDayChanged += new CalendarEventHandler(calendarSystem_OnDayChanged);

            weatherSystem = game.Components.GetGameComponent <WeatherSystem>();
            mapManager    = (game.GameStateManager.Current as GameplayScreen).World.MapManager;

            timers = new TimerWrapper()
            {
                AutoCreateNewTimers = true
            };
            owner.Components.AddComponent(timers);

            random = new Random();

            brain.PushState(Walk);
            brain.PushState(ChangeDirection);

            owner.Collider.OnCollision += new CollisionEventHandler(Collider_OnCollision);
        }
Esempio n. 2
0
        public override void Initialize()
        {
            base.Initialize();
            World = new FarmWorld(Game);
            World.Initialize();

            camera = new Camera(Vector2.Zero, Game.GraphicsDevice.Viewport);
            FarmPlayer player = World.WorldObjects.GetGameObject <FarmPlayer>(p => p is FarmPlayer);

            camera.Follow(player);
        }
Esempio n. 3
0
        public void InitializeFromMapData(MapObjectArguments mapObjectArguments)
        {
            MapObjectArgumentReader reader = new MapObjectArgumentReader(mapObjectArguments);

            world = (game.GameStateManager.Current as GameplayScreen).World;

            mapContainedIn = mapObjectArguments.MapContainedIn;
            size           = reader.ReadSize();
            position       = mapObjectArguments.Origin;
            FeedType       = reader.ReadFeedType();

            Collider = new BoxCollider(world, this);

            Components.AddComponent(new FeedingTrayInteractionComponent(this));
        }
Esempio n. 4
0
        public FarmPlayer(KhvGame game, FarmWorld world, PlayerIndex index = PlayerIndex.One)
            : base(game, index)
        {
            defaultInputSetup = new InputControlSetup();

            this.world = world;
            Position   = new Vector2(500, 200);

            Size = new Size(30, 47);

            Collider = new BoxCollider(world, this,
                                       new BasicObjectCollisionQuerier(),
                                       new BasicTileCollisionQuerier());

            Collider.OnCollisionEnter += Collider_OnCollisionEnter;
            Collider.OnCollision      += Collider_OnCollision;
            Collider.OnCollisionLeave += Collider_OnCollisionLeave;
        }
Esempio n. 5
0
        public void InitializeFromMapData(MapObjectArguments mapObjectArguments)
        {
            MapObjectArgumentReader reader = new MapObjectArgumentReader(mapObjectArguments);

            size     = new Size(32, 32);
            FeedType = reader.ReadFeedType();
            position = mapObjectArguments.Origin;

            informer = new FeedDispinserInformer(game, this);

            world = (game.GameStateManager.Current as GameplayScreen).World;
            world.MapManager.OnMapChanged += new MapEventHandler(MapManager_OnMapChanged);

            Components.AddComponent(new FeedDispenserComponent(this));

            feedDataset = (game.Components.First(c => c is RepositoryManager)
                           as RepositoryManager).GetDataSet <FeedDataset>(d => d.Type == FeedType);

            // TODO: Testi AnimalFeedDispenser - InsertFeed(100)
            InsertFeed(100);
        }
Esempio n. 6
0
        private void Initialize(AnimalDataset dataset)
        {
            MotionEngine = new MotionEngine(this);

            world = (game.GameStateManager.States
                     .First(c => c is GameplayScreen) as GameplayScreen).World;

            RepositoryManager repositoryManager = game.Components
                                                  .First(c => c is RepositoryManager) as RepositoryManager;

            size     = Dataset.Size;
            Collider = new BoxCollider(world, this,
                                       new BasicObjectCollisionQuerier(),
                                       new BasicTileCollisionQuerier());

            ScriptEngine scriptEngine = game.Components
                                        .First(c => c is ScriptEngine) as ScriptEngine;

            ScriptBuilder builder = new ScriptBuilder(dataset.Behaviours.First(), new object[] { game, this });

            Behaviour         = scriptEngine.GetScript <AnimalBehaviourScript>(builder);
            BehaviourObserver = new ScriptObserver <AnimalBehaviourScript>(Behaviour, builder);
        }
Esempio n. 7
0
        /// <summary>
        /// Teleporttaa playerin uudelle kartalle.
        /// </summary>
        public void Port()
        {
            FarmWorld world = (game.GameStateManager.States.First(
                                   c => c is GameplayScreen) as GameplayScreen).World;

            if (world != null)
            {
                MapChangeAction action;
                MapManager      mapManager = world.MapManager;

                #region Warning flags
#warning Testi @ teleport, voi kusta tulevaisuudessa ku pitäs pitää karttoja muistissa.
#warning Testi @ teleport, vaihtaa vielä aika pseudona, ei osaa disabloida input eikä alottaa transition.
#warning Testi @ teleport, ei ole viel offset position joka annetaan teleporttaajalle kun hän porttaa eikä teleportin oikeaa kokoa.
                #endregion

                // Katotaan tässä kaikki mapit jotka tulisi pitää muistissa eikä disposata.
                // Jos kartta on "tärkeä" se tulee laittaa taustalle.

                if (mapManager.ActiveMap.Name == "farm" || Regex.IsMatch(mapManager.ActiveMap.Name, "playerhouseindoors[0-9]") ||
                    Regex.IsMatch(mapManager.ActiveMap.Name, "barnindoors[0-9]"))
                {
                    action = MapChangeAction.MoveCurrentToBackground;
                }
                else
                {
                    action = MapChangeAction.DisposeCurrent;
                }

                // Vaihtaa kartan ja resolvaa vastakkaisen teleportin.
                mapManager.ChangeMap(mapToTeleport, action);

                Teleport teleport = ResolveOpposite(mapManager);
                world.Player.Position = teleport.position + teleport.positionOffSet;
            }
        }
Esempio n. 8
0
 private void GetWorld()
 {
     world = (game.GameStateManager.States
              .First(c => c is GameplayScreen) as GameplayScreen).World;
 }