Example #1
0
    void SpawnPortal(SignalData portalSpawnData)
    {
        Vector3         position    = portalSpawnData.get <Vector3>("SpawnPosition");
        Vector3         direction   = portalSpawnData.get <Vector3>("SpawnDirection");
        PortalColorData portalColor = portalSpawnData.get <PortalColorData>("PortalColors");
        int             arenaId     = portalSpawnData.get <int>("ArenaId");

        Debug.Log(arenaId);
        var        spawnPosition       = new Vector3(position.x, 1.4f, position.z) + direction * 0.01f;
        Quaternion portalRotation      = Quaternion.LookRotation(direction);
        GameObject portalObject        = Instantiate(portalPrefab, spawnPosition, portalRotation);
        GameObject correspondingPortal = null;

        if (PortalMap.ContainsKey(portalColor))
        {
            if (PortalMap[portalColor].ContainsKey(arenaId))
            {
                Destroy(PortalMap[portalColor][arenaId]);
                PortalMap[portalColor].Remove(arenaId);
            }
            correspondingPortal = getCorrespondingPortal(arenaId, portalColor);
        }
        else
        {
            PortalMap.Add(portalColor, new Dictionary <int, GameObject>());
        }
        if (correspondingPortal != null)
        {
            correspondingPortal.GetComponent <Portal>().changeCorrespondingPortal(portalObject);
        }
        portalObject.GetComponent <Portal>().initialize(portalColor, correspondingPortal, arenaId);
        PortalMap[portalColor].Add(arenaId, portalObject);
    }
    IEnumerator RespawnConsumedFluid(int arenaId, Vector3 location, PortalColorData currentFluidColors)
    {
        yield return(new WaitForSeconds(RespawnInterval));

        var             currentMap       = ArenaPointColorMap[arenaId];
        var             otherMap         = ArenaPointColorMap[1 - arenaId];
        var             currentMapColors = currentMap.Values.ToList();
        var             otherMapColors   = otherMap.Values.ToList();
        float           probability      = Random.value;
        PortalColorData newColor;

        if (probability > 0.6)
        {
            newColor = GetCurrentSubtractedColors(currentMapColors, currentFluidColors);
        }
        else
        {
            Debug.Log("Other subtraction");
            var subtractedColors = otherMapColors.Except(currentMapColors).ToList();
            if (subtractedColors.Count > 0)
            {
                newColor = subtractedColors[Random.Range(0, subtractedColors.Count - 1)];
            }
            else
            {
                newColor = GetCurrentSubtractedColors(currentMapColors, currentFluidColors);
            }
        }
        SpawnAtPosition(location, newColor, arenaId);
    }
Example #3
0
    GameObject getCorrespondingPortal(int arenaId, PortalColorData portalColor)
    {
        int otherPortalId = 1 - arenaId;

        if (PortalMap.ContainsKey(portalColor) && PortalMap[portalColor].ContainsKey(otherPortalId))
        {
            return(PortalMap[portalColor][otherPortalId]);
        }
        return(null);
    }
Example #4
0
 public void initialize(PortalColorData portalColors, GameObject correspondingPortal, int ArenaId)
 {
     IngestionVFX.SetGradient("TrailColor", portalColors.TrailGradient);
     PortalVFX.SetGradient("PortalColor", portalColors.PrimaryGradient);
     changeCorrespondingPortal(correspondingPortal);
     PortaLight.color = portalColors.PrimaryColor;
     PortalColors     = portalColors;
     this.ArenaId     = ArenaId;
     InitialzeTimoutUI();
 }
    void SpawnAtPosition(Vector3 position, PortalColorData portalColors, int arenaId)
    {
        GameObject portalFluidObject = Instantiate(FluidPrefab, position, Quaternion.identity);

        portalFluidObject.GetComponent <PortalFluid>().ResetProperties(portalColors, position, arenaId);
        if (!ArenaPointColorMap.ContainsKey(arenaId))
        {
            ArenaPointColorMap.Add(arenaId, new Dictionary <Vector3, PortalColorData>());
        }
        ArenaPointColorMap[arenaId].Add(position, portalColors);
    }
Example #6
0
 public void ResetProperties(PortalColorData portalColors, Vector3 location, int Arenaid)
 {
     // set rendererr and particle colors
     SphereRenderer.material.EnableKeyword("_EMISSION");
     SphereRenderer.material.SetColor("_EmissionColor", portalColors.PrimaryColor);
     SphereRenderer.material.SetColor("_BaseColor", portalColors.PrimaryColor);
     animator             = GetComponent <Animator>();
     PortalColors         = portalColors;
     fadeOutAnimationTime = 0.1f;
     this.Location        = location;
     this.Arenaid         = Arenaid;
 }
Example #7
0
    void onPortalTimeOut(SignalData data)
    {
        int             arenaId     = data.get <int>("ArenaId");
        PortalColorData portalColor = data.get <PortalColorData>("PortalColors");
        GameObject      otherPortal = getCorrespondingPortal(arenaId, portalColor);

        if (otherPortal != null)
        {
            otherPortal.GetComponent <Portal>().changeCorrespondingPortal(null);
        }
        PortalMap[portalColor].Remove(arenaId);
        Debug.Log("Portal map");
    }
    // Pick new color except the ones already present in the arena
    PortalColorData GetCurrentSubtractedColors(List <PortalColorData> currentMapColors, PortalColorData currentFluidColors)
    {
        var subtractedColors = Constants.portalColors.Except(currentMapColors).ToList();

        subtractedColors.Remove(currentFluidColors);
        if (subtractedColors.Count > 0)
        {
            return(subtractedColors[Random.Range(0, subtractedColors.Count - 1)]);
        }
        else
        {
            return(Constants.portalColors[Random.Range(0, Constants.portalColors.Count - 1)]);
        }
    }
Example #9
0
 public void ChangeCurrentPortalColor(PortalColorData portalColors)
 {
     CurrentPortalColors = portalColors;
     AimLine.startColor  = AimLine.endColor = portalColors.PrimaryColor;
     //UpdatePortalUIAction(portalColors.PrimaryColor);
 }