Ejemplo n.º 1
0
 public void StartEncounter(FleetVessel playerShip)
 {
     tradeResources.Clear();
     this.playerShip = playerShip;
     gameObject.SetActive(true);
     encounterStrength = Random.Range(encounterStrengthMin, encounterStrengthMax);
     SetStage(stages[0]);
 }
Ejemplo n.º 2
0
    public void ShowShipTooltip(FleetVessel ship)
    {
        if (!ShipTooltip.activeInHierarchy)
        {
            Vector3 screenPoint = Camera.main.WorldToViewportPoint(ship.transform.position);

            ShipTooltip.transform.FindChild("ResourceTooltipCorium").transform.FindChild("Count").GetComponent <Text>().text    = (ship.cargoHold.GetCargo(ResourceType.Corium).Count).ToString();
            ShipTooltip.transform.FindChild("ResourceTooltipHydrazine").transform.FindChild("Count").GetComponent <Text>().text = (ship.cargoHold.GetCargo(ResourceType.Hydrazine).Count).ToString();
            ShipTooltip.transform.FindChild("ResourceTooltipWorkers").transform.FindChild("Count").GetComponent <Text>().text   = (ship.cargoHold.GetCargo(ResourceType.Workers).Count).ToString();
            ShipTooltip.transform.FindChild("ResourceTooltipSupplies").transform.FindChild("Count").GetComponent <Text>().text  = (ship.cargoHold.GetCargo(ResourceType.Supplies).Count).ToString();

            ShipTooltip.SetActive(true);
            ShipTooltip.GetComponentInChildren <RectTransform>().anchoredPosition = new Vector2(screenPoint.x, screenPoint.y + 35);
            ShipTooltip.GetComponentInChildren <RectTransform>().anchorMin        = screenPoint;
            ShipTooltip.GetComponentInChildren <RectTransform>().anchorMax        = screenPoint;
        }
    }
Ejemplo n.º 3
0
    public bool MeetsRequirements(Encounter encounter, FleetVessel ship)
    {
        if (requirement == EncounterStageRequirements.None)
        {
            return(true);
        }

        if (requirement == EncounterStageRequirements.Blasters)
        {
            return(compareCount(ship.Blasters, encounter.encounterStrength));
        }
        else if (requirement == EncounterStageRequirements.Boosters)
        {
            return(compareCount(ship.Boosters, encounter.encounterStrength));
        }

        return(false);
    }
