Compare commits

...

No commits in common. 'beta' and 'master' have entirely different histories.
beta ... master

  1. 18
      .classpath
  2. 0
      .externalToolBuilders/Makejar.launch
  3. 9
      .gitignore
  4. 0
      .project
  5. 4
      .settings/org.eclipse.core.resources.prefs
  6. 111
      .settings/org.eclipse.jdt.core.prefs
  7. BIN
      Boss Sprites/Cirno.png
  8. BIN
      Boss Sprites/DevilMachine.png
  9. BIN
      Boss Sprites/ENEMYDiamondMasahirorin.png
  10. BIN
      Boss Sprites/Masked_Maid_Girl.png
  11. BIN
      Boss Sprites/Starman_Junior.png
  12. BIN
      Boss Sprites/TME_-100.png
  13. BIN
      Boss Sprites/TME_-10000.png
  14. BIN
      Boss Sprites/TME_-101.png
  15. BIN
      Boss Sprites/TME_-84.png
  16. BIN
      Boss Sprites/TME_103.png
  17. BIN
      Boss Sprites/TME_104.png
  18. BIN
      Boss Sprites/TME_108.png
  19. BIN
      Boss Sprites/TME_120.png
  20. BIN
      Boss Sprites/TME_122.png
  21. BIN
      Boss Sprites/TME_136.png
  22. BIN
      Boss Sprites/TME_137.png
  23. BIN
      Boss Sprites/TME_138.png
  24. BIN
      Boss Sprites/TME_15.png
  25. BIN
      Boss Sprites/TME_200.png
  26. BIN
      Boss Sprites/TME_202.png
  27. BIN
      Boss Sprites/TME_203.png
  28. BIN
      Boss Sprites/TME_23.png
  29. BIN
      Boss Sprites/TME_24.png
  30. BIN
      Boss Sprites/TME_33.png
  31. BIN
      Boss Sprites/TME_38.png
  32. BIN
      Boss Sprites/TME_43.png
  33. BIN
      Boss Sprites/TME_44.png
  34. BIN
      Boss Sprites/TME_48.png
  35. BIN
      Boss Sprites/TME_53.png
  36. BIN
      Boss Sprites/TME_55.png
  37. BIN
      Boss Sprites/TME_63.png
  38. BIN
      Boss Sprites/TME_68.png
  39. BIN
      Boss Sprites/TME_73.png
  40. BIN
      Boss Sprites/TME_74.png
  41. BIN
      Boss Sprites/TME_83.png
  42. BIN
      Boss Sprites/TME_900000.png
  43. BIN
      Boss Sprites/TME_999997.png
  44. BIN
      Boss Sprites/TME_999999.png
  45. BIN
      Boss Sprites/Youmu_Never_Loses.png
  46. 0
      README.md
  47. BIN
      Unifont.ttf
  48. 0
      lib/commons-io-2.5.jar
  49. 0
      lib/jna-4.5.0.jar
  50. 0
      lib/jna-platform-4.5.0.jar
  51. 0
      lib/lwjgl-glfw-natives-linux.jar
  52. 0
      lib/lwjgl-glfw-natives-macos.jar
  53. 0
      lib/lwjgl-glfw-natives-windows.jar
  54. 0
      lib/lwjgl-glfw.jar
  55. 0
      lib/lwjgl-natives-linux.jar
  56. 0
      lib/lwjgl-natives-macos.jar
  57. 0
      lib/lwjgl-natives-windows.jar
  58. 0
      lib/lwjgl.jar
  59. 0
      lib/twitch-api-wrapper-0.3-jar-with-dependencies.jar
  60. 0
      log_2_24_1.txt/log_2_24_1.txt
  61. 0
      projectBuilder.xml
  62. 0
      sigIRCv2.bat
  63. 76
      sigIRCv2.conf.backup
  64. BIN
      sigIRCv2.jar
  65. 19
      sigIRCv2/.classpath
  66. 11
      sigIRCv2/.settings/org.eclipse.jdt.core.prefs
  67. 65
      sigIRCv2/log
  68. 457
      sigIRCv2/src/sig/modules/RabiRace/Profile.java
  69. 226
      sigIRCv2/src/sig/modules/RabiRace/SessionCreateWindow.java
  70. 459
      sigIRCv2/src/sig/modules/RabiRaceModule.java
  71. 178
      sigIRCv2/src/sig/modules/RabiRibi/MemoryOffset.java
  72. 0
      src/org/json/CDL.java
  73. 0
      src/org/json/Cookie.java
  74. 0
      src/org/json/CookieList.java
  75. 0
      src/org/json/HTTP.java
  76. 0
      src/org/json/HTTPTokener.java
  77. 0
      src/org/json/JSONArray.java
  78. 0
      src/org/json/JSONException.java
  79. 0
      src/org/json/JSONML.java
  80. 0
      src/org/json/JSONObject.java
  81. 0
      src/org/json/JSONPointer.java
  82. 0
      src/org/json/JSONPointerException.java
  83. 0
      src/org/json/JSONString.java
  84. 0
      src/org/json/JSONStringer.java
  85. 0
      src/org/json/JSONTokener.java
  86. 0
      src/org/json/JSONWriter.java
  87. 0
      src/org/json/Property.java
  88. 0
      src/org/json/XML.java
  89. 0
      src/org/json/XMLTokener.java
  90. 0
      src/sig/BackgroundColorButton.java
  91. 0
      src/sig/ColorPanel.java
  92. 0
      src/sig/ConfigFile.java
  93. 0
      src/sig/CustomSound.java
  94. 0
      src/sig/Emoticon.java
  95. 8
      src/sig/FileManager.java
  96. 26
      src/sig/Module.java
  97. 10
      src/sig/ModuleLinker.java
  98. 208
      src/sig/ModuleSelector.java
  99. 50
      src/sig/ModuleSelectorButton.java
  100. 50
      src/sig/MyPanel.java
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="lib"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/commons-io-2.5.jar"/>
<classpathentry kind="lib" path="lib/lwjgl-glfw.jar"/>
<classpathentry kind="lib" path="lib/lwjgl-glfw-natives-linux.jar"/>
<classpathentry kind="lib" path="lib/lwjgl-glfw-natives-macos.jar"/>
<classpathentry kind="lib" path="lib/lwjgl-glfw-natives-windows.jar"/>
<classpathentry kind="lib" path="lib/lwjgl.jar"/>
<classpathentry kind="lib" path="lib/lwjgl-natives-linux.jar"/>
<classpathentry kind="lib" path="lib/lwjgl-natives-macos.jar"/>
<classpathentry kind="lib" path="lib/lwjgl-natives-windows.jar"/>
<classpathentry kind="lib" path="lib/jna-4.5.0.jar"/>
<classpathentry kind="lib" path="lib/jna-platform-4.5.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

@ -15,3 +15,12 @@
/jinput-raw_64.dll
/jinput-wintab.dll
/memoryDump.txt
/sessions
/tmp_profile
/debug.log
/follows
/map_icons.png
/mapdata
/temp_connect
/tmp_mapdata
/tmp2

@ -0,0 +1,4 @@
eclipse.preferences.version=1
encoding//src/sig/modules/RabiRace/SessionCreateWindow.java=UTF-8
encoding//src/sig/modules/RabiRace/SessionListWindow.java=UTF-8
encoding//src/sig/modules/RabiRibi/MemoryOffset.java=UTF-8

@ -0,0 +1,111 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.APILeak=warning
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
org.eclipse.jdt.core.compiler.problem.deadCode=warning
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=warning
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.8

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

@ -0,0 +1,76 @@
#
#Properties file for sigIRCv2
#Thu Sep 13 20:34:27 CDT 2018
Auto_Update_Program=1
Automatically_Update_Program=false
BANDORI_module_X=76
BANDORI_module_Y=307
BANDORI_module_height=120
BANDORI_module_width=640
CHATLOG_module_BackgroundColor=195,195,195,255
CHATLOG_module_MessageHistory=50
CHATLOG_module_X=1042
CHATLOG_module_Y=388
CHATLOG_module_height=518
CHATLOG_module_width=516
CONTROLLER_module_X=46
CONTROLLER_module_Y=272
CONTROLLER_module_height=312
CONTROLLER_module_width=320
Disable_Chat_Messages=false
Max_FPS=30
Module_bandori_Enabled=false
Module_chatlog_Enabled=false
Module_controller_Enabled=false
Module_rabirace_Enabled=false
Module_rabiribi_Enabled=false
Module_touhoumother_Enabled=false
Module_twitch_Enabled=false
RABIRACE_module_X=492
RABIRACE_module_Y=226
RABIRACE_module_height=561
RABIRACE_module_width=481
RABIRIBI_module_X=0
RABIRIBI_module_Y=0
RABIRIBI_module_height=1050
RABIRIBI_module_width=1680
SCROLLINGCHAT_module_X=1016
SCROLLINGCHAT_module_Y=223
SCROLLINGCHAT_module_height=132
SCROLLINGCHAT_module_width=456
TOUHOUMOTHER_module_X=0
TOUHOUMOTHER_module_Y=312
TOUHOUMOTHER_module_height=312
TOUHOUMOTHER_module_width=320
TWITCH_module_X=507
TWITCH_module_Y=366
TWITCH_module_followerText_Y=42
TWITCH_module_followerText_centerX=292
TWITCH_module_follower_img=sigIRC/glaceon_follower.png
TWITCH_module_follower_img_animation=true
TWITCH_module_height=200
TWITCH_module_newFollowerImgBackgroundColor=90,90,90
TWITCH_module_newFollowerImgLogoSize=32
TWITCH_module_newFollowerShadowTextColor=26,90,150
TWITCH_module_newFollowerTextColor=255,255,255
TWITCH_module_width=500
Testing_Mode=false
backgroundColor=-10066177
channel=\#SigoNitori
chatRows=3
chatScrollSpd=4
dingThreshold=6
hardware_acceleration=true
lastSubEmote_APIUpdate=331
messageFont=Gill Sans Ultra Bold Condensed
nickname=SigoNitori
overlayMode=false
rowSpacing=64
server=irc.chat.twitch.tv
showWindowControls=true
touhoumotherConsoleFont=Agency FB Bold
usernameFont=Segoe UI Semibold
windowHeight=632
windowWidth=1212
windowX=442
windowY=205

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="lib"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/commons-io-2.5.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/jna-4.5.0.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/jna-platform-4.5.0.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw-natives-linux.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw-natives-macos.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw-natives-windows.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-natives-linux.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-natives-macos.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-natives-windows.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/twitch-api-wrapper-0.3-jar-with-dependencies.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

