public override void Execute() { var building = new PlayerBuilding(blueprint, footprint); game.Add(building); game.Add(new DebugWorker(building.BuildManager)); }
public void Serialize(GameState state) { foreach (var tile in tiles) { state.Add(tile.GetComponent <Tile>()); } state.Add(gridSettings); }
// Sets a Token on a Field from the given Move on the GameField // (The Validation is handled via button enabling. // There the placement is allowed!) // Return the winner or null public Player?SetTokenOnField(Move move) { Player?winner = null; // Only do something when token is not covered if (!TokenIsCovered(move.Token)) { // Remove the Token if it's on an upper Field RemoveTokenFromField(move.Token); // Check if the Field is empty if (GameField.ContainsKey(move.Field)) { // Compare with the upper Token on the Field if (System.Convert.ToInt32(move.Token.tag) > System.Convert.ToInt32(GameField[move.Field].Peek().tag)) { // Place the Token on the highest position of the Field GameField[move.Field].Push(move.Token); } } else { Stack <GameObject> tokenStack = new Stack <GameObject>(); tokenStack.Push(move.Token); // Place the Token on the Field GameField.Add(move.Field, tokenStack); } // Check if game is won with the converted state of string tokens winner = WinDetection.CheckWinner(TypeConverter.ConvertState(GameField)); } return(winner); }
public bool pickUpCrateLeftSide(GameObject c, GameState gs) { AxisAllignedBoundingBox BBox = new AxisAllignedBoundingBox( new Vector2(Position.X - c.SpriteSize.X, Position.Y), new Vector2(Position.X, Position.Y + c.SpriteSize.Y)); List <GameObject> tmpSolids = gs.GetObjects(GameState.Handling.Solid); // tmpSolids.Remove(c); List <GameObject> crateCollisions = CollisionDetector.FindCollisions(BBox, tmpSolids); if (crateCollisions.Count == 0) { c.Position = new Vector2(Position.X - c.SpriteSize.X, Position.Y); gs.Add(c, GameState.Handling.None); gs.Remove(c, GameState.Handling.Solid); HeldObj = c; HeldObj.Falling = false; Holding = true; return(true); } else { // gs.Add(c, GameState.Handling.Solid); MyDebugger.WriteLine("crate hits something as it is picked up"); return(false); } }
internal static GameState GenerateWorkItems(this GameState state, int count) { int nextId = 1; if (state.WorkItems.Any()) { nextId = state.WorkItems.Max(c => c.Id) + 1; } var faker = new Faker <WorkItem>() .CustomInstantiator(f => new WorkItem(nextId++)) .RuleFor(c => c.Title, f => f.Hacker.Phrase()) .RuleFor(c => c.Department, f => f.PickRandom <Department>()) .RuleFor(c => c.Status, f => WorkItemStatus.New) // Simplest to start with everything in new .RuleFor(c => c.Priority, f => f.PickRandom <Priority>()) .RuleFor(c => c.WorkItemType, f => WorkItemType.Incident) .RuleFor(c => c.CreatedByCrewId, f => f.PickRandom(state.Crew).Id) .RuleFor(c => c.SystemId, f => f.PickRandom(state.Systems).Id) .RuleFor(c => c.AssignedCrewId, f => f.PickRandom(state.Crew.Select(c => c.Id)) .OrNull(f, 0.85f)); state.Add(faker.Generate(count)); return(state); }
public GameState InitMap(string levelName) { GameObjectFactory factory = new GameObjectFactory(); GameState gameState = new GameState(); //string text = ContentManager.Load<string>(levelName); //Level level = JsonConvert.DeserializeObject<Level>(text); Level level = _loader.Load(levelName); level.Resources = new SortedDictionary <string, List <Tool> >(); gameState.background = level.background; foreach (var keyValue in level.resources) { var tool = keyValue.Key; var num = keyValue.Value; level.Resources[tool] = new List <Tool>(); for (int i = 0; i < num; ++i) { level.Resources[tool].Add((new ToolFactory()).Create(new Obj { Type = tool })); } } gameState.Resources = level.Resources; gameState.levelname = level.levelname; foreach (Obj obj in level.objects) { GameObject gameObject = factory.Create(obj); gameState.Add(gameObject); if (gameObject is Platform) { gameState.Add((gameObject as Platform).Background, GameState.Handling.None); } if (gameObject is Door) { var lockedLight = (gameObject as Door).LockedLight; var unlockedLight = (gameObject as Door).UnlockedLight; gameState.Add(lockedLight, GameState.Handling.None); gameState.Add(unlockedLight, GameState.Handling.None); } } //gameState.InstantiateTools(); return(gameState); }
public void SerializeNew() { GameState newGameState = new GameState(); newGameState.score = score.value; newGameState.highScore = highestScore.value; newGameState.moveCount = moveCount.value; newGameState.Add(grid); newGameState.Serialize(); }
public bool HangOrTakeRope(GameState gs) { if (!isRope) { gs.Add(Rope, GameState.Handling.None); Rope.SwapTextures(); isRope = true; return(true); } return(false); //else gs.Remove(Rope, GameState.Handling.None); }
internal static GameState GenerateSystems(this GameState state, int count) { int nextId = state.NextSystemId; var faker = new Faker <ShipSystem>() .CustomInstantiator(f => new ShipSystem(nextId++)) .RuleFor(c => c.Name, f => f.Commerce.ProductName()); state.Add(faker.Generate(count)); return(state); }
public bool InteractWithCrate(GameState gs) { // picking up crate if (!Holding) { List <GameObject> collisions = CollisionDetector.FindCollisions( InteractionBox(), gs.GetObjects(GameState.Handling.Solid)); foreach (GameObject c in collisions) { if (c is Crate) { bool worked = false; if (c.Position.X < Position.X) { worked = pickUpCrateLeftSide(c, gs); if (!worked) { worked = pickUpCrateRightSide(c, gs); } } else { worked = pickUpCrateRightSide(c, gs); if (!worked) { worked = pickUpCrateLeftSide(c, gs); } } if (worked) { return(true); } } } return(false); } else { HeldObj.Falling = true; // Move HeldObj from NonSolids to Solids gs.Remove(HeldObj, GameState.Handling.None); gs.Add(HeldObj, GameState.Handling.Solid); HeldObj = null; Holding = false; return(true); } }
internal static GameState GenerateCrewMembers(this GameState state, int count) { int nextId = state.NextCrewId; var factory = new CrewFactory(); var faker = new Faker <CrewMember>() .CustomInstantiator(f => factory.Create(f.PickRandom <Department>(), nextId++)) .RuleFor(c => c.FirstName, f => f.Person.FirstName) .RuleFor(c => c.LastName, f => f.Person.LastName) .RuleFor(c => c.Rank, f => f.PickRandom <Rank>()) .RuleFor(c => c.DaysInRank, f => f.Random.Int(0, 500)); state.Add(faker.Generate(count)); return(state); }
public void Execute() => game.Add(new EnemyUnit(blueprint, tile));