Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Trustworthy Mod #175

Merged
merged 2 commits into from
Nov 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public HishigataBeatmapConverter(IBeatmap beatmap, Ruleset ruleset)
// https://github.com/ppy/osu/tree/master/osu.Game/Rulesets/Objects/Types
public override bool CanConvert() => Beatmap.HitObjects.All(x => x is IHasPosition);

// trustworthy mod
public bool FeignsAllowed { get; set; } = true;

protected override IEnumerable<HishigataHitObject> ConvertHitObject(HitObject original, IBeatmap beatmap, CancellationToken cancellationToken)
{
var difficulty = beatmap.BeatmapInfo.Difficulty;
Expand All @@ -34,7 +37,11 @@ protected override IEnumerable<HishigataHitObject> ConvertHitObject(HitObject or
float angle = getHitObjectAngle(position) / 90;
int lane = (int)Math.Round(angle);

bool isFeign = original.Samples.Any(x => x.Name == HitSampleInfo.HIT_WHISTLE);
bool isFeign = false;
if (FeignsAllowed)
{
isFeign = original.Samples.Any(x => x.Name == HitSampleInfo.HIT_WHISTLE);
}

if (lane >= 4) lane -= 4;
switch (original)
Expand Down
6 changes: 6 additions & 0 deletions osu.Game.Rulesets.Hishigata/HishigataRuleset.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ public override IEnumerable<Mod> GetModsFor(ModType type)
new HishigataModAutoplay(),
};

case ModType.Conversion:
return new Mod[]
{
new HishigataModTrustworthy(),
};

case ModType.Fun:
return new Mod[]
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using osu.Framework.Localisation;

namespace osu.Game.Rulesets.Hishigata.Localisation.Mods
{
public static class HishigataModTrustworthyStrings
{
private const string prefix = @"osu.Game.Rulesets.Hishigata.Resources.Localisation.Mods.HishigataModTrustworthyStrings";

/// <summary>
/// "Notes don't switch sides."
/// </summary>
public static LocalisableString ModDescription => new TranslatableString(getKey(@"mod_description"), @"Notes don't switch sides.");

private static string getKey(string key) => $"{prefix}:{key}";
}
}
25 changes: 25 additions & 0 deletions osu.Game.Rulesets.Hishigata/Mods/HishigataModTrustworthy.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using osu.Framework.Graphics.Sprites;
using osu.Framework.Localisation;
using osu.Game.Beatmaps;
using osu.Game.Rulesets.Hishigata.Localisation.Mods;
using osu.Game.Rulesets.Hishigata.Beatmaps;
using osu.Game.Rulesets.Mods;

namespace osu.Game.Rulesets.Hishigata.Mods
{
public class HishigataModTrustworthy : Mod, IApplicableToBeatmapConverter
{
public override string Name => "Trustworthy";
public override string Acronym => "TW";
public override LocalisableString Description => HishigataModTrustworthyStrings.ModDescription;
public override double ScoreMultiplier => 0.8;
public override ModType Type => ModType.Conversion;
public override IconUsage? Icon => FontAwesome.Solid.Check;

public void ApplyToBeatmapConverter(IBeatmapConverter beatmapConverter)
{
var converter = (HishigataBeatmapConverter)beatmapConverter;
converter.FeignsAllowed = false;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="mod_description" xml:space="preserve">
<value>Notes don't switch sides.</value>
</data>
</root>