Ejemplo n.º 1
0
        private static Tuple <float, float> EvaluateRotation(AbilityCounts counts, BearAbilityBuilder abilities)
        {
            float damage = 0f;
            float threat = 0f;

            damage += abilities.MeleeStats.DPSTotalAverage * RotationDuration;
            threat += abilities.MeleeStats.TPSTotalAverage * RotationDuration;

            damage += abilities.MaulStats.DamageAverage * RotationDuration / 3f;             //TODO: Limit this by rage; just assume you maul on cooldown for now
            threat += abilities.MaulStats.ThreatAverage * RotationDuration / 3f;

            damage += abilities.FaerieFireStats.DamageAverage * counts.FFF;
            threat += abilities.FaerieFireStats.ThreatAverage * counts.FFF;

            damage += abilities.LacerateStats.DamageAverage * counts.Lacerate;
            threat += abilities.LacerateStats.ThreatAverage * counts.Lacerate;
            damage += abilities.LacerateStats.DamageTick1Raw * counts.LacerateTick;
            threat += abilities.LacerateStats.ThreatTick1Raw * counts.LacerateTick;

            damage += abilities.MangleStats.DamageAverage * counts.Mangle;
            threat += abilities.MangleStats.ThreatAverage * counts.Mangle;

            damage += abilities.PulverizeStats.Damage3Average * counts.Pulverize;
            threat += abilities.PulverizeStats.Threat3Average * counts.FFF;

            damage += abilities.SwipeStats.DamageAverage * counts.Swipe;
            threat += abilities.SwipeStats.ThreatAverage * counts.Swipe;

            damage += abilities.ThrashStats.DamageAverage * counts.Thrash;
            threat += abilities.ThrashStats.ThreatAverage * counts.Thrash;

            return(Tuple.Create(damage / RotationDuration, threat / RotationDuration));
        }
Ejemplo n.º 2
0
 public void SetAbilityCounts(AbilityCounts _info)
 {
     _abilityCounts = _info;
 }
Ejemplo n.º 3
0
		private static Tuple<float,float> EvaluateRotation(AbilityCounts counts, BearAbilityBuilder abilities)
		{
			float damage = 0f;
			float threat = 0f;

			damage += abilities.MeleeStats.DPSTotalAverage * RotationDuration;
			threat += abilities.MeleeStats.TPSTotalAverage * RotationDuration;
					  
			damage += abilities.MaulStats.DamageAverage * RotationDuration / 3f; //TODO: Limit this by rage; just assume you maul on cooldown for now
			threat += abilities.MaulStats.ThreatAverage * RotationDuration / 3f;
					  
			damage += abilities.FaerieFireStats.DamageAverage * counts.FFF;
			threat += abilities.FaerieFireStats.ThreatAverage * counts.FFF;
					  
			damage += abilities.LacerateStats.DamageAverage * counts.Lacerate;
			threat += abilities.LacerateStats.ThreatAverage * counts.Lacerate;
			damage += abilities.LacerateStats.DamageTick1Raw * counts.LacerateTick;
			threat += abilities.LacerateStats.ThreatTick1Raw * counts.LacerateTick;
					  
			damage += abilities.MangleStats.DamageAverage * counts.Mangle;
			threat += abilities.MangleStats.ThreatAverage * counts.Mangle;
					  
			damage += abilities.PulverizeStats.Damage3Average * counts.Pulverize;
			threat += abilities.PulverizeStats.Threat3Average * counts.FFF;
					  
			damage += abilities.SwipeStats.DamageAverage * counts.Swipe;
			threat += abilities.SwipeStats.ThreatAverage * counts.Swipe;
					  
			damage += abilities.ThrashStats.DamageAverage * counts.Thrash;
			threat += abilities.ThrashStats.ThreatAverage * counts.Thrash;

			return Tuple.Create(damage / RotationDuration, threat / RotationDuration);
		}
