public GameObject GetArrow(GameObject shooter, GameObject target, int id = -1) { var arrowContainerObject = new GameObject(); arrowContainerObject.ConstructionStamp = "Arrow"; arrowContainerObject.Team = shooter.Team; arrowContainerObject.ID = id == -1 ? MechanicSingleton.Instance.GetNextObjectCountValue() : id; arrowContainerObject.CurrentFrame = AssetRepository.Instance.ArrowAnimations(arrowContainerObject.Scale).CurrentAnimatedRectangle.CurrentFrame; arrowContainerObject.UsedInPathing = false; arrowContainerObject.SetPhysics(new NonCollidingPhysics(arrowContainerObject, gameRef.Level.Bounds)); //arrow.SetRenderer(new RenderBase(arrow, AssetRepository.Instance.ArrowTexture, AssetRepository.Instance.ArrowAnimations)); arrowContainerObject.SetBrain(new ArrowBrain(arrowContainerObject, target)); arrowContainerObject.SetMover(new ProjectileMover(arrowContainerObject)); arrowContainerObject.SetSkills(new SkillsComponent(arrowContainerObject)); var arrowWeapon = new AlwaysAttackingWeapon(arrowContainerObject.Skills, arrowContainerObject); //DOTHIS figure out arrow sitch //arrowWeapon.EquipEffect(new BasicDamageEffect(durationMS: 250, damageRating: 25)); arrowWeapon.SetRenderer((new RenderBase(arrowWeapon, AssetRepository.Instance.ArrowTexture, AssetRepository.Instance.ArrowAnimations(arrowContainerObject.Scale)))); arrowContainerObject.EquipWeapon(arrowWeapon); arrowContainerObject.CurrentState = Constants.ACTOR_STATE_IDLE; arrowContainerObject.Position = shooter.Position; gameRef.container.AddObject(arrowContainerObject); return arrowContainerObject; }
public GameObject GetArrowTower(bool fromNetwork = false, int id = -1) { var tower = new GameObject(); tower.ConstructionStamp = "ArrowTower"; tower.Team = 0; tower.ID = id == -1 ? MechanicSingleton.Instance.GetNextObjectCountValue() : id; tower.CurrentFrame = AssetRepository.Instance.TowerAnimations(tower.Scale).CurrentAnimatedRectangle.CurrentFrame; tower.UsedInPathing = true; tower.SetPhysics(new CollidingPhysics(tower, gameRef.Level.Bounds)); tower.SetRenderer(new RenderBase(tower, AssetRepository.Instance.TowerTexture, AssetRepository.Instance.TowerAnimations(tower.Scale))); tower.SetBrain(new ArrowTowerBrain(tower, new TowerPlacingInput(gameRef, tower.PhysicsCollisionBox))); tower.SetSkills(new SkillsComponent(tower)); var emptyWeapon = new AlwaysAttackingWeapon(tower.Skills, tower); tower.EquipWeapon(emptyWeapon); if (fromNetwork) { tower.CurrentState = Constants.ACTOR_STATE_IDLE; } else { tower.CurrentState = Constants.ACTOR_STATE_PLACING; } tower.SetCombat(new CombatBase(tower)); gameRef.container.AddObject(tower); if (!fromNetwork) { NetCommander.CreatedObject(tower); } return tower; }
public GameObject GetEnemyFootSoldier(int id = -1) { var enemy = new GameObject(); enemy.ConstructionStamp = "EnemyFootSoldier"; enemy.ID = id == -1 ? MechanicSingleton.Instance.GetNextObjectCountValue() : id; enemy.SetPhysics(new CollidingPhysics(enemy, gameRef.Level.Bounds)); enemy.Position = new Vector2(MechanicSingleton.Instance.rand.Next(100, 500)); //var renderer = new RenderBase(enemy, AssetRepository.Instance.Slime, AssetRepository.Instance.SlimeAnimations); enemy.Scale = 2f; var renderer = new RenderBase(enemy, AssetRepository.Instance.HeroTexture, AssetRepository.Instance.HeroAnimations(enemy.Scale)); //var renderer = new RenderBase(enemy, AssetRepository.Instance.Slime, AssetRepository.Instance.SlimeAnimations(enemy.Scale)); enemy.SetRenderer(renderer); var mover = new WalkingMover(enemy); mover.SetMovementNoMu(100, 75); enemy.SetMover(mover); enemy.SetEngine(new WalkerEngine(enemy)); if (id == -1) { enemy.SetBrain(new FootSoldierBrain(enemy, gameRef.container.GetObjectById(0))); } else { enemy.SetBrain(new NetworkPlayerBrain(enemy)); } enemy.SetCombat(new CombatBase(enemy)); enemy.SetSkills(new SkillsComponent(enemy)); // wire up the events between components enemy.EquipWeapon(GetSword(enemy)); gameRef.container.AddObject(enemy); if (id == -1) { NetCommander.CreatedObject(enemy); } enemy.SpeedAccel = 25f; enemy.Team = 1; return enemy; }
public GameObject GetPlayer(Vector2? position = null) { var player = new GameObject(); player.ConstructionStamp = "Player"; player.Team = 0; player.Scale = 2f; player.ID = MechanicSingleton.Instance.GetNextObjectCountValue(); var mover = new WalkingMover(player); mover.SetMovementNoF(200, .5f); player.SetPhysics(new CollidingPhysics(player, gameRef.Level.Bounds)); if (position == null) { position = new Vector2(MechanicSingleton.Instance.rand.Next(1, 100)); } player.Position = position.Value; var renderer = new RenderBase(player, AssetRepository.Instance.HeroTexture, AssetRepository.Instance.HeroAnimations(player.Scale)); player.SetRenderer(renderer); player.SetBrain(new PlayerBrain(player, new PlayerControlInput())); player.SetMover(mover); player.SetEngine(new WalkerEngine(player)); player.SetCombat(new CombatBase(player)); player.SetSkills(new SkillsComponent(player)); player.EquipWeapon(GetSword(player)); player.EquipRage(GetRage(player)); player.Skills.SetBoost(new SimpleBoostSkill(player.Skills, player)); gameRef.container.AddObject(player); var parms = new CreateParameters() { ConstructorId = player.ConstructionStamp, ID = player.ID, Position = player.Position }; NetCommander.CreatedObject(player); gameRef.controlManager.BuildHUDForPlayer(player); return player; }
public GameObject GetNetworkPlayer(int id = -1) { var player = new GameObject(); player.ID = id == -1 ? MechanicSingleton.Instance.GetNextObjectCountValue() : id; player.Team = 0; player.Position = new Vector2(100, 100); player.SetPhysics(new CollidingPhysics(player, gameRef.Level.Bounds)); var renderer = new RenderBase(player, AssetRepository.Instance.HeroTexture, AssetRepository.Instance.HeroAnimations(player.Scale)); player.SetRenderer(renderer); player.SetBrain(new NetworkPlayerBrain(player)); player.SetCombat(new COMBATPLACEHOLDER(player)); player.SetMover(new WalkingMover(player)); player.SetEngine(new WalkerEngine(player)); player.EquipWeapon(GetSword(player)); gameRef.container.AddObject(player); return player; }