@ -1,11 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8

@ -1,65 +0,0 @@
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\oauthToken.txt, retrieving file online from http://45.33.13.215/sigIRCv2/oauthToken.txt.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\subscribers.txt, retrieving file online from http://45.33.13.215/sigIRCv2/subscribers.txt.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\follower_sounds\Glaceon_cry.wav, retrieving file online from http://45.33.13.215/sigIRCv2/Glaceon_cry.wav.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\follower_sounds\README.txt, retrieving file online from http://45.33.13.215/sigIRCv2/README.txt.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\record, retrieving file online from http://45.33.13.215/sigIRCv2/record.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\glaceon_follower.png, retrieving file online from http://45.33.13.215/sigIRCv2/glaceon_follower.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\sigIRCicon.png, retrieving file online from http://45.33.13.215/sigIRCv2/sigIRCicon.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\icon_down_arrow.png, retrieving file online from http://45.33.13.215/sigIRCv2/icon_down_arrow.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\icon_follower_count.png, retrieving file online from http://45.33.13.215/sigIRCv2/icon_follower_count.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\icon_up_arrow.png, retrieving file online from http://45.33.13.215/sigIRCv2/icon_up_arrow.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\icon_uptime.png, retrieving file online from http://45.33.13.215/sigIRCv2/icon_uptime.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\icon_viewers_count.png, retrieving file online from http://45.33.13.215/sigIRCv2/icon_viewers_count.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\icon_views_count.png, retrieving file online from http://45.33.13.215/sigIRCv2/icon_views_count.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\message_separator.png, retrieving file online from http://45.33.13.215/sigIRCv2/message_separator.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\controller\2-way_axis.png, retrieving file online from http://45.33.13.215/sigIRCv2/2-way_axis.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\controller\4-way_axis.png, retrieving file online from http://45.33.13.215/sigIRCv2/4-way_axis.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\controller\controller_overlay.png, retrieving file online from http://45.33.13.215/sigIRCv2/controller_overlay.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\controller\controller_template.png, retrieving file online from http://45.33.13.215/sigIRCv2/controller_template.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\sigIRC\CP_Font.ttf, retrieving file online from http://45.33.13.215/sigIRCv2/CP_Font.ttf.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\kill.png, retrieving file online from http://45.33.13.215/sigIRCv2/kill.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\memory, retrieving file online from http://45.33.13.215/sigIRCv2/memory.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\swap.png, retrieving file online from http://45.33.13.215/sigIRCv2/swap.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\update.png, retrieving file online from http://45.33.13.215/sigIRCv2/update.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\backcolor.png, retrieving file online from http://45.33.13.215/sigIRCv2/backcolor.png.
Could not find C:\Users\sigon\Downloads\sigIRCv2-master\sigIRCv2\.\drag_bar.png, retrieving file online from http://45.33.13.215/sigIRCv2/drag_bar.png.
File size is 10277104
File size on Github is -1
File size on Github varies from currently running program... Downloading new program.
Downloaded Dependencies.
!!!!!!!!!!!!!!!!!!
!!!!!WARNING!!!!!!
There is a space in the global file location sigIRC/sounds/Howler Monkeys Howling (Very Funny)-Pia8ku7jUNg.wav. This is going to cause huge errors!
!!!!!!!!!!!!!!!!!!
Trace:Mini stack tracer:
sig.utils.DebugUtils: **DebugUtils.java** getStackTrace():10
sig.utils.DebugUtils: **DebugUtils.java** showStackTrace():6
sig.FileManager: **FileManager.java** <init>():22
sig.CustomSound: **CustomSound.java** <init>():24
sig.sigIRC: **sigIRC.java** InitializeCustomSounds():406
sig.sigIRC: **sigIRC.java** main():259
!!!!!!!!!!!!!!!!!!
!!!!!WARNING!!!!!!
There is a space in the global file location sigIRC/sounds/Kuroyukihime Burst Link !-tv6wMw7KU9o.wav. This is going to cause huge errors!
!!!!!!!!!!!!!!!!!!
Trace:Mini stack tracer:
sig.utils.DebugUtils: **DebugUtils.java** getStackTrace():10
sig.utils.DebugUtils: **DebugUtils.java** showStackTrace():6
sig.FileManager: **FileManager.java** <init>():22
sig.CustomSound: **CustomSound.java** <init>():24
sig.sigIRC: **sigIRC.java** InitializeCustomSounds():407
sig.sigIRC: **sigIRC.java** main():259
!!!!!!!!!!!!!!!!!!
!!!!!WARNING!!!!!!
There is a space in the global file location sigIRC/sounds/Samus Appears - Metroid Prime [OST]-G8frLXCHtqM.wav. This is going to cause huge errors!
!!!!!!!!!!!!!!!!!!
Trace:Mini stack tracer:
sig.utils.DebugUtils: **DebugUtils.java** getStackTrace():10
sig.utils.DebugUtils: **DebugUtils.java** showStackTrace():6
sig.FileManager: **FileManager.java** <init>():22
sig.CustomSound: **CustomSound.java** <init>():24
sig.sigIRC: **sigIRC.java** InitializeCustomSounds():408
sig.sigIRC: **sigIRC.java** main():259
Local copy of Sub emotes not found. Downloading in background...
Properties successfully saved.
Properties successfully saved.