Ejemplo n.º 4
0
    /* Save the current level */
    public void SaveLevel(byte[] levelScreenshot = null, int maxGoonCount = 75, int hazardCount = 0, AbilityCounts abilityCounts = null)
    {
#if UNITY_WEBGL
        Debug.LogError("REQUESTED TO SAVE LEVEL IN WEBGL - THIS IS NOT SUPPORTED!");
        return;
#endif
        Debug.Log("Saving level...");
        if (!LevelManager.Instance.CurrentMeta.isLoaded)
        {
            Debug.LogError("Cannot save unloaded level!");
            return;
        }
        if (abilityCounts == null)
        {
            abilityCounts = new AbilityCounts(5, 5, 5, 5);
        }

        //Work out what tiles to write
        List <Tile> tiles = new List <Tile>();
        for (int i = 0; i < LevelManager.Instance.Grid.AllTiles.Count; i++)
        {
            if (LevelManager.Instance.Grid.AllTiles[i].IsOccupied)
            {
                tiles.Add(LevelManager.Instance.Grid.AllTiles[i]);
            }
        }

        //Write data
        BinaryWriter writer = new BinaryWriter(File.OpenWrite(Application.streamingAssetsPath + "/LEVELS/" + LevelManager.Instance.CurrentMeta.levelName + ".dwb"));
        writer.BaseStream.SetLength(0);

        /* Header Info */
        writer.Write(LevelFileVersion.VERSION_NUM);
        writer.Write(tiles.Count);
        writer.Write((Int16)LevelManager.Instance.Grid.GridTileDims.x);
        writer.Write((Int16)LevelManager.Instance.Grid.GridTileDims.y);

        /* Tile Occupier Info */
        int occupiedCount = 0;
        int occCountPos   = (int)writer.BaseStream.Position;
        writer.Write(0);
        for (int i = 0; i < tiles.Count; i++)
        {
            if (!tiles[i].IsOccupied)
            {
                continue;
            }
            writer.Write(tiles[i].Index);
            writer.Write((Int16)tiles[i].Occupier.Type);
            occupiedCount++;
        }
        int occEndPos = (int)writer.BaseStream.Position;
        writer.BaseStream.Position = occCountPos;
        writer.Write(occupiedCount);
        writer.BaseStream.Position = occEndPos;

        /* Tile Prop Info */
        int propCount   = 0;
        int prpCountPos = (int)writer.BaseStream.Position;
        writer.Write(0);
        for (int i = 0; i < tiles.Count; i++)
        {
            if (!tiles[i].HasProp && !tiles[i].HasPropOrigin)
            {
                continue;
            }
            writer.Write((Int16)tiles[i].Prop.Type);
            writer.Write((Int16)tiles[i].Prop.Rotation);
            writer.Write(tiles[i].Prop.Tiles.Count);
            for (int x = 0; x < tiles[i].Prop.Tiles.Count; x++)
            {
                writer.Write(tiles[i].Prop.Tiles[x].Index);
            }
            propCount++;
        }
        int prpEndPos = (int)writer.BaseStream.Position;
        writer.BaseStream.Position = prpCountPos;
        writer.Write(propCount);
        writer.BaseStream.Position = prpEndPos;

        /* Misc Metadata */
        writer.Write(maxGoonCount);
        writer.Write(hazardCount);
        writer.Write(abilityCounts.Rally);
        writer.Write(abilityCounts.Medical);
        writer.Write(abilityCounts.FirePhone);
        writer.Write(abilityCounts.Marshal);

        writer.Close();

        //Save screenshot if generated one
        if (levelScreenshot != null)
        {
            File.WriteAllBytes(Application.streamingAssetsPath + "/LEVELS/" + LevelManager.Instance.CurrentMeta.levelName + ".png", levelScreenshot);
        }

        Debug.Log("Saved level " + LevelManager.Instance.CurrentMeta.levelName + " with " + tiles.Count + " tiles and " + hazardCount + " hazards, which is GUID " + LevelManager.Instance.CurrentMeta.levelGUID + ".");
    }