/// <summary> /// Computes the base value for placing a tile, that is, before multipliers or modifications. /// </summary> /// <param name="tileOrWallType">The tile type or wall.</param> /// <param name="miningTargetType">Type of tile data, either tile or wall.</param> /// <returns>Base value in generic units.</returns> public decimal GetBasePlacingValue(ushort tileOrWallType, TileSubTarget miningTargetType, string group) { var key = new TileKey(tileOrWallType, miningTargetType); //check group overrides first if (!string.IsNullOrWhiteSpace(group)) { if (GroupPlacingOverrides.TryGetValue(group, out var groupPlacingOverride)) { if (groupPlacingOverride.TryGetValue(key, out var groupValueOverride)) { return(groupValueOverride.Value); } } } if (PlacingOverrides.TryGetValue(key, out var valueOverride)) { return(valueOverride.Value); } else { return(DefaultPlacingValue); } }
public TileChangedEventArgs(TSPlayer player, int tileX, int tileY, ushort type, byte wall, TileSubTarget tileSubTarget) { Player = player; TileX = tileX; TileY = tileY; Type = type; Wall = wall; TileSubTarget = tileSubTarget; }
public MiningReward(TSPlayer player, ushort tileOrWallId, TileSubTarget tileSubTarget, RewardReason rewardReason = RewardReason.Mining) { Debug.Assert(rewardReason == RewardReason.Mining || rewardReason == RewardReason.Placing, "RewardReason must be either Mining, or Placing."); PlayerName = player.Name; PlayerGroup = player.Group.Name; RewardReason = rewardReason; TileSubTarget = tileSubTarget; TileOrWallId = tileOrWallId; //tile.wallFrameNumber(); }
public TileKey(ushort tileOrWallId, TileSubTarget tileSubTarget) { switch (tileSubTarget) { case TileSubTarget.Tile: Type = tileOrWallId; break; case TileSubTarget.Wall: Wall = (byte)tileOrWallId; break; } }