// 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); }
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); }
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)); }
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; }
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); }
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); }
/// <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; } }
private void GetWorld() { world = (game.GameStateManager.States .First(c => c is GameplayScreen) as GameplayScreen).World; }