This page looks best with JavaScript enabled

2023.0707

 ·  ☕ 2 min read

    Achievement

    • 是時候該思考一下人生的未來了QQ
    • Start new project for able to resolve leetcode question in the local environment.
    • Let the caret position able to drag to select/create range of lyric text/ruby tags.
    • Making ruleset’s own primary key type to resolve duplicated create new key number logic.
    • Closes issue \No.1000 Created/. karaoke

      Because no. 2000 issue/pr has been created.

    • Change the primary key type for the object in this ruleset.

    Beatmap

    • [Close duplicated] Write karaoke’s own reference resolver. karaoke

      because karaoke beatmap processor will fill all the reference value, So there’s no need to implement it in the json beatmap.

    • [Close duplicated] Link between lyric and note. karaoke

      Already has better way to do that.

    • [Close duplicated] Implement note checker. karaoke

      Implemented already.

    • Use string with hex format to replace the number format as primary key for the object in the karoake beatmap. karaoke

      The main benefit is that there’s no need to write lots of logic to create the new primary key.

      • Change the singer primary id type. karaoke
        • Singer extension should be able to accept the int number directly. karaoke
        • Mark singer id as serializable. karaoke
      • Change the lyric primary id type. karaoke
        • Should change the id after DeepClone() the lyric. karaoke
      • Change the stage element primary id type. karaoke
      • Change the timing point primary id type. karaoke
      • Fix ElementIdConverter does not accept the nullable property. karaoke
      • Some property like element id need extra convertor in the DeepClone() method. karaoke
      • Able to write the value into the property with protected/private setter. karaoke
      • Add new method for able to get all matched hit-object ids in the element category. karaoke

    Code quality

    • Regular clean up code. karaoke
    • [Close duplicated] Remove all AllowNull attribute eventually. karaoke
    • Remove nullable disable annotation in the remaining class. karaoke
    • Move hit-object related utils into the Objects namespace. karaoke
    • Use IEnumerable instead of Array to make the method more easy to override. karaoke

    Editor

    • Let caret position able to drag the range of the text.
      • Think about how pass the start and end index into the IIndexCaretPositionAlgorithm. karaoke
      • Implement create ruby caret position algorithm for able to create the ruby by drag the range of the lyric text. karaoke
      • Add end index to the input caret position for able to select the range of the lyric text. karaoke
      • Fix dragging the caret might have performance issue. karaoke
      • Add the release caret position to the caret state. karaoke
      • Instead of add the end index to the caret position, might be better to have the release position in the caret state. karaoke

        It means that we need to revert the change in the #2025, part of #2023 and #2022.

      • Refactor drawable caret layer for able to receive the release caret event. karaoke
      • Refactor the drawable input caret. karaoke
      • [Close duplicated] Implement select range of text in lyric editor. karaoke
      • [Close duplicated] Able right-click to create new ruby/romaji object. karaoke

        Have better UX instead.

    • Adjus the change handler. ILyricTextChangeHandler should be able to delete the range of the text. karaoke
    • [Close duplicated] Implement change handler method to offset the list of the lyrics. karaoke

    Result

    • Upgrade the package to the latest and adjust the result screen to aviod compile error. karaoke

    Skinning

    • [Close duplicated] Apply new skin structure(old). karaoke

      Close this issue because already come out better structure.