Skip to content

Instantly share code, notes, and snippets.

@spiiin
Created January 7, 2021 22:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spiiin/c70c3bf0711fd952d48e505ead7bffe5 to your computer and use it in GitHub Desktop.
Save spiiin/c70c3bf0711fd952d48e505ead7bffe5 to your computer and use it in GitHub Desktop.
from tkinter import *
systems = {
"bulletStartDyingSystem" : ["startDyingComponent", "spineComponent", "bulletComponent", "dyingAnimationComponent"],
"checkGameoverSystem" : ["playerFlagComponent", "enemiesStatComponent"],
"checkMaxEnemiesSystem" : ["enemiesStatComponent", "maxEnemiesOnScreenComponent"],
"checkPauseSystem" : ["pauseComponent"],
"collideEnemiesSystem" : ["enemyComponent", "bulletComponent", "hpComponent", "startDyingComponent", "collideComponent", "playerFlagComponent", "invulnerabilityComponent", "spineComponent"],
"createDialogSystem" : ["enemiesStatComponent"],
"dyingAnimationSystem" : ["dyingAnimationComponent", "removeNodeComponent"],
"enemyStartDyingSystem" : ["enemyComponent", "spineComponent", "dyingAnimationComponent", "enemiesStatComponent", "startDyingComponent", "updateScoreComponent"],
"generateBulletSystem" : ["enemyComponent", "centerComponent", "moveComponent", "bulletGeneratorComponent", "bulletGeneratorComponent"],
"getDamageSystem" : ["hpComponent", "startDyingComponent"],
"playerShootSystem" : ["playerFlagComponent", "spineComponent", "shootAnimationComponent", "produceBulletComponent"],
"playerStartDyingSystem" : ["playerFlagComponent", "spineComponent", "dyingAnimationComponent", "startDyingComponent"],
"removeNodesSystem" : ["nodeComponent", "removeNodeComponent"],
"shootAnimationSystem" : ["shootAnimationComponent"],
"spawnEnemySystem" : ["positionComponent", "spawnEnemyComponent", "maxEnemiesOnScreenComponent"],
"stickUpdateSystem" : ["playerFlagComponent", "moveComponent", "startDyingComponent", "constantsComponent"],
"updateAiPositionSystem" : ["aiComponent", "positionComponent"],
"updateAiSystem" : ["constantsComponent", "playerCenterComponent", "centerComponent", "aiComponent"],
"updateInvulnerabilitySystem" : ["invulnerabilityComponent"],
"updateLifetimeSystem" : ["lifetimeComponent", "nodeComponent", "removeNodeComponent"],
"updateMovingAnimationSystem" : ["playerFlagComponent", "spineComponent", "moveComponent"],
"updatePlayerPositionSystem" : ["playerFlagComponent", "collideComponent", "positionComponent", "moveComponent"],
"updateScoreSystem" : ["scoreLabelComponent", "enemiesStatComponent", "createDialogComponent"],
"upgradePlayerSkinSystem" : ["playerFlagComponent", "spineComponent", "skinLevelComponent", "enemiesStatComponent"]
}
components = [
"aiComponent",
"bulletComponent",
"bulletGeneratorComponent",
"centerComponent",
"collideComponent",
"dyingAnimationComponent",
"enemyComponent",
"createDialogComponent",
"produceBulletComponent",
"removeNodeComponent",
"startDyingComponent",
"updateScoreComponent",
"hpComponent",
"invulnerabilityComponent",
"lifetimeComponent",
"moveComponent",
"nodeComponent",
"playerFlagComponent",
"positionComponent",
"scoreLabelComponent",
"shootAnimationComponent",
"skinLevelComponent",
"spawnEnemyComponent",
"spineComponent",
"constantsComponent",
"enemiesStatComponent",
"maxEnemiesOnScreenComponent",
"pauseComponent",
"playerCenterComponent",
"wallFlagComponent"
]
def getComponentsForSystem(system):
comps = systems[system]
indexes = []
for component in comps:
indexes.append(components.index(component))
return indexes
root = Tk()
systemsBox = Listbox(selectmode=SINGLE)
systemsBox.pack(side=LEFT, anchor=N, expand=1, fill=BOTH)
systemsBox.insert(END, *systems.keys())
componentsBox = Listbox(selectmode=SINGLE)
componentsBox.pack(side=LEFT, anchor=N, expand=1, fill=BOTH)
componentsBox.insert(END, *components)
def callback(event):
selection = event.widget.curselection()
if selection:
for index in selection:
system = event.widget.get(index)
indexes = getComponentsForSystem(system)
if len(indexes) > 0:
for index in indexes:
componentsBox.selection_set(index)
else:
componentsBox.selection_clear(0, END)
systemsBox.bind("<<ListboxSelect>>", callback)
f = Frame()
f.pack(side=LEFT, padx=10, anchor=N, expand=1, fill=Y)
root.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment