Exemplo n.º 1
0
    public ShipDesign designShip(TechHull hull, Player player)
    {
        ShipDesign design = new ShipDesign(hull.getName(), hull);

        foreach (ShipDesignSlot slot in design.getSlots())
        {
            HullSlotType[] types = slot.getHullSlot().getTypes();

            if (types.Contains(HullSlotType.Engine))
            {
                design.assignSlot(slot, player.getTechs().getBestEngine(), slot.getQuantity());
            }
            else if (types.Contains(HullSlotType.Scanner))
            {
                design.assignSlot(slot, player.getTechs().getBestScanner(), slot.getQuantity());
            }
            else if (types.Contains(HullSlotType.Shield))
            {
                design.assignSlot(slot, player.getTechs().getBestShield(), slot.getQuantity());
            }
            else if (types.Contains(HullSlotType.Armor))
            {
                design.assignSlot(slot, player.getTechs().getBestArmor(), slot.getQuantity());
            }
            else if (types.Contains(HullSlotType.Weapon))
            {
                design.assignSlot(slot, player.getTechs().getBestTorpedo(), slot.getQuantity());
            }
            else if (types.Contains(HullSlotType.Mechanical))
            {
                // if this is a colony ship, put the colonization module in the mechanical slot
                if (hull.getName().Equals("Colony Ship"))
                {
                    design.assignSlot(slot, StaticTechStore.getInstance().getHullComponent("Colonization Module"), slot.getQuantity());
                }
                else
                {
                    design.assignSlot(slot, StaticTechStore.getInstance().getHullComponent("Fuel Tank"), slot.getQuantity());
                }
            }
        }
        design.computeAggregate(player);
        initShipDesign(design);

        return(design);
    }
Exemplo n.º 2
0
    /**
     * Generate a new universe
     */
    public void generate()
    {
        generatePlanets(game.getGame());
        generateWormholes(game.getGame());
        game.getGame().setYear(Consts.startingYear);

        foreach (Player player in game.getGame().getPlayers())
        {
            if (player.getRace().raceType == Race.RaceType.humanoid)
            {
                player.getRace().setHumanoid();
            }

            Message.info(player, "Welcome to the universe, go forth and conquer!");

            foreach (Planet planet in game.getGame().getPlanets())
            {
                if (planet.getOwner() == null)
                {
                    planet.makeHomeworld(player, game.getGame().getYear());
                    player.setHomeworld(planet);
                    planet.addQueueItem(QueueItemType.AutoMine, 5);
                    planet.addQueueItem(QueueItemType.AutoFactory, 5);
                    player.getPlanetKnowledges().Add(new PlanetKnowledge(planet));
                    Message.homePlanet(player, planet);
                    break;
                }
            }

            player.getTechs().init(player, techStore);
            foreach (TechHull hull in player.getTechs().getHulls())
            {
                ShipDesign design = shipDesigner.designShip(hull, player);
                design.computeAggregate(player);
                player.getDesigns().Add(design);
            }
            ShipDesign starbase = shipDesigner.designShip(techStore.getHull("Space Station"), player);
            starbase.computeAggregate(player);
            player.getDesigns().Add(starbase);

            foreach (ShipDesign design in player.getDesigns())
            {
                Fleet fleet = fleetController.makeFleet(design.getHullName(), player.getHomeworld().getX(), player.getHomeworld().getY(), player);
                fleet.addShipStack(design, 1);
                fleet.addWaypoint(player.getHomeworld().getX(), player.getHomeworld().getY(), 5, WaypointTask.None, player.getHomeworld());
                fleet.computeAggregate();

                GameObject go = GameObject.Instantiate(baseFleet, player.getHomeworld().PlanetGameObject.transform, false);
                go.transform.position = Vector3.zero;
                go.GetComponent <FleetGameObject>().setFleet(fleet);
                go.name = fleet.getName();
                go.SetActive(true);


                if (design.getHull().isStarbase())
                {
                    player.getHomeworld().setStarbase(fleet);
                    fleet.setOrbiting(player.getHomeworld());
                }
                else
                {
                    fleet.setFuel(fleet.getAggregate().getFuelCapacity());
                    fleet.setOrbiting(player.getHomeworld());
                }
                game.getGame().addFleet(fleet);
                player.getFleetKnowledges().Add(new FleetKnowledge(fleet));
                player.setNumFleetsBuilt(player.getNumFleetsBuilt() + 1);
            }
        }
    }