Example #1
0
            public override void Execute()
            {
                var building = new PlayerBuilding(blueprint, footprint);

                game.Add(building);
                game.Add(new DebugWorker(building.BuildManager));
            }
Example #2
0
 public void Serialize(GameState state)
 {
     foreach (var tile in tiles)
     {
         state.Add(tile.GetComponent <Tile>());
     }
     state.Add(gridSettings);
 }
Example #3
0
    // 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);
    }
Example #4
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
    public void SerializeNew()
    {
        GameState newGameState = new GameState();

        newGameState.score     = score.value;
        newGameState.highScore = highestScore.value;
        newGameState.moveCount = moveCount.value;
        newGameState.Add(grid);
        newGameState.Serialize();
    }
Example #8
0
 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);
        }
Example #10
0
        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);
        }
Example #12
0
 public void Execute() => game.Add(new EnemyUnit(blueprint, tile));