Skip to content

Commit

Permalink
phrase and brick fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
bierdosenhalter committed Feb 3, 2025
1 parent 00751aa commit 397da70
Show file tree
Hide file tree
Showing 10 changed files with 1,448 additions and 176 deletions.
723 changes: 723 additions & 0 deletions Client/Brick/BrickFamily.cs

Large diffs are not rendered by default.

126 changes: 126 additions & 0 deletions Client/Brick/BrickFamilyHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
///////////////////////////////////////////////////////////////////
// This file contains modified code from 'Ryzom - MMORPG Framework'
// http://dev.ryzom.com/projects/ryzom/
// which is released under GNU Affero General Public License.
// http://www.gnu.org/licenses/
// Copyright 2010 Winch Gate Property Limited
///////////////////////////////////////////////////////////////////

namespace Client.Brick;

public static class BrickFamilyHelper
{
public static BrickFamily ToSBrickFamily(string str)
{
// Implement string to TBrickFamily conversion logic here
return BrickFamily.Unknown; // default return value
}

public static string ToString(BrickFamily family)
{
// Implement TBrickFamily to string conversion logic here
return family.ToString();
}

public static bool IsRootFamily(BrickFamily family)
{
return (family >= BrickFamily.BeginCombatRoot && family <= BrickFamily.EndCombatRoot) ||
(family >= BrickFamily.BeginMagicRoot && family <= BrickFamily.EndMagicRoot) ||
(family >= BrickFamily.BeginFaberRoot && family <= BrickFamily.EndFaberRoot) ||
(family >= BrickFamily.BeginHarvestRoot && family <= BrickFamily.EndHarvestRoot) ||
(family >= BrickFamily.BeginForageProspectionRoot && family <= BrickFamily.EndForageProspectionRoot) ||
(family >= BrickFamily.BeginForageExtractionRoot && family <= BrickFamily.EndForageExtractionRoot) ||
(family >= BrickFamily.BeginPowerRoot && family <= BrickFamily.EndPowerRoot) ||
(family >= BrickFamily.BeginProcEnchantement && family <= BrickFamily.EndProcEnchantement);
}

public static bool IsMandatoryFamily(BrickFamily family)
{
return (family >= BrickFamily.BeginCombatMandatory && family <= BrickFamily.EndCombatMandatory) ||
(family >= BrickFamily.BeginMagicMandatory && family <= BrickFamily.EndMagicMandatory) ||
(family >= BrickFamily.BeginFaberMandatory && family <= BrickFamily.EndFaberMandatory) ||
(family >= BrickFamily.BeginHarvestMandatory && family <= BrickFamily.EndHarvestMandatory) ||
(family >= BrickFamily.BeginForageProspectionMandatory && family <= BrickFamily.EndForageProspectionMandatory) ||
(family >= BrickFamily.BeginForageExtractionMandatory && family <= BrickFamily.EndForageExtractionMandatory) ||
(family >= BrickFamily.BeginPowerMandatory && family <= BrickFamily.EndPowerMandatory);
}

public static bool IsOptionFamily(BrickFamily family)
{
return (family >= BrickFamily.BeginCombatOption && family <= BrickFamily.EndCombatOption) ||
(family >= BrickFamily.BeginMagicOption && family <= BrickFamily.EndMagicOption) ||
(family >= BrickFamily.BeginFaberOption && family <= BrickFamily.EndFaberOption) ||
(family >= BrickFamily.BeginHarvestOption && family <= BrickFamily.EndHarvestOption) ||
(family >= BrickFamily.BeginForageProspectionOption && family <= BrickFamily.EndForageProspectionOption) ||
(family >= BrickFamily.BeginForageExtractionOption && family <= BrickFamily.EndForageExtractionOption);
}

public static bool IsCreditFamily(BrickFamily family)
{
return (family >= BrickFamily.BeginCombatCredit && family <= BrickFamily.EndCombatCredit) ||
(family >= BrickFamily.BeginMagicCredit && family <= BrickFamily.EndMagicCredit) ||
(family >= BrickFamily.BeginFaberCredit && family <= BrickFamily.EndFaberCredit) ||
(family >= BrickFamily.BeginHarvestCredit && family <= BrickFamily.EndHarvestCredit) ||
(family >= BrickFamily.BeginForageProspectionCredit && family <= BrickFamily.EndForageProspectionCredit) ||
(family >= BrickFamily.BeginForageExtractionCredit && family <= BrickFamily.EndForageExtractionCredit) ||
(family >= BrickFamily.BeginMagicPowerCredit && family <= BrickFamily.EndMagicPowerCredit);
}

public static bool IsParameterFamily(BrickFamily family)
{
return (family >= BrickFamily.BeginCombatParameter && family <= BrickFamily.EndCombatParameter) ||
(family >= BrickFamily.BeginMagicParameter && family <= BrickFamily.EndMagicParameter) ||
(family >= BrickFamily.BeginFaberParameter && family <= BrickFamily.EndFaberParameter) ||
(family >= BrickFamily.BeginHarvestParameter && family <= BrickFamily.EndHarvestParameter) ||
(family >= BrickFamily.BeginForageProspectionParameter && family <= BrickFamily.EndForageProspectionParameter) ||
(family >= BrickFamily.BeginForageExtractionParameter && family <= BrickFamily.EndForageExtractionParameter) ||
(family >= BrickFamily.BeginPowerParameter && family <= BrickFamily.EndPowerParameter);
}

public static bool IsCharacBuyFamily(BrickFamily family)
{
return (family >= BrickFamily.BeginCharacBuy && family <= BrickFamily.EndCharacBuy);
}

public static BrickType GetBrickType(BrickFamily family)
{
return family switch
{
>= BrickFamily.BeginCombat and <= BrickFamily.EndCombat => BrickType.COMBAT,
>= BrickFamily.BeginMagic and <= BrickFamily.EndMagic => BrickType.MAGIC,
>= BrickFamily.BeginFaber and <= BrickFamily.EndFaber => BrickType.FABER,
>= BrickFamily.BeginHarvest and <= BrickFamily.EndHarvest => BrickType.HARVEST,
>= BrickFamily.BeginForageProspection and <= BrickFamily.EndForageProspection => BrickType.FORAGE_PROSPECTION,
>= BrickFamily.BeginForageExtraction and <= BrickFamily.EndForageExtraction => BrickType.FORAGE_EXTRACTION,
>= BrickFamily.BeginSpecialPowers and <= BrickFamily.EndSpecialPowers => BrickType.SPECIAL_POWER,
>= BrickFamily.BeginProcEnchantement and <= BrickFamily.EndProcEnchantement => BrickType.PROC_ENCHANTEMENT,
>= BrickFamily.BeginTraining and <= BrickFamily.EndTraining => BrickType.TRAINING,
>= BrickFamily.BeginTimedActions and <= BrickFamily.EndTimedActions => BrickType.TIMED_ACTION,
>= BrickFamily.BeginBonus and <= BrickFamily.EndBonus => BrickType.BONUS,
_ => BrickType.UNKNOWN
};
}

public enum BrickType
{
MAGIC = 0,
COMBAT,
FABER,
FORAGE_PROSPECTION,
FORAGE_EXTRACTION,
HARVEST,
QUARTER,
TRACKING,
SHOPKEEPER,
TRAINING,
MISCELLANEOUS,
COMMERCE,
SPECIAL_POWER,
PROC_ENCHANTEMENT,
TIMED_ACTION,
BRICK_TYPE_COUNT,
BONUS,
UNKNOWN // Warning: Shouldn't exceed 32
};

}
123 changes: 118 additions & 5 deletions Client/Brick/BrickManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,138 @@
// Copyright 2010 Winch Gate Property Limited
///////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using Client.Sheet;