@ -1,457 +0,0 @@
package sig.modules.RabiRace;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
import java.util.List;
import sig.ScrollingText;
import sig.sigIRC;
import sig.modules.RabiRaceModule;
import sig.utils.DrawUtils;
import sig.utils.FileUtils;
import sig.utils.TextUtils;
public class Profile {
public String username = sigIRC.nickname.toLowerCase();
public String displayName = sigIRC.nickname;
public int avatar = 0;
public int playtime = 0;
public int healthUps = 0;
public int attackUps = 0;
public int manaUps = 0;
public int regenUps = 0;
public int packUps = 0;
public int rainbowEggCount = 0;
public boolean isPaused = false;
public int difficulty = 0;
public int loop = 0;
public float itempct = 0;
public float mappct = 0;
public HashMap<MemoryData,Integer> key_items = new HashMap<MemoryData,Integer>();
public HashMap<MemoryData,Integer> badges = new HashMap<MemoryData,Integer>();
public List<String> updates = new ArrayList<String>();
RabiRaceModule parent;
public long lastWebUpdate = System.currentTimeMillis();
DecimalFormat df = new DecimalFormat("0.0");
Profile oldProfile;
public boolean isArchive = false;
public Profile(RabiRaceModule module) {
this(module,true);
}
public Profile(RabiRaceModule module, boolean archive) {
this.isArchive = archive;
if (!isArchive) {
oldProfile = new Profile(module,true);
}
this.parent = module;
}
public void archiveAllValues() {
oldProfile.healthUps = healthUps;
oldProfile.attackUps = attackUps;
oldProfile.manaUps = manaUps;
oldProfile.regenUps = regenUps;
oldProfile.packUps = packUps;
oldProfile.rainbowEggCount = rainbowEggCount;
oldProfile.key_items = (HashMap<MemoryData, Integer>)key_items.clone();
oldProfile.badges = (HashMap<MemoryData, Integer>)badges.clone();
}
public void compareAndAnnounceAllChangedValues() {
//System.out.println(oldProfile.key_items.get(MemoryData.HAMMER)+","+key_items.get(MemoryData.HAMMER));
String announcement = "";
int count=0;
if (oldProfile.healthUps==healthUps-1) {
announcement = "has obtained a Health Up! ("+healthUps+" total)";
count++;
}
if (oldProfile.attackUps==attackUps-1) {
announcement = "has obtained an Attack Up! ("+attackUps+" total)";
count++;
}
if (oldProfile.manaUps==manaUps-1) {
announcement = "has obtained a Mana Up! ("+manaUps+" total)";
count++;
}
if (oldProfile.regenUps==regenUps-1) {
announcement = "has obtained a Regen Up! ("+regenUps+" total)";
count++;
}
if (oldProfile.packUps==packUps-1) {
announcement = "has obtained a Pack Up! ("+packUps+" total)";
count++;
}
if (oldProfile.rainbowEggCount==rainbowEggCount-1) {
if (5-rainbowEggCount==0) {
announcement = "has obtained 5 Rainbow Eggs! (NAME) has completed the race!";
count++;
} else if (5-rainbowEggCount>0)
{
announcement = "has obtained a Rainbow Egg! ("+Math.max(5-rainbowEggCount, 0)+" to go!)";
count++;
}
}
for (MemoryData md : key_items.keySet()) {
if (!oldProfile.key_items.containsKey(md) &&
key_items.containsKey(md)) {
announcement = "has obtained "+md.name+"!";
count++;
}
}
for (MemoryData md : badges.keySet()) {
if (!oldProfile.badges.containsKey(md) &&
badges.containsKey(md)) {
announcement = "has obtained the "+md.name+" badge!";
count++;
}
}
if (count==1) {
SendAnnouncement(announcement);
}
}
private void SendAnnouncement(String string) {
string = displayName+" "+string.replaceAll("(NAME)", displayName);
string = string.replaceAll(" ", "%20");
File file = new File(sigIRC.BASEDIR+"sigIRC/tmp.data");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=addupdate&session="+RabiRaceModule.mySession.id+"&message="+string),file);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void updateClientValues() {
for (MemoryData md : RabiRaceModule.key_items_list) {
//System.out.println("Checking "+md.getDisplayName());
int val = parent.readIntFromMemory(md.mem);
if (val!=0) {
key_items.put(md, val);
//System.out.println("Obtained "+md.getDisplayName());
} else {
key_items.remove(md);
}
}
for (MemoryData md : RabiRaceModule.badges_list) {
int val = parent.readIntFromMemory(md.mem);
if (val!=0) {
badges.put(md, val);
//System.out.println("Obtained "+md.getDisplayName());
} else {
badges.remove(md);
}
}
}
public void uploadProfile() {
if (sigIRC.authenticated) {
File file = new File(sigIRC.BASEDIR+"tmp");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=playerdata&name="+sigIRC.nickname.toLowerCase()+"&data="+getDataString()),file);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void downloadProfile() {
if (sigIRC.authenticated) {
File file = new File(sigIRC.BASEDIR+"tmp_profile");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=retrievedata&name="+username.toLowerCase()),file);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String[] data = FileUtils.readFromFile(sigIRC.BASEDIR+"tmp_profile");
//System.out.println(Arrays.toString(data));
if (data.length>=18) {
int i=0;
displayName = data[i++];
avatar = Integer.parseInt(data[i++]);
playtime = Integer.parseInt(data[i++]);
healthUps = Integer.parseInt(data[i++]);
manaUps = Integer.parseInt(data[i++]);
regenUps = Integer.parseInt(data[i++]);
packUps = Integer.parseInt(data[i++]);
attackUps = Integer.parseInt(data[i++]);
rainbowEggCount = Integer.parseInt(data[i++]);
isPaused = Boolean.parseBoolean(data[i++]);
difficulty = Integer.parseInt(data[i++]);
loop = Integer.parseInt(data[i++]);
itempct = Float.parseFloat(data[i++]);
mappct = Float.parseFloat(data[i++]);
i+=2;
String nextval = data[i++];
if (!nextval.equalsIgnoreCase("BADGES:")) {
do {
String[] parse = nextval.split(";");
key_items.put(MemoryData.valueOf(parse[0]), Integer.parseInt(parse[1]));
//System.out.println("Added "+Arrays.toString(parse));
nextval = data[i++];
}
while (!nextval.equalsIgnoreCase("BADGES:"));
}
nextval = data[i++];
if (!nextval.equalsIgnoreCase("UPDATES:")) {
do {
String[] parse = nextval.split(";");
badges.put(MemoryData.valueOf(parse[0]), Integer.parseInt(parse[1]));
//System.out.println("Added "+Arrays.toString(parse));
nextval = data[i++];
}
while (!nextval.equalsIgnoreCase("UPDATES:"));
}
lastWebUpdate = System.currentTimeMillis();
}
}
}
private String getDataString() {
StringBuilder sb = new StringBuilder();
appendData(sigIRC.nickname,sb);
appendData(avatar,sb);
appendData(playtime,sb);
appendData(healthUps,sb);
appendData(manaUps,sb);
appendData(regenUps,sb);
appendData(packUps,sb);
appendData(attackUps,sb);
appendData(rainbowEggCount,sb);
appendData(isPaused,sb);
appendData(difficulty,sb);
appendData(loop,sb);
appendData(itempct,sb);
appendData(mappct,sb);
appendData(0,sb);
appendData("KEYITEMS:",sb);
for (MemoryData data : key_items.keySet()) {
Integer val = key_items.get(data);
appendData(data.name()+";"+val,sb);
}
appendData("BADGES:",sb);
for (MemoryData data : badges.keySet()) {
Integer val = badges.get(data);
appendData(data.name()+";"+val,sb);
}
appendData("UPDATES:",sb);
return sb.toString();
}
private void appendData(Object data, StringBuilder str) {
if (str.length()!=0) {
str.append(",");
}
str.append(data);
}
public Image getStatText(int w) {
BufferedImage tmp = new BufferedImage(400,175,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = tmp.createGraphics();
g2.setColor(Color.BLACK);
g2.fillRect(1, 1, 32, 32);
g2.setColor(ScrollingText.GetUserNameColor(displayName));
DrawUtils.drawOutlineText(g2, sigIRC.panel.rabiRibiMoneyDisplayFont, 36, 26, 1, g2.getColor(), Color.BLACK, displayName);
DrawUtils.drawCenteredOutlineText(g2, sigIRC.panel.rabiRibiTinyDisplayFont, (int)(tmp.getWidth()*0.2), 50, 1, GetDifficultyColor(), Color.BLACK, GetDifficultyName());
String text = TextUtils.convertSecondsToTimeFormat(playtime/60);
if (isPaused) {
g2.setColor(new Color(128,96,0));
} else {
g2.setColor(Color.BLACK);
}
DrawUtils.drawOutlineText(g2, sigIRC.panel.rabiRibiMoneyDisplayFont, (int)(tmp.getWidth() - TextUtils.calculateStringBoundsFont(text, sigIRC.panel.rabiRibiMoneyDisplayFont).getWidth()) - 2, 16, 1, g2.getColor(), Color.GRAY, text);
text = "Map "+df.format(mappct)+"% Item "+df.format(itempct)+"%";
//DrawUtils.drawOutlineText(g2, sigIRC.panel.rabiRibiMoneyDisplayFont, (int)(parent.position.getWidth() - TextUtils.calculateStringBoundsFont(text, sigIRC.panel.rabiRibiMoneyDisplayFont).getWidth()) - 2, 16, 1, g2.getColor(), Color.GRAY, text);
DrawUtils.drawCenteredOutlineText(g2, sigIRC.panel.rabiRibiTinyDisplayFont, (int)(tmp.getWidth()*0.6), 50, 2, Color.WHITE, Color.BLACK, text);
return tmp.getScaledInstance(w, -1, Image.SCALE_AREA_AVERAGING);
}
private Color GetDifficultyColor() {
Color[] color_list = new Color[]{
new Color(99, 159, 255),
new Color(119, 98, 255),
new Color(60, 201, 112),
new Color(200, 209, 100),
new Color(209, 159, 12),
new Color(209, 54, 11),
new Color(68, 24, 12),
};
Color colorval = Color.BLACK;
if (difficulty<color_list.length) {
colorval = color_list[difficulty];
} else {
colorval = color_list[color_list.length-1];
}
return colorval;
}
private String GetDifficultyName() {
String[] difficulty_list = new String[]{
"Casual",
"Novice",
"Normal",
"Hard",
"Hell",
"BEX",
"???",
};
String diffstring = "";
if (difficulty<difficulty_list.length) {
diffstring = difficulty_list[difficulty]+((loop>0)?" Loop "+loop:"");
} else {
diffstring = difficulty_list[difficulty_list.length-1]+((loop>0)?" Loop "+loop:"");
}
return diffstring;
}
public Image getStatPanel(int w) {
//DrawUtils.drawTextFont(g, sigIRC.panel.userFont, parent.position.getX(), parent.position.getY()+26, Color.BLACK, "Values: "+readIntFromMemory(MemoryOffset.DLC_ITEM1)+","+readIntFromMemory(MemoryOffset.DLC_ITEM2)+","+readIntFromMemory(MemoryOffset.DLC_ITEM3)+","+readIntFromMemory(MemoryOffset.DLC_ITEM4));
BufferedImage tmp = new BufferedImage(400,175,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = tmp.createGraphics();
final int border=20;
final int width=(int)(tmp.getWidth()-border*2);
final int spacing=width/5;
for (int i=0;i<5;i++) {
Image img = RabiRaceModule.image_map.get("easter_egg.png");
Color col = (rainbowEggCount>i)?RabiRaceModule.rainbowcycler.getCycleColor():new Color(0,0,0,192);
DrawUtils.drawImage(g2, img, (int)(border+i*spacing-img.getWidth(sigIRC.panel)/4),(int)(36),col,sigIRC.panel);
}
int size = key_items.size();
final int icon_size = 24;
int count = 0;
try {
for (MemoryData data : key_items.keySet()) {
if (key_items.get(data)<0) {
Image img = data.getImage().getScaledInstance(icon_size, icon_size, Image.SCALE_DEFAULT);
if (size*icon_size<width) {
DrawUtils.drawImage(g2, img, (int)(+border+((count++)*icon_size)), (int)(+96+8), new Color(0,0,0,128), sigIRC.panel);
} else {
DrawUtils.drawImage(g2, img, (int)(+border+((width/size)*(count++))), (int)(+96+8), new Color(0,0,0,128), sigIRC.panel);
}
} else {
if (size*icon_size<width) {
g2.drawImage(data.getImage(), (int)(+border+((count++)*icon_size)), (int)(+96+8), (int)icon_size, (int)icon_size, sigIRC.panel);
} else {
g2.drawImage(data.getImage(), (int)(+border+((width/size)*(count++))), (int)(+96+8), (int)icon_size, (int)icon_size, sigIRC.panel);
}
}
}
count=0;
size = badges.size();
for (MemoryData data : badges.keySet()) {
if (size*icon_size<width) {
g2.drawImage(data.getImage(), (int)(+border+((count++)*icon_size)), (int)(+96+32), (int)icon_size, (int)icon_size, sigIRC.panel);
} else {
g2.drawImage(data.getImage(), (int)(+border+((width/size)*(count++))), (int)(+96+32), (int)icon_size, (int)icon_size, sigIRC.panel);
}
}
int i=0;
Image[] imgs = new Image[]{RabiRaceModule.image_map.get("health_up.png"),
RabiRaceModule.image_map.get("mana_up.png"),
RabiRaceModule.image_map.get("regen_up.png"),
RabiRaceModule.image_map.get("pack_up.png"),
RabiRaceModule.image_map.get("attack_up.png")};
int[] amts = new int[]{
healthUps,
manaUps,
regenUps,
packUps,
attackUps,
};
//g2.drawImage(RabiRaceModule.image_map.get("bunny_strike.png"),(int)(+border+(i++)*(spacing)-img2.getWidth(sigIRC.panel)/4),(int)(+96+56), (int)icon_size, (int)icon_size, sigIRC.panel);
for (Image img : imgs) {
g2.drawImage(img,(int)(+border+((i)*(spacing))-icon_size/2),(int)(+96+56), (int)icon_size, (int)icon_size, sigIRC.panel);
DrawUtils.drawCenteredOutlineText(g2, sigIRC.panel.programFont, (int)((+border+((i)*(spacing))-icon_size/2)+(spacing/2)+4), (int)(+96+56+icon_size+12), 1, Color.WHITE, Color.BLUE, Integer.toString(amts[i++]));
}
} catch (ConcurrentModificationException e) {
}
return tmp.getScaledInstance(w, -1, Image.SCALE_AREA_AVERAGING);
//g.drawImage(tmp, (int)parent.position.getX(), (int)parent.position.getY(), 120, 64, sigIRC.panel);
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(this.getClass().getName()+"(");
boolean first=false;
for (Field f : this.getClass().getDeclaredFields()) {
if (!first) {
try {
sb.append(f.getName()+"="+f.get(this));
first=true;
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else {
try {
sb.append(","+f.getName()+"="+f.get(this));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
sb.append(")");
return sb.toString();
}
public static Point calculateMultiPanelView(int elements) {
int x = 1;
int y = 1;
while (x*y<elements) {
if (x==y) {
y++;
} else {
x++;
}
}
//System.out.println(x+","+y);
return new Point(x,y);
}
public static void DrawMultiPanel(Graphics g, int x, int y, int w, List<Profile> players) {
int cols = calculateMultiPanelView(players.size()).x;
int rows = calculateMultiPanelView(players.size()).y;
int xx = 0;
int yy = 0;
for (Profile p : players) {
Image panel = p.getStatPanel(w);
Image panel2 = p.getStatText(w);
g.drawImage(panel,(int)(x+xx*panel.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(y+yy*panel.getHeight(sigIRC.panel)/((rows+cols)/2d)),(int)(panel.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(panel.getHeight(sigIRC.panel)/((rows+cols)/2d)),sigIRC.panel);
g.drawImage(panel2,(int)(x+xx*panel2.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(y+yy*panel2.getHeight(sigIRC.panel)/((rows+cols)/2d)),(int)(panel2.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(panel2.getHeight(sigIRC.panel)/((rows+cols)/2d)),sigIRC.panel);
if (xx+1<cols) {
xx++;
} else {
yy++;
xx=0;
}
}
}
}

@ -1,226 +0,0 @@
package sig.modules.RabiRace;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import sig.sigIRC;
import sig.modules.RabiRaceModule;
import sig.utils.FileUtils;
import sig.utils.TextUtils;
public class SessionCreateWindow extends JFrame{
JPanel container = new JPanel();
LengthValidationField session_name = new LengthValidationField(16);
NumberValidationField maxplayers = new NumberValidationField();
JPasswordField pass = new JPasswordField();
JButton create = new JButton("Create");
public SessionCreateWindow() {
this.setTitle("Create Rabi-Race Session");
this.setIconImage(sigIRC.programIcon);
this.setVisible(false);
JPanel namepanel = new JPanel();
JPanel playerpanel = new JPanel();
JPanel passwordpanel = new JPanel();
JPanel[] panel_list = new JPanel[]{
namepanel,playerpanel,passwordpanel
};
for (JPanel panel : panel_list) {
panel.setLayout(new BoxLayout(panel,BoxLayout.LINE_AXIS));
panel.setSize(400, 24);
panel.setMinimumSize(new Dimension(400, 24));
panel.add(Box.createRigidArea(new Dimension(24,24)));
}
JLabel nameLabel = new JLabel("Session Name: ");
String label = RabiRaceModule.module.myProfile.displayName+"'s Race";
if (label.length()>16) {
label = "My Rabi-Race!";
}
session_name.setText(label);
namepanel.add(nameLabel);
namepanel.add(session_name);
JLabel playerLabel = new JLabel("Max Players: ");
maxplayers.setText("4");
playerpanel.add(playerLabel);
playerpanel.add(maxplayers);
JLabel passwordLabel = new JLabel("🔑 Password (Optional): ");
playerpanel.add(passwordLabel);
playerpanel.add(pass);
for (JPanel panel : panel_list) {
panel.add(Box.createRigidArea(new Dimension(24,24)));
}
create.setSize(164,24);
create.setMinimumSize(new Dimension(164,24));
create.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ev) {
if (session_name.getText().length()>session_name.length) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your session name is too long!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (session_name.getText().length()<=2) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your session name is too short!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (!TextUtils.isAlphanumeric(session_name.getText())) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your session name has invalid characters! Only A-Z,0-9,!,-,.,? and spaces allowed!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (!TextUtils.isInteger(maxplayers.getText(), 10)) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your max player count is invalid!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (Integer.parseInt(maxplayers.getText())>48 || Integer.parseInt(maxplayers.getText())<2) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your max player count needs to be between 2-48!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
String hashpass = "";
if (String.copyValueOf(pass.getPassword()).length()>0) {
hashpass = SessionListWindow.GetHashedPassword(String.copyValueOf(pass.getPassword()));
}
session_name.setText(session_name.getText().replaceAll(" ", "%20"));
File file = new File(sigIRC.BASEDIR+"sigIRC/tmp.data");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=sessioncreate&name="+session_name.getText()+"&players="+maxplayers.getText()+"&password="+((hashpass.length()>0)?hashpass:"none")),file);
String[] contents = FileUtils.readFromFile(sigIRC.BASEDIR+"sigIRC/tmp.data");
int sessionID=-1;
if (contents.length>=2) {
sessionID=Integer.parseInt(contents[0]);
}
if (sessionID!=-1) {
RabiRaceModule.module.getSessionList();
//RabiRaceModule.module.session_listing.data.put(sessionID, new Session());
Session session = RabiRaceModule.module.session_listing.data.get(sessionID);
SessionListWindow.ConnectToSession(session, hashpass);
setVisible(false);
}
//SessionListWindow.ConnectToSession(session, hashedPass);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
//create.add(Box.createRigidArea(new Dimension(24,24)));
container.setLayout(new BoxLayout(container,BoxLayout.PAGE_AXIS));
container.add(Box.createRigidArea(new Dimension(24,24)));
container.add(namepanel);
container.add(playerpanel);
container.add(passwordpanel);
container.add(create);
container.add(Box.createRigidArea(new Dimension(24,24)));
this.add(container);
this.setSize(400, 192);
this.setMinimumSize(new Dimension(400, 192));
this.setMaximumSize(new Dimension(400, 192));
this.setResizable(false);
}
class LengthValidationField extends JTextField implements DocumentListener{
int length = 10;
public LengthValidationField(int maxLength) {
this.length = maxLength;
getDocument().addDocumentListener(this);
}
@Override
public void changedUpdate(DocumentEvent arg0) {
}
@Override
public void insertUpdate(DocumentEvent arg0) {
ValidateForm();
}
protected void ValidateForm() {
if (fieldIsInvalid()) {
setBackground(Color.RED);
} else {
setBackground(Color.WHITE);
}
}
@Override
public void removeUpdate(DocumentEvent arg0) {
ValidateForm();
}
protected boolean fieldIsInvalid() {
return getText().length()>length || getText().length()<=2 || !TextUtils.isAlphanumeric(getText());
}
}
class NumberValidationField extends JTextField implements DocumentListener{
public NumberValidationField() {
getDocument().addDocumentListener(this);
}
@Override
public void changedUpdate(DocumentEvent arg0) {
}
@Override
public void insertUpdate(DocumentEvent arg0) {
ValidateForm();
}
protected void ValidateForm() {
if (fieldIsInvalid()) {
setBackground(Color.RED);
} else {
setBackground(Color.WHITE);
}
}
@Override
public void removeUpdate(DocumentEvent arg0) {
ValidateForm();
}
protected boolean fieldIsInvalid() {
if (!TextUtils.isInteger(getText(), 10)) {
return true;
}
int val = Integer.parseInt(getText());
if (val>48 || val<2) {
return true;
}
return false;
}
}
}

@ -1,459 +0,0 @@
package sig.modules;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.imageio.ImageIO;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.WinNT;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import sig.FileManager;
import sig.Module;
import sig.sigIRC;
import sig.modules.RabiRace.ClickableButton;
import sig.modules.RabiRace.ColorCycler;
import sig.modules.RabiRace.CreateButton;
import sig.modules.RabiRace.JoinButton;
import sig.modules.RabiRace.MemoryData;
import sig.modules.RabiRace.Profile;
import sig.modules.RabiRace.Session;
import sig.modules.RabiRace.SessionCreateWindow;
import sig.modules.RabiRace.SessionListData;
import sig.modules.RabiRace.SessionListWindow;
import sig.modules.RabiRibi.MemoryOffset;
import sig.modules.RabiRibi.MemoryType;
import sig.modules.utils.PsapiTools;
import sig.utils.DrawUtils;
import sig.utils.FileUtils;
import sig.utils.TextUtils;
public class RabiRaceModule extends Module{
final static String ITEMS_DIRECTORY = sigIRC.BASEDIR+"sigIRC/rabi-ribi/items/";
final int PROCESS_PERMISSIONS = WinNT.PROCESS_QUERY_INFORMATION | WinNT.PROCESS_VM_READ;
boolean foundRabiRibi = false;
int rabiRibiPID = -1;
long rabiRibiMemOffset = 0;
public HANDLE rabiribiProcess = null;
public static HashMap<String,Image> image_map = new HashMap<String,Image>();
public static ColorCycler rainbowcycler = new ColorCycler(new Color(255,0,0,96),8);
public Profile myProfile = new Profile(this,false);
public static RabiRaceModule module;
public static SessionListWindow window;
public static SessionCreateWindow createwindow;
public static Session mySession;
boolean firstCheck=false;
public List<ScrollingText> messages = new ArrayList<ScrollingText>();
public static int lastScrollX = 0;
boolean firstUpdate=true;
public SessionListData session_listing = new SessionListData();
ClickableButton join_button,create_button;
public static List<MemoryData> key_items_list = new ArrayList<MemoryData>();
public static List<MemoryData> badges_list = new ArrayList<MemoryData>();
public RabiRaceModule(Rectangle2D bounds, String moduleName) {
super(bounds, moduleName);
//Initialize();
Initialize();
module = this;
window = new SessionListWindow();
window.setVisible(false);
createwindow = new SessionCreateWindow();
createwindow.setVisible(false);
//System.out.println("Money value is: "+readIntFromMemory(MemoryOffset.MONEY));
}
private void Initialize() {
CheckRabiRibiClient();
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleWithFixedDelay(()->{
CheckRabiRibiClient();
if (foundRabiRibi) {
myProfile.uploadProfile();
getSessionList();
getMessageUpdates();
//trimeadProfile.downloadProfile();
firstCheck=true;
if (mySession!=null) {
File file = new File(sigIRC.BASEDIR+"sigIRC/tmp.data");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=keepalivesession&session="+mySession.getID()),file);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}, 5000, 5000, TimeUnit.MILLISECONDS);
ScheduledExecutorService scheduler2 = Executors.newScheduledThreadPool(1);
scheduler2.scheduleWithFixedDelay(()->{
if (foundRabiRibi) {
UpdateMyProfile();
}
}, 250, 250, TimeUnit.MILLISECONDS);
File dir = new File(ITEMS_DIRECTORY);
for (MemoryData data : MemoryData.values()) {
//Attempt to fetch from server.
new FileManager("sigIRC/rabi-ribi/items/"+data.img_path).verifyAndFetchFileFromServer();
}
new FileManager("sigIRC/rabi-ribi/items/easter_egg.png").verifyAndFetchFileFromServer();
new FileManager("sigIRC/rabi-ribi/items/health_up.png").verifyAndFetchFileFromServer();
new FileManager("sigIRC/rabi-ribi/items/mana_up.png").verifyAndFetchFileFromServer();
new FileManager("sigIRC/rabi-ribi/items/regen_up.png").verifyAndFetchFileFromServer();
new FileManager("sigIRC/rabi-ribi/items/pack_up.png").verifyAndFetchFileFromServer();
new FileManager("sigIRC/rabi-ribi/items/attack_up.png").verifyAndFetchFileFromServer();
String[] images = dir.list();
List<String> filtered_images = new ArrayList<String>();
for (String file : images) {
File f = new File(ITEMS_DIRECTORY+file);
if (!f.isDirectory()) {
filtered_images.add(file);
}
}
images = filtered_images.toArray(new String[filtered_images.size()]);
for (String image : images) {
//System.out.println("Loaded "+image);
image_map.put(image, sigIRC.readImage(ITEMS_DIRECTORY+image));
}
for (MemoryData md : MemoryData.values()) {
if (md.key_item) {
key_items_list.add(md);
} else {
badges_list.add(md);
}
}
//trimeadProfile.username = "trimead";
join_button = new JoinButton(new Rectangle(2,(int)(position.getHeight()-18),120,18),"Join Session (0)",this);
create_button = new CreateButton(new Rectangle(122,(int)(position.getHeight()-18),120,18),"Create Session",this);
}
private void getMessageUpdates() {
File file = new File(sigIRC.BASEDIR+"sigIRC/messages");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=getupdates&name="+myProfile.username),file);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String[] data = FileUtils.readFromFile(sigIRC.BASEDIR+"sigIRC/messages");
for (String s : data) {
if (s.length()>0) {
messages.add(new ScrollingText(s,(int)(lastScrollX+position.getWidth()+24),(int)(position.getHeight()-28)));
}
}
}
public void getSessionList() {
File file = new File(sigIRC.BASEDIR+"sessions");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=getsessions"),file);
String[] data = FileUtils.readFromFile(sigIRC.BASEDIR+"sessions");
//System.out.println("Data is "+Arrays.toString(data));
session_listing.UpdateData(data);
} catch (IOException e) {
e.printStackTrace();
}
if (mySession==null) {
join_button.setButtonLabel("Join Session ("+session_listing.getSessions().size()+")");
} else {
join_button.setButtonLabel("Leave Session");
}
window.UpdateSessionList();
}
public void mousePressed(MouseEvent ev) {
if (firstCheck && join_button.mouseInsideBounds(ev)) {
join_button.onClickEvent(ev);
}
if (firstCheck && mySession==null && create_button.mouseInsideBounds(ev)) {
create_button.onClickEvent(ev);
}
}
private void CheckRabiRibiClient() {
List<Integer> pids;
try {
pids = PsapiTools.getInstance().enumProcesses();
boolean found=false;
for (Integer pid : pids) {
HANDLE process = Kernel32.INSTANCE.OpenProcess(PROCESS_PERMISSIONS, true, pid);
List<sig.modules.utils.Module> hModules;
try {
hModules = PsapiTools.getInstance().EnumProcessModules(process);
for(sig.modules.utils.Module m: hModules){
//System.out.println(m.getFileName()+":"+m.getEntryPoint());
if (m.getFileName().contains("rabiribi")) {
found=true;
if (!foundRabiRibi) {
rabiRibiMemOffset = Pointer.nativeValue(m.getLpBaseOfDll().getPointer());
System.out.println("Found an instance of Rabi-Ribi at 0x"+Long.toHexString(rabiRibiMemOffset)+" | File:"+m.getFileName()+","+m.getBaseName());
rabiRibiPID=pid;
foundRabiRibi=true;
rabiribiProcess=process;
break;
}
break;
}
}
if (found) {
break;
}
} catch (Exception e) {
e.printStackTrace();
}
if (process!=null) {
Kernel32.INSTANCE.CloseHandle(process);
}
}
if (!found && foundRabiRibi) {
foundRabiRibi=false;
System.out.println("Rabi-Ribi process lost.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
if (foundRabiRibi) {
rainbowcycler.run();
if (window!=null) {
window.run();
}
for (int i=0;i<messages.size();i++) {
if (!messages.get(i).run()) {
messages.remove(i--);
}
}
if (lastScrollX>0) {
lastScrollX-=ScrollingText.SCROLLSPD;
}
}
}
private void UpdateMyProfile() {
if (foundRabiRibi) {
//System.out.println("Called.");
int paused = readIntFromMemory(MemoryOffset.PAUSED);
float itempct = readFloatFromMemory(MemoryOffset.ITEM_PERCENT);
myProfile.isPaused = paused==1;
//System.out.println(itempct+","+paused);
if (paused==0 && itempct>=0) {
if (mySession!=null) {
myProfile.archiveAllValues();
}
myProfile.rainbowEggCount = readIntFromMemory(MemoryOffset.RAINBOW_EGG_COUNT);
myProfile.attackUps = readItemCountFromMemory(MemoryOffset.ATTACKUP_START,MemoryOffset.ATTACKUP_END);
myProfile.healthUps = readItemCountFromMemory(MemoryOffset.HEALTHUP_START,MemoryOffset.HEALTHUP_END);
myProfile.manaUps = readItemCountFromMemory(MemoryOffset.MANAUP_START,MemoryOffset.MANAUP_END);
myProfile.regenUps = readItemCountFromMemory(MemoryOffset.REGENUP_START,MemoryOffset.REGENUP_END);
myProfile.packUps = readItemCountFromMemory(MemoryOffset.PACKUP_START,MemoryOffset.PACKUP_END);
myProfile.itempct = itempct;
myProfile.mappct = readFloatFromMemory(MemoryOffset.MAP_PERCENT);
myProfile.playtime = readIntFromMemory(MemoryOffset.PLAYTIME);
myProfile.difficulty = readIntFromMemory(MemoryOffset.GAME_DIFFICULTY);
myProfile.loop = readIntFromMemory(MemoryOffset.GAME_LOOP);
myProfile.updateClientValues();
if (mySession!=null && !firstUpdate) {
myProfile.compareAndAnnounceAllChangedValues();
}
firstUpdate=false;
}
}
}
public void ApplyConfigWindowProperties() {
sigIRC.rabiracemodule_X=(int)position.getX();
sigIRC.rabiracemodule_Y=(int)position.getY();
sigIRC.config.setInteger("RABIRACE_module_X", sigIRC.rabiracemodule_X);
sigIRC.config.setInteger("RABIRACE_module_Y", sigIRC.rabiracemodule_Y);
}
/*public int readIntFromErinaData(MemoryOffset val) {
return readIntFromPointer(val,MemoryOffset.ENTITY_ARRAY);
}
public float readFloatFromErinaData(MemoryOffset val) {
return readFloatFromPointer(val,MemoryOffset.ENTITY_ARRAY);
}*/
public int readIntFromMemory(long offset) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(rabiRibiMemOffset+offset), mem, 4, null);
return mem.getInt(0);
}
public float readFloatFromMemory(long offset) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(rabiRibiMemOffset+offset), mem, 4, null);
return mem.getFloat(0);
}
public float readFloatFromMemoryOffset(MemoryOffset val, long pointer) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(pointer+val.getOffset()), mem, 4, null);
return mem.getFloat(0);
}
public int readIntFromMemoryOffset(MemoryOffset val, long pointer) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(pointer+val.getOffset()), mem, 4, null);
return mem.getInt(0);
}
public float readDirectFloatFromMemoryLocation(long pointer) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(pointer), mem, 4, null);
return mem.getFloat(0);
}
public int readDirectIntFromMemoryLocation(long pointer) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(pointer), mem, 4, null);
return mem.getInt(0);
}
public int readIntFromPointer(MemoryOffset val, MemoryOffset pointer) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(readIntFromMemory(pointer.getOffset())+val.getOffset()), mem, 4, null);
return mem.getInt(0);
}
public float readFloatFromPointer(MemoryOffset val, MemoryOffset pointer) {
Memory mem = new Memory(4);
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(readIntFromMemory(pointer.getOffset())+val.getOffset()), mem, 4, null);
return mem.getFloat(0);
}
public int readIntFromMemory(MemoryOffset val) {
return (int)readFromMemory(val,MemoryType.INTEGER);
}
public float readFloatFromMemory(MemoryOffset val) {
return (float)readFromMemory(val,MemoryType.FLOAT);
}
Object readFromMemory(MemoryOffset val, MemoryType type) {
Memory mem = new Memory(type.getSize());
Kernel32.INSTANCE.ReadProcessMemory(rabiribiProcess, new Pointer(rabiRibiMemOffset+val.getOffset()), mem, type.getSize(), null);
switch (type) {
case FLOAT:
return mem.getFloat(0);
case INTEGER:
return mem.getInt(0);
default:
System.out.println("WARNING! Type "+type+" does not have a defined value.");
return -1;
}
}
int readItemCountFromMemory(MemoryOffset start_range,
MemoryOffset end_range) {
int count=0;
for (long i=start_range.getOffset();i<=end_range.getOffset();i++) {
if (readIntFromMemory(i)==1) {
count++;
}
}
return count;
}
public void draw(Graphics g) {
super.draw(g);
if (!foundRabiRibi) {
DrawUtils.drawTextFont(g, sigIRC.panel.userFont, position.getX(), position.getY()+26, Color.BLACK, "Rabi-Ribi not found! Please start it.");
} else {
//myProfile.draw(g);
Image panel = myProfile.getStatPanel((int)position.getWidth());
g.drawImage(panel, (int)position.getX(), (int)position.getY(), sigIRC.panel);
g.drawImage(myProfile.getStatText((int)position.getWidth()), (int)position.getX(), (int)position.getY(), sigIRC.panel);
//Profile.DrawMultiPanel(g, (int)(position.getX()), (int)(position.getY())+panel.getHeight(sigIRC.panel), (int)position.getWidth(), testing);
if (mySession!=null) {
List<Profile> sessionPlayers = new ArrayList<Profile>();
for (Profile p : mySession.getPlayers()) {
if (!p.username.equalsIgnoreCase(myProfile.username)) {
sessionPlayers.add(p);
//System.out.println("Found unique player "+p);
}
}
Profile.DrawMultiPanel(g, (int)(position.getX()), (int)(position.getY())+panel.getHeight(sigIRC.panel), (int)position.getWidth(), sessionPlayers);
}
if (firstCheck) {
join_button.draw(g);
if (mySession==null) {
create_button.draw(g);
}
}
g.setColor(Color.BLACK);
g.fillRect((int)(position.getX()), (int)(position.getY()+position.getHeight()-28-20), (int)(position.getWidth()), 20);
for (int i=0;i<messages.size();i++) {
messages.get(i).draw(g);
}
}
}
class ScrollingText{
String msg;
int x;
int y;
Rectangle2D bounds;
final static int SCROLLSPD = 4;
public ScrollingText(String message, int x, int y) {
this.msg = message;
this.x = x;
this.y = y;
this.bounds = TextUtils.calculateStringBoundsFont(message, sigIRC.panel.rabiRibiTinyDisplayFont);
RabiRaceModule.lastScrollX += bounds.getWidth() + 96;
}
public boolean run() {
x-=SCROLLSPD;
if (x+bounds.getWidth()<0) {
return false;
}
return true;
}
public void draw(Graphics g) {
if (x<position.getWidth()) {
DrawUtils.drawOutlineText(g, sigIRC.panel.rabiRibiTinyDisplayFont, position.getX()+x, position.getY()+y-6, 2, Color.WHITE, Color.GRAY, msg);
}
}
}
}

@ -1,178 +0,0 @@
package sig.modules.RabiRibi;
public enum MemoryOffset {
MONEY(0xD654CC,0x12DA99C+OffsetHelper.KEY_ITEM_OFFSET_V185_TO_V1851),
PLAYTIME(0xD642D8,0x12D97A8+OffsetHelper.KEY_ITEM_OFFSET_V185_TO_V1851), //In frames (Rabi-Ribi runs at 60FPS).
//UNKNOWN1(0xD65BDC), //???? Originally assumed to be "Health Ups".
HEALTHUP_START(0xD6342C,0xD6342C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
HEALTHUP_END(0xD63528,0xD63528+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
ATTACKUP_START(0xD6352C,0xD6352C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
ATTACKUP_END(0xD63628,0xD63628+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
MANAUP_START(0xD6362C,0xD6362C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
MANAUP_END(0xD63728,0xD63728+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
REGENUP_START(0xD6372C,0xD6372C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
REGENUP_END(0xD63828,0xD63828+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
PACKUP_START(0xD6382C,0xD6382C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
PACKUP_END(0xD63928,0xD63928+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
ENTITY_ARRAY(0x0096DA3C,0x012E3B08), //Erina Data Pointer.
ERINA_HP(0x4D8,0X4D8),
ERINA_MAXHP(0x4E8,0x4E8),
ERINA_XPOS(0xC,0xC),
ERINA_YPOS(0x10,0x10),
ERINA_XSPEED(0x470,0x470), //Relative to Entity Array.
ERINA_YSPEED(0x474,0x474), //Relative to Entity Array.
MAPID(0xA600AC,0x9FF3BC),
CAMERA_XPOS(0x991AF4,0x12EED24),
CAMERA_XPOSVIEW(0,0xC969A4),
CAMERA_YPOS(0xABD0A4,0x12FB7E4),
CAMERA_YPOSVIEW(0,0xCA8AB4),
//ENTITY_SIZE(0x704),
ENTITY_ID(0x4F4,0x4F8),
ENTITY_HP(0x4D8,0x4D8),
ENTITY_MAXHP(0x4E8,0x4E8),
ENTITY_ISACTIVE(0x674,0x674),
ENTITY_ANIMATION(0x678,0x678),
ENTITY_XPOS(0xC,0xC),
ENTITY_YPOS(0x10,0x10),
ENTITY_COLOR(0x1C,0x1C),
//TRANSITION_COUNTER(0xA7661C),*/
WARP_TRANSITION_COUNTER(0,0x582CE0+OffsetHelper.KEY_ITEM_OFFSET_V185_TO_V1851), //Detects pausing
GAME_DIFFICULTY(0xD64338,0xD64338+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
GAME_LOOP(0xD6D05C,0xD6D05C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
HAMMER(0xD632B0,0xD632B0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
AIR_JUMP(0xD632B4,0xD632B4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
SLIDING_POWDER(0xD632B8,0xD632B8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
CARROT_BOMB(0xD632BC,0xD632BC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
HOURGLASS(0xD632C0,0xD632C0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
SPEED_BOOST(0xD632C4,0xD632C4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
AUTO_EARRINGS(0xD632C8,0xD632C8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
RIBBON(0xD632CC,0xD632CC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
SOUL_HEART(0xD632D0,0xD632D0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
RABI_SLIPPERS(0xD632D4,0xD632D4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BUNNY_WHIRL(0xD632D8,0xD632D8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
QUICK_BARETTE(0xD632DC,0xD632DC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BOOK_OF_CARROT(0xD632E0,0xD632E0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
CHAOS_ROD(0xD632E4,0xD632E4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
HAMMER_WAVE(0xD632E8,0xD632E8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
HAMMER_ROLL(0xD632EC,0xD632EC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
LIGHT_ORB(0xD632F0,0xD632F0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
WATER_ORB(0xD632F4,0xD632F4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
FIRE_ORB(0xD632F8,0xD632F8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
NATURE_ORB(0xD632FC,0xD632FC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
P_HAIRPIN(0xD63300,0x12D87D0+OffsetHelper.KEY_ITEM_OFFSET_V185_TO_V1851),
SUNNY_BEAM(0xD63304,0xD63304+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
PLUS_NECKLACE(0xD63308,0xD63308+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
CYBER_FLOWER(0xD6330C,0xD6330C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
HEALING_STAFF(0xD63310,0xD63310+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
MAX_BRACELET(0xD63314,0xD63314+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
EXPLODE_SHOT(0xD63318,0xD63318+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
AIR_DASH(0xD6331C,0xD6331C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BUNNY_STRIKE(0xD63320,0xD63320+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
STRANGE_BOX(0xD63324,0xD63324+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
WALL_JUMP(0xD63328,0xD63328+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
SPIKE_BARRIER(0xD6332C,0xD6332C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BUNNY_AMULET(0xD63330,0xD63330+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
CHARGE_RING(0xD63334,0xD63334+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
CARROT_SHOOTER(0xD63338,0xD63338+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
SUPER_CARROT(0xD6333C,0xD6333C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
RUMI_DONUT(0xD63340,0xD63340+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
RUMI_CAKE(0xD63344,0xD63344+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
GOLD_CARROT(0xD63348,0xD63348+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
COCOA_BOMB(0xD6334C,0xD6334C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM1(0xD63350,0xD63350+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
TROPHY(0xD63354,0xD63354+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
EXCLAMATION_POINT(0xD63358,0xD63358+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM2(0xD6335C,0xD6335C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM3(0xD63360,0xD63360+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM4(0xD63364,0xD63364+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
RAINBOW_MAGIC(0xD63368,0xD63368+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM5(0xD6336C,0xD6336C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM6(0xD63370,0xD63370+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM7(0xD63374,0xD63374+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM8(0xD63378,0xD63378+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM9(0xD6337C,0xD6337C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM10(0xD63380,0xD63380+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM11(0xD63384,0xD63384+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM12(0xD63388,0xD63388+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM13(0xD6338C,0xD6338C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
UNKNOWN_ITEM14(0xD63390,0xD63390+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
/*DLC_ITEM1(0xD63394,0xD63394+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
DLC_ITEM2(0xD63398,0xD63398+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),*/
BUNNY_CLOVER(0xD6339C,0xD6339C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
FAIRYS_FLUTE(0,0x12D8874+OffsetHelper.KEY_ITEM_OFFSET_V185_TO_V1851),
BUNNY_MEMORIES(0,0x12D7878),
WIND_BLESSING(0,0x12D7870),
DLC_ITEM4(0xD633A0,0xD633A0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_HEALTH_PLUS(0xD633AC,0xD633AC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_HEALTH_SURGE(0xD633B0,0xD633B0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_MANA_PLUS(0xD633B4,0xD633B4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_MANA_SURGE(0xD633B8,0xD633B8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_CRISIS_BOOST(0xD633BC,0xD633BC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_ATK_GROW(0xD633C0,0xD633C0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_DEF_GROW(0xD633C4,0xD633C4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_ATK_TRADE(0xD633C8,0xD633C8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_DEF_TRADE(0xD633CC,0xD633CC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_ARM_STRENGTH(0xD633D0,0xD633D0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_CARROT_BOOST(0xD633D4,0xD633D4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_WEAKEN(0xD633D8,0xD633D8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_SELF_DEFENSE(0xD633DC,0xD633DC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_ARMORED(0xD633E0,0xD633E0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_LUCKY_SEVEN(0xD633E4,0xD633E4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_HEX_CANCEL(0xD633E8,0xD633E8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_PURE_LOVE(0xD633EC,0xD633EC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_TOXIC_STRIKE(0xD633F0,0xD633F0+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_FRAME_CANCEL(0xD633F4,0xD633F4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_HEALTH_WAGER(0xD633F8,0xD633F8+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_MANA_WAGER(0xD633FC,0xD633FC+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_STAMINA_PLUS(0xD63400,0xD63400+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_BLESSED(0xD63404,0xD63404+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_HITBOX_DOWN(0xD63408,0xD63408+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_CASHBACK(0xD6340C,0xD6340C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_SURVIVAL(0xD63410,0xD63410+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_TOP_FORM(0xD63414,0xD63414+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_TOUGH_SKIN(0xD63418,0xD63418+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_ERINA_BADGE(0xD6341C,0xD6341C+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_RIBBON_BADGE(0xD63420,0xD63420+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_AUTO_TRIGGER(0xD63424,0xD63424+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
BADGE_LILITHS_GIFT(0xD63428,0xD63428+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
//13413E8
ITEM_PERCENT(0,0x13413E8),
MAP_PERCENT(0,0x13413E4),
RAINBOW_EGG_COUNT(0xD65FD4,0xD65FD4+OffsetHelper.KEY_ITEM_OFFSET_V175_TO_V1851),
PAUSED(0,0xC969A0),
;
long offset;
long offset_v185;
long latest_offset;
MemoryOffset(long offset,long offset_v185) {
this.offset=offset;
this.offset_v185=offset_v185;
//TODO CHANGE THIS IF PUBLIC VERSION CHANGES!
this.latest_offset = offset_v185;
}
public long getOffset() {
return latest_offset;
}
public long getOffsetV175() {
return offset;
}
public long getOffsetV185() {
return offset_v185;
}
}
class OffsetHelper{
final static long KEY_ITEM_OFFSET_V175_TO_V185 = 0x5754D0;
final static long KEY_ITEM_OFFSET_V175_TO_V1851 = 0x5744D0;
final static long KEY_ITEM_OFFSET_V185_TO_V1851 = -0x1000;
}

@ -9,18 +9,18 @@ import sig.utils.DebugUtils;
public class FileManager {
String fileloc;
final String serverURL = "http://45.33.13.215/sigIRCv2/";
final String serverURL = "http://45.33.13.215:8080/sigIRCv2/";
boolean folder=false;
public FileManager(String location) {
this.fileloc=location;
if (fileloc.contains(" ")) {
/*if (fileloc.contains(" ")) {
System.out.println("!!!!!!!!!!!!!!!!!!");
System.out.println("!!!!!WARNING!!!!!!");
System.out.println("There is a space in the global file location "+fileloc+". This is going to cause huge errors!");
System.out.println("!!!!!!!!!!!!!!!!!!");
DebugUtils.showStackTrace();
}
}*/
this.folder=false;
}
@ -46,7 +46,7 @@ public class FileManager {
if (!file.exists()) {
System.out.println("Could not find "+file.getAbsolutePath()+", retrieving file online from "+serverURL+file.getName()+".");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL(serverURL+fileloc),file);
org.apache.commons.io.FileUtils.copyURLToFile(new URL(serverURL.replaceAll(" ", "%20")+fileloc.replaceAll(" ", "%20")),file);
if (file.exists()) {
System.out.println(" >> Successfully downloaded "+file.getAbsolutePath()+".");
}

@ -2,7 +2,6 @@ package sig;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
@ -22,8 +21,8 @@ public class Module {
public Rectangle2D position;
protected boolean enabled;
protected String name;
public static Image IMG_DRAGBAR;
public static Image MSG_SEPARATOR;
public static BufferedImage IMG_DRAGBAR;
public static BufferedImage MSG_SEPARATOR;
public static boolean inDragZone=false;
final protected int titleHeight;
@ -54,7 +53,7 @@ public class Module {
}
private void enableWindowDrag(int mouseX, int mouseY) {
if (!sigIRC.overlayMode && !dragging && inDragBounds(mouseX,mouseY) && !DRAGGING) {
if (sigIRC.showWindowControls && !dragging && inDragBounds(mouseX,mouseY) && !DRAGGING) {
//Enable dragging.
dragOffset = new Point((int)position.getX() - mouseX,(int)position.getY()-mouseY);
dragging=DRAGGING=true;
@ -63,7 +62,7 @@ public class Module {
public boolean inDragBounds(int x, int y) {
return x>=position.getX() && x<=position.getX()+position.getWidth() &&
y>=(int)position.getY()-Module.IMG_DRAGBAR.getHeight(sigIRC.panel) &&
y>=(int)position.getY()-Module.IMG_DRAGBAR.getHeight() &&
y<=(int)position.getY();
}
@ -104,7 +103,15 @@ public class Module {
}
}
public static void loadModule() {
}
public static void unloadModule() {
}
private void dragWindow() {
if (sigIRC.showWindowControls) {
if (dragging) {
//sigIRC.panel.repaint(getDrawBounds().getBounds());
int mouseX = sigIRC.panel.lastMouseX+(int)dragOffset.getX();
@ -119,7 +126,8 @@ public class Module {
inDragZone=true;
//System.out.println("In Drag Zone for Module "+name);
//sigIRC.panel.setCursor(new Cursor(Cursor.MOVE_CURSOR));
} /*else
}
}/*else
if (sigIRC.panel.getCursor().getType()==Cursor.MOVE_CURSOR) {
sigIRC.panel.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}*/
@ -142,12 +150,12 @@ public class Module {
}
private void drawModuleHeader(Graphics g) {
if (!sigIRC.overlayMode) {
if (sigIRC.showWindowControls) {
g.drawImage(Module.IMG_DRAGBAR,
(int)position.getX()+2,
(int)position.getY()-Module.IMG_DRAGBAR.getHeight(sigIRC.panel),
(int)position.getY()-Module.IMG_DRAGBAR.getHeight(),
(int)position.getWidth()-4,
Module.IMG_DRAGBAR.getHeight(sigIRC.panel),
Module.IMG_DRAGBAR.getHeight(),
sigIRC.panel);
DrawUtils.drawTextFont(g, sigIRC.panel.smallFont, (int)position.getX(), (int)position.getY()-titleHeight/2+4, Color.BLACK, this.name);
//g.fillRect((int)position.getX(), (int)position.getY(), (int)position.getWidth(), (int)position.getHeight());

@ -0,0 +1,10 @@
package sig;
public class ModuleLinker {
public String name = "";
public Module mod;
public ModuleLinker(String name,Module mod) {
this.name = name;
this.mod = mod;
}
}

@ -0,0 +1,208 @@
package sig;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import sig.modules.BandoriModule;
import sig.modules.ChatLogModule;
import sig.modules.ControllerModule;
import sig.modules.DDRStepModule;
import sig.modules.RabiRaceModule;
import sig.modules.RabiRibiModule;
import sig.modules.TouhouMotherModule;
import sig.modules.TwitchModule;
public class ModuleSelector extends JFrame implements WindowListener{
public static JCheckBox bandoriBox = new JCheckBox("Bandori",sigIRC.bandorimodule_enabled);
public static JCheckBox ddrstepBox = new JCheckBox("DDR Step",sigIRC.ddrstepmodule_enabled);
public static JCheckBox rabiraceBox = new JCheckBox("Rabi Race",sigIRC.rabiracemodule_enabled);
public static JCheckBox rabiribiBox = new JCheckBox("Rabi Ribi (Broken)",sigIRC.rabiribimodule_enabled);
public static JCheckBox controllerBox = new JCheckBox("Controller",sigIRC.controllermodule_enabled);
public static JCheckBox chatlogBox = new JCheckBox("Chat Log",sigIRC.chatlogmodule_enabled);
public static JCheckBox twitchBox = new JCheckBox("Twitch",sigIRC.twitchmodule_enabled);
public static JCheckBox touhoumotherBox = new JCheckBox("Touhou Mother",sigIRC.touhoumothermodule_enabled);
public ModuleSelector() {
JPanel panel = new JPanel();
bandoriBox.setActionCommand("bandori");
bandoriBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("bandori")) {
if (ModuleSelector.bandoriBox.isSelected()) {
BandoriModule.loadModule();
} else {
BandoriModule.unloadModule();
}
}
}
});
bandoriBox.setVisible(true);
ddrstepBox.setActionCommand("ddrstep");
ddrstepBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("ddrstep")) {
if (ModuleSelector.ddrstepBox.isSelected()) {
DDRStepModule.loadModule();
} else {
DDRStepModule.unloadModule();
}
}
}
});
ddrstepBox.setVisible(true);
rabiraceBox.setActionCommand("rabirace");
rabiraceBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("rabirace")) {
if (ModuleSelector.rabiraceBox.isSelected()) {
RabiRaceModule.loadModule();
} else {
RabiRaceModule.unloadModule();
}
}
}
});
rabiraceBox.setVisible(true);
rabiribiBox.setActionCommand("rabiribi");
rabiribiBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("rabiribi")) {
if (ModuleSelector.rabiribiBox.isSelected()) {
RabiRibiModule.loadModule();
} else {
RabiRibiModule.unloadModule();
}
}
}
});
rabiribiBox.setVisible(true);
controllerBox.setActionCommand("controller");
controllerBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("controller")) {
if (ModuleSelector.controllerBox.isSelected()) {
ControllerModule.loadModule();
} else {
ControllerModule.unloadModule();
}
}
}
});
controllerBox.setVisible(true);
chatlogBox.setActionCommand("chatlog");
chatlogBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("chatlog")) {
if (ModuleSelector.chatlogBox.isSelected()) {
ChatLogModule.loadModule();
} else {
ChatLogModule.unloadModule();
}
}
}
});
chatlogBox.setVisible(true);
twitchBox.setActionCommand("twitch");
twitchBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("twitch")) {
if (ModuleSelector.twitchBox.isSelected()) {
TwitchModule.loadModule();
} else {
TwitchModule.unloadModule();
}
}
}
});
twitchBox.setVisible(true);
touhoumotherBox.setActionCommand("touhoumother");
touhoumotherBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equalsIgnoreCase("touhoumother")) {
if (ModuleSelector.touhoumotherBox.isSelected()) {
TouhouMotherModule.loadModule();
} else {
TouhouMotherModule.unloadModule();
}
}
}
});
touhoumotherBox.setVisible(true);
panel.setVisible(true);
panel.add(twitchBox);
panel.add(chatlogBox);
panel.add(controllerBox);
panel.add(rabiraceBox);
panel.add(bandoriBox);
panel.add(touhoumotherBox);
panel.add(ddrstepBox);
panel.add(rabiribiBox);
panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS));
this.add(panel);
this.pack();
//this.setVisible(true);
this.repaint();
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
}

@ -0,0 +1,50 @@
package sig;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import javax.imageio.ImageIO;
import sig.sigIRC;
import sig.modules.TouhouMotherModule;
import sig.utils.DrawUtils;
import sig.utils.FileUtils;
import sig.utils.TextUtils;
public class ModuleSelectorButton {
BufferedImage buttonimg;
int x=0;
int y=0;
boolean buttonEnabled = true;
public ModuleSelectorButton(File filename, int x, int y) {
this.x=x;
this.y=y;
try {
buttonimg = ImageIO.read(filename);
} catch (IOException e) {
e.printStackTrace();
}
}
public void draw(Graphics g) {
if (buttonEnabled) {
g.drawImage(buttonimg, x, y, sigIRC.panel);
}
}
public void onClickEvent(MouseEvent ev) {
if (buttonEnabled && !sigIRC.overlayMode) {
if (ev.getX()>=x && ev.getX()<=x+buttonimg.getWidth() &&
ev.getY()>=y && ev.getY()<=y+buttonimg.getHeight()) {
sigIRC.moduleSelectorWindow.setVisible(true);
}
}
}
}

@ -4,6 +4,7 @@ import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.MouseInfo;
@ -24,27 +25,44 @@ import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Mixer;
import javax.swing.JColorChooser;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import sig.modules.BandoriModule;
import sig.modules.ChatLogModule;
import sig.modules.ChatLog.ChatLogMessage;
import sig.utils.DrawUtils;
import sig.utils.FileUtils;
import sig.utils.TextUtils;
public class MyPanel extends JPanel implements MouseListener, ActionListener, MouseWheelListener, KeyListener, ComponentListener, WindowListener{
//List<String> messages = new ArrayList<String>();
final public static Font programFont = new Font(sigIRC.messageFont,0,24);
final public static Font userFont = new Font(sigIRC.usernameFont,0,16);
final public static Font smallFont = new Font(sigIRC.touhoumotherConsoleFont,0,12);
public static Font programFont = new Font(sigIRC.messageFont,Font.BOLD,32);
public static Font userFont = new Font(sigIRC.usernameFont,Font.BOLD,16);
public static Font smallFont = new Font(sigIRC.touhoumotherConsoleFont,0,12);
final public static Font rabiRibiMoneyDisplayFont = new Font("CP Font",0,16);
final public static Font rabiRibiTinyDisplayFont = new Font("CP Font",0,12);
public int lastMouseX = 0;
public int lastMouseY = 0;
public MyPanel() {
programFont = programFont.deriveFont(sigIRC.messageFontSize);
userFont = userFont.deriveFont(sigIRC.usernameFontSize);
smallFont = smallFont.deriveFont(sigIRC.touhoumotherConsoleFontSize);
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
try {
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(sigIRC.BASEDIR+"sigIRC/CP_Font.ttf")));
} catch (FontFormatException | IOException e) {
e.printStackTrace();
}
//setBorder(BorderFactory.createLineBorder(Color.black));
addMouseListener(this);
addMouseWheelListener(this);
@ -61,11 +79,15 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
super.paintComponent(g);
// Draw Text
//int counter=18;
if (sigIRC.panel!=null) {
try {
if (sigIRC.panel!=null && MouseInfo.getPointerInfo()!=null) {
lastMouseX = (int)(MouseInfo.getPointerInfo().getLocation().getX()-sigIRC.panel.getLocationOnScreen().getX());
lastMouseY = (int)(MouseInfo.getPointerInfo().getLocation().getY()-sigIRC.panel.getLocationOnScreen().getY());
//System.out.println("("+lastMouseX+","+lastMouseY+")");
}
} catch (NullPointerException e) {
//Do Nothing I guess.
}
/*if (sigIRC.window!=null && sigIRC.window.getMousePosition(true)!=null && sigIRC.overlayMode) {
lastMouseX = (int)sigIRC.window.getMousePosition(true).getX();
lastMouseY = (int)sigIRC.window.getMousePosition(true).getY();
@ -75,6 +97,12 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
lastMouseY = -1;
}*/
//
//AudioSystem.getMixerInfo()[0].
/*for (Mixer.Info i : AudioSystem.getMixerInfo()) {
System.out.println(i+": "+AudioSystem.getMixer(i).isOpen());
}*/
//System.out.println(Audio.getMasterOutputVolume());
for (Module m : sigIRC.modules) {
m.draw(g);
}
@ -83,6 +111,11 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
sigIRC.chatlogtwitchemoticons.get(i).draw(g);
}
}
if (sigIRC.newUpdateIsAvailable) {
DrawUtils.drawOutlineText(g, MyPanel.programFont, sigIRC.panel.getWidth()
- TextUtils.calculateStringBoundsFont("NEW UPDATE AVAILABLE!!",MyPanel.programFont).getWidth(), sigIRC.panel.getHeight()
- TextUtils.calculateStringBoundsFont("NEW UPDATE AVAILABLE!!",MyPanel.programFont).getHeight(), 2, Color.RED, Color.WHITE, "NEW UPDATE AVAILABLE!!");
}
for (int i=0;i<sigIRC.textobj.size();i++) {
if (sigIRC.textobj.get(i).isActive()) {
if (sigIRC.overlayMode) {
@ -108,6 +141,7 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
}
if (!sigIRC.overlayMode) {
sigIRC.button.draw(g);
sigIRC.modulebutton.draw(g);
}
}
@ -120,6 +154,9 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
TextRow row = TextRow.PickRandomTextRow(text.getUsername());
sigIRC.textobj.add(text);
row.updateRow(text);
if (sigIRC.bandorimodule_enabled) {
BandoriModule.checkForStamp(text.getUsername(), text.getMessage());
}
//ChatLogMessage.importMessages(message);
}
@ -133,6 +170,7 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
m.mouseModuleMousePress(ev);
}
sigIRC.button.onClickEvent(ev);
sigIRC.modulebutton.onClickEvent(ev);
}
@Override
@ -198,8 +236,10 @@ public class MyPanel extends JPanel implements MouseListener, ActionListener, Mo
sigIRC.config.setInteger("windowY", sigIRC.windowY);
sigIRC.config.setInteger("windowWidth", sigIRC.windowWidth);
sigIRC.config.setInteger("windowHeight", sigIRC.windowHeight);
sigIRC.button.x = sigIRC.panel.getX()+sigIRC.panel.getWidth()-96;
sigIRC.button.x = sigIRC.panel.getX()+sigIRC.panel.getWidth()-192;
sigIRC.button.y = 64+sigIRC.rowobj.size()*sigIRC.rowSpacing;
sigIRC.modulebutton.x = sigIRC.panel.getX()+sigIRC.panel.getWidth()-96;
sigIRC.modulebutton.y = 64+sigIRC.rowobj.size()*sigIRC.rowSpacing;
//com.repaint();
//sigIRC.panel.repaint();
sigIRC.config.saveProperties();

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save