Ejemplo n.º 4
0
    public bool Select(Player player)
    {
        if (hasShip && owner == player.netId)
        {
            if (player.isBuyingBoosterUpgrade)
            {
                if (player.Purchase(PurchaseManager.UpgradeBooster))
                {
                    NetworkServer.FindLocalObject(associatedShip).GetComponent <Ship>().Boosters++;
                }
            }
            else if (player.isBuyingBlasterUpgrade && hasLocalPlayerFleetVessel)
            {
                if (player.Purchase(PurchaseManager.UpgradeBlaster))
                {
                    NetworkServer.FindLocalObject(associatedShip).GetComponent <FleetVessel>().Blasters++;
                }
            }
            else if (player.isBuyingTractorBeamUpgrade && hasLocalPlayerFleetVessel)
            {
                if (player.Purchase(PurchaseManager.UpgradeTractorBeam))
                {
                    NetworkServer.FindLocalObject(associatedShip).GetComponent <FleetVessel>().TractorBeams++;
                }
            }
            else
            {
                if (NetworkServer.FindLocalObject(associatedShip).GetComponent <Ship>().IsDisabled)
                {
                    return(false);
                }

                //clicking on my ship space, select it
                selected = !selected;
                GameManager.singleton.selectedCell = selected ? this : null;

                if (selected)
                {
                    foreach (GameCell cell in NetworkServer.FindLocalObject(associatedShip).GetComponent <Ship>().nearbyCells)
                    {
                        if (cell.state == GameCellState.Empty || cell.state == GameCellState.ShipBuildArea ||
                            (cell.state == GameCellState.TempusSpace && player.reputation >= GameManager.singleton.tempusReputation))
                        {
                            cell.SetCell(player, GameCellState.MovementArea);
                        }
                    }
                }
                else
                {
                    foreach (GameCell cell in NetworkServer.FindLocalObject(associatedShip).GetComponent <Ship>().nearbyCells)
                    {
                        if (cell.state == GameCellState.MovementArea)
                        {
                            cell.Revert();
                        }
                    }
                }
            }
        }
        else if (state == GameCellState.ShipBuildArea && owner == player.netId)
        {
            if (player.isBuyingFleetVessel && player.Purchase(PurchaseManager.FleetVessel))
            {
                GameObject objShip = (GameObject)Instantiate(prefabFleetVessel, transform.position, Quaternion.identity);
                NetworkServer.Spawn(objShip);
                FleetVessel ship = objShip.GetComponent <FleetVessel>();
                ship.Color          = player.color;
                ship.ownerId        = player.netId;
                ship.associatedCell = this.netId;
                player.fleetVessels.Add(ship);

                SetCell(player, GameCellState.Empty, true, ship.netId);
                return(true);
            }
            else if (player.isBuyingColonyShip && player.Purchase(PurchaseManager.ColonyShip))
            {
                GameObject objShip = (GameObject)Instantiate(prefabColonyShip, transform.position, Quaternion.identity);
                NetworkServer.Spawn(objShip);
                ColonyShip ship = objShip.GetComponent <ColonyShip>();
                ship.Color          = player.color;
                ship.ownerId        = player.netId;
                ship.associatedCell = this.netId;

                SetCell(player, GameCellState.Empty, true, ship.netId);
                return(true);
            }
        }
        else if (state == GameCellState.MovementArea && owner == player.netId)
        {
            foreach (GameCell cell in NetworkServer.FindLocalObject(GameManager.singleton.selectedCell.associatedShip).GetComponent <Ship>().nearbyCells)
            {
                if (cell.state == GameCellState.MovementArea)
                {
                    cell.Revert();
                }
            }
            //move the ship
            SetCell(player, true, GameManager.singleton.selectedCell.associatedShip);
            GameManager.singleton.selectedCell.SetCell(false, NetworkInstanceId.Invalid);
            GameManager.singleton.selectedCell = null;
            NetworkServer.FindLocalObject(associatedShip).GetComponent <Ship>().MoveTo(this.netId);
            return(true);
        }
        else if (state == GameCellState.Depot && owner == player.netId)
        {
            if (player.isBuyingStarport && player.Purchase(PurchaseManager.Starport))
            {
                SetCell(player, GameCellState.Starport);
                NetworkServer.Destroy(NetworkServer.FindLocalObject(associatedStation));
                GameObject obj      = (GameObject)Instantiate(prefabStarport, transform.position, Quaternion.identity);
                Starport   starport = obj.GetComponent <Starport>();
                starport.color = player.color;
                starport.owner = player;
                NetworkServer.Spawn(obj);
                associatedStation = starport.netId;
                //player.depots.Add(depot);
                return(true);
            }
        }
        else if (state == GameCellState.DepotBuildArea && owner == player.netId)
        {
            if (player.isBuyingDepot && player.Purchase(PurchaseManager.Depot))
            {
                SetCell(player, GameCellState.Depot);
                GameObject objDepot = (GameObject)Instantiate(prefabDepot, transform.position, Quaternion.identity);
                Depot      depot    = objDepot.GetComponent <Depot>();
                depot.color = player.color;
                depot.owner = player;
                NetworkServer.Spawn(objDepot);
                associatedStation = depot.netId;
                //player.depots.Add(depot);
                return(true);
            }
        }

        return(false);
    }
Ejemplo n.º 5
0
 public EncounterStage NextApplicableRandomStage(Encounter encounter, FleetVessel ship)
 {
     return(NextRandomStage(possibles.FindAll((EncounterStage stage) => {
         return stage.MeetsRequirements(encounter, ship);
     })));
 }