namespace Client.Brick
{
public class BrickManager
/// <summary>
/// Manager of Sabrina Bricks.
/// </summary>
/// <author>Lionel Berenguier</author>
/// <author>Nevrax France</author>
/// <date>2003</date>
public class BrickManager(RyzomClient ryzomClient)
{
private readonly RyzomClient _ryzomClient;
private readonly RyzomClient _ryzomClient = ryzomClient;
private BrickSheet[] _brickVector;
private readonly List<List<SheetId>> _sheetsByFamilies = [];
private readonly List<int> _nbBricksPerFamily = [];

public BrickManager(RyzomClient ryzomClient)
public void Init()
{
_ryzomClient = ryzomClient;
// Read the Bricks from the SheetMngr.
var brickSheets = _ryzomClient.GetSheetManager().GetSheets();

// Clear existing bricks and preallocate space for performance
_brickVector = new BrickSheet[16 * 1024];

foreach (var brickSheet in brickSheets)
{
if (brickSheet.Value.Sheet is not BrickSheet)
continue;

var shid = brickSheet.Key.GetShortId();

// Resize the array if needed
if (shid >= _brickVector.Length)
{
Array.Resize(ref _brickVector, (int)shid + 1); // Resize the array
}

_brickVector[(int)shid] = (BrickSheet)brickSheet.Value.Sheet; // Add the brick sheet to the vector
}

// Initialize _sheetsByFamilies and _nbBricksPerFamily based on _brickVector
foreach (var brickSheet in _brickVector)
{
if ((int)brickSheet.BrickFamily >= _sheetsByFamilies.Count)
{
// Expand if necessary
for (var i = _sheetsByFamilies.Count; i <= (int)brickSheet.BrickFamily; i++)
{
_sheetsByFamilies.Add([]);
_nbBricksPerFamily.Add(0);
}
}

var indexInFamily = brickSheet.IndexInFamily - 1; // Assuming index in family starts at 1

if (indexInFamily >= _nbBricksPerFamily[(int)brickSheet.BrickFamily])
{
for (var j = _nbBricksPerFamily[(int)brickSheet.BrickFamily]; j <= indexInFamily; j++)
{
_sheetsByFamilies[(int)brickSheet.BrickFamily].Add(new SheetId(_ryzomClient.GetSheetIdFactory()));
}
_nbBricksPerFamily[(int)brickSheet.BrickFamily] = indexInFamily + 1; // Set new count
}

_sheetsByFamilies[(int)brickSheet.BrickFamily][indexInFamily] = brickSheet.Id;
}
}

/// <summary>
/// Initialize by loading bricks done at init time
/// </summary>
public void InitInGame()
{

// Load known bricks from the server or database
// This would be the equivalent of fetching known bricks
// and setting up any necessary observers.
}

/// <summary>
/// Init the rest done at initInGame time
/// </summary>
public void InitTitles()
{
// Initialization logic for titles
}

/// <summary>
/// Get a brick from its sheetId
/// </summary>
/// <param name="id">The id of the sheet</param>
public BrickSheet GetBrick(SheetId id)
{
var shid = id.GetShortId();
return shid < _brickVector.Length ? _brickVector[(int)shid] : null;
}

public SheetId GetBrickSheet(uint family, uint index)
{
if (family >= _sheetsByFamilies.Count || index >= _nbBricksPerFamily[(int)family])
return new SheetId(_ryzomClient.GetSheetIdFactory(), 0);

return _sheetsByFamilies[(int)family][(int)index];
}

public void FilterKnownBricks(List<SheetId> bricks)
{
var knownBricks = new List<SheetId>();
foreach (var brick in bricks)
{
if (IsBrickKnown(brick))
{
knownBricks.Add(brick);
}
}
bricks.Clear();
bricks.AddRange(knownBricks);
}

private bool IsBrickKnown(SheetId id)
{
var brick = GetBrick(id);
return brick != null && IsBrickKnown(brick);
}

private bool IsBrickKnown(BrickSheet brick)
{
// Implement logic to determine if a brick is known.
// This could involve checking against a known brick database or list.
return false;
}
}
}
Loading

0 comments on commit 397da70

Please sign in to comment.