Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
melee.techskill.multishine(ai_state=gamestate.ai_state, controller=controller)
#If we're at the character select screen, choose our character
elif gamestate.menu_state == melee.enums.Menu.CHARACTER_SELECT:
melee.menuhelper.choosecharacter(character=melee.enums.Character.FOX,
gamestate=gamestate,
port=args.port,
opponent_port=args.opponent,
controller=controller,
swag=True,
start=True)
#If we're at the postgame scores screen, spam START
elif gamestate.menu_state == melee.enums.Menu.POSTGAME_SCORES:
melee.menuhelper.skippostgame(controller=controller)
#If we're at the stage select screen, choose a stage
elif gamestate.menu_state == melee.enums.Menu.STAGE_SELECT:
melee.menuhelper.choosestage(stage=melee.enums.Stage.POKEMON_STADIUM,
gamestate=gamestate,
controller=controller)
#Flush any button presses queued up
controller.flush()
if log:
log.logframe(gamestate)
log.writeframe()
if self.player[i].action != Action.DASHING:
self.player[i].moonwalkwarning = False
#TODO: This needs updating in order to support >2 players
xdist = self.ai_state.x - self.opponent_state.x
ydist = self.ai_state.y - self.opponent_state.y
self.distance = math.sqrt( (xdist**2) + (ydist**2) )
self.fixiasa()
self.fixframeindexing()
return True
if label == "stage":
self.stage = unpack('> 16
self.stage &= 0x000000ff
try:
self.stage = enums.Stage(self.stage)
except ValueError:
self.stage = enums.Stage.NO_STAGE
return False
if label == "menu_state":
self.menu_state = unpack(' 4:
try:
self.player[player_int].percent = int(unpack('
from melee import enums, stages
from melee.enums import Action, Character
import csv
from struct import *
import binascii
import os
import socket
import math
import time
from collections import defaultdict
"""Represents the state of a running game of Melee at a given moment in time"""
class GameState:
frame = 0
stage = enums.Stage.FINAL_DESTINATION
menu_state = enums.Menu.CHARACTER_SELECT
player = dict()
projectiles = []
stage_select_cursor_x = 0.0
stage_select_cursor_y = 0.0
ready_to_start = False
distance = 0.0
sock = None
processingtime = 0.0
frametimestamp = 0.0
def __init__(self, dolphin):
#Dict with key of address, and value of (name, player)
self.locations = dict()
path = os.path.dirname(os.path.realpath(__file__))
with open(path + "/locations.csv") as csvfile:
def choosestage(stage, gamestate, controller):
if gamestate.frame < 20:
controller.empty_input()
return
target_x, target_y = 0,0
if stage == enums.Stage.BATTLEFIELD:
target_x, target_y = 1,-9
if stage == enums.Stage.FINAL_DESTINATION:
target_x, target_y = 6.7,-9
if stage == enums.Stage.DREAMLAND:
target_x, target_y = 12.5,-9
if stage == enums.Stage.POKEMON_STADIUM:
target_x, target_y = 15, 3.5
if stage == enums.Stage.YOSHIS_STORY:
target_x, target_y = 3.5, 15.5
if stage == enums.Stage.FOUNTAIN_OF_DREAMS:
target_x, target_y = 10, 15.5
if stage == enums.Stage.RANDOM_STAGE:
target_x, target_y = -13.5, 3.5
#Wiggle room in positioning cursor
wiggleroom = 1.5
#TODO: This needs updating in order to support >2 players
xdist = self.ai_state.x - self.opponent_state.x
ydist = self.ai_state.y - self.opponent_state.y
self.distance = math.sqrt( (xdist**2) + (ydist**2) )
self.fixiasa()
self.fixframeindexing()
return True
if label == "stage":
self.stage = unpack('> 16
self.stage &= 0x000000ff
try:
self.stage = enums.Stage(self.stage)
except ValueError:
self.stage = enums.Stage.NO_STAGE
return False
if label == "menu_state":
self.menu_state = unpack(' 4:
try:
self.player[player_int].percent = int(unpack('> 16
def choosestage(stage, gamestate, controller):
if gamestate.frame < 20:
controller.empty_input()
return
target_x, target_y = 0,0
if stage == enums.Stage.BATTLEFIELD:
target_x, target_y = 1,-9
if stage == enums.Stage.FINAL_DESTINATION:
target_x, target_y = 6.7,-9
if stage == enums.Stage.DREAMLAND:
target_x, target_y = 12.5,-9
if stage == enums.Stage.POKEMON_STADIUM:
target_x, target_y = 15, 3.5
if stage == enums.Stage.YOSHIS_STORY:
target_x, target_y = 3.5, 15.5
if stage == enums.Stage.FOUNTAIN_OF_DREAMS:
target_x, target_y = 10, 15.5
if stage == enums.Stage.RANDOM_STAGE:
target_x, target_y = -13.5, 3.5
#Wiggle room in positioning cursor
wiggleroom = 1.5
#Move up if we're too low
if gamestate.stage_select_cursor_y < target_y - wiggleroom:
controller.release_button(enums.Button.BUTTON_A)
controller.tilt_analog(enums.Button.BUTTON_MAIN, .5, 1)
return
#Move downn if we're too high
if gamestate.stage_select_cursor_y > target_y + wiggleroom:
controller.release_button(enums.Button.BUTTON_A)
controller.tilt_analog(enums.Button.BUTTON_MAIN, .5, 0)
return