def target(internalGameName): if internalGameName is not None and not Game.isValidGame(internalGameName): print("Game name is invalid! Select another.") internalGameName = None if internalGameName is None: game = Game.pick(True) if game is None: untarget() else: config.setTargetGame(game.gamePath) else: #a valid name was inserted config.setTargetGame(Game.fromInternalName(internalGameName).gamePath)
def pullAll(): games = config.getFMCGames() numberOfGames = len(games) gamesWithFilesToCommit = Game.getGamesWithFilesToCommit(False, False) if len(gamesWithFilesToCommit) > 0: print( "WARNING - the following games have files to commit! You can use 'status' to check them:" ) for g in gamesWithFilesToCommit: print(g.gamePath) if not utils.readYesNo( "Do you want to proceed? All games will be resetted!", True): return gameNumber = 1 for g in games: utils.openPar("(" + str(gameNumber) + "/" + str(numberOfGames) + ") UPDATING: " + g.gamePath) pull(g, False) utils.closePar("SUCCESSFULLY UPDATED: " + g.gamePath) utils.printWhiteLines(2) gameNumber += 1 utils.closePar("FINISHED")
import click from helpers.game import Game from helpers.next_move_prediction import MovesEnum MOVES = { "r": MovesEnum.ROCK, "p": MovesEnum.PAPER, "s": MovesEnum.SCISSORS, } if __name__ == "__main__": game = Game() click.clear() click.echo("Welcome to Rock Paper Scissors!") while True: user_move = click.prompt( "\nWhich move do you want to play? [R]ock, [P]aper, [S]cissors or [Q]uit", type=str, ) user_move = user_move.lower() if user_move == "q": break user_move = MOVES.get(user_move) if user_move is None: click.echo("Insert a valid move!") continue point = game.play_round(user_move) click.clear() game.print_score()
from helpers.game import Game if __name__ == "__main__": print("======= Welcome to Cryptograms! =======\n") game = Game() game.create_game() game.run() print("\n======= Exiting Cryptograms! =======")
from helpers.game import Game if __name__ == '__main__': game = Game() game.run()
def getTargetGame(): target = getSingleParameter('targetgame') if target is not None and target != "": return Game(target) else: return None
def getFMCGames(): parentFolder = getFMCGamesFolderPath() return [ Game(os.path.join(parentFolder, x)) for x in os.listdir(parentFolder) if os.path.isdir(os.path.join(parentFolder, x)) ]
def createNewProject(gameName): unityExePath = config.getUnityExePath() unityExeFolderPath = os.path.abspath(os.path.join(unityExePath, os.pardir)) gamesFolderPath = config.getFMCGamesFolderPath() nguiFolderPath = config.getNGUIFolderPath() parentRemoteURL = config.getParentRemoteURL() fmcRepoURL = config.getFMCRepoURL() #asking for project name gamePath = os.path.join(gamesFolderPath, gameName) ok = isGameNameValid(gamePath, gameName) if not ok: printIntro() while not ok: gameName = input( 'Enter the internal game name (no spaces, all lowercase! - e.g. stopthefall): ' ) gamePath = os.path.join(gamesFolderPath, gameName) ok = isGameNameValid(gamePath, gameName) repoUrl = parentRemoteURL + gameName #we have a valid game path and git repo. Ask for confirm... utils.printWhiteLines(2) utils.openPar("\nProject root: " + gamePath + "\nRemote repo: " + repoUrl + "\nInternal name:" + gameName) utils.waitForEnterKey() #creating Unity project... print('Creating Unity project. This will take some time...') pars = [unityExePath] + utils.parList( '-quit -batchmode -nographics -createproject') + [gamePath] subprocess.call(pars) print('Unity project created!') time.sleep(1) game = Game(gamePath) #init local git repo... subprocess.call(utils.parList("git init"), cwd=gamePath) subprocess.call(utils.parList("git remote add origin", repoUrl), cwd=gamePath) #adding .gitignore... shutil.copy(config.unityGitignorePath, os.path.join(gamePath, ".gitignore")) game.gitAdd(".gitignore") game.gitCommit("Added .gitignore") #creating remote repo... remoteURL = parentRemoteURL + gameName + ".git" subprocess.call(utils.parList("git push --set-upstream", remoteURL, "master"), cwd=gamePath) #first commit... game.gitAdd(".") game.gitCommit("Initial commit") #adding subtree... subprocess.call(utils.parList("git pull -u origin master"), cwd=gamePath) subprocess.call(utils.parList("git subtree add --prefix", config.gitSubtreePrefix, fmcRepoURL, "master --squash"), cwd=gamePath) subprocess.call(utils.parList("git push -u origin master"), cwd=gamePath) #adding NGUI... shutil.copytree(nguiFolderPath, os.path.join(gamePath, "Assets", "NGUI")) game.gitAdd(".") game.gitCommit("Added NGUI") #creating _content folders... utils.createFolder(os.path.join(gamePath, config.fmcContentFolder)) utils.createFolder( os.path.join(gamePath, config.fmcContentFolder, "Images")) utils.createFolder( os.path.join(gamePath, config.fmcContentFolder, "Prefabs")) utils.createFolder( os.path.join(gamePath, config.fmcContentFolder, "Scripts")) #Launching project and creating game settings print("Opening the game and creating settings...") game.runUnityMethod(config.unityUpdateSettingsMethodName) game.gitAdd(".") game.gitCommit("Added game settings") game.gitPush() webbrowser.open(remoteURL) os.startfile(os.path.realpath(gamePath)) game.launchUnity(config.unityFirstProjectLaunchMethodName, False) utils.closePar("FINISHED")
def reactToCommand(command): commandList = utils.parList(command) targetedGame = config.getTargetGame() games = config.getFMCGames() firstCommand = commandList[0]; secondCommand = None if len(commandList) > 1: secondCommand = commandList[1]; #Since platforms are useful for more commands, let's check them here targetAndroid = False targetIOS = False if "android" in commandList: targetAndroid = True if "ios" in commandList: targetIOS = True if not (targetAndroid or targetIOS): targetAndroid = True targetIOS = True if command == "info": printInfo() elif firstCommand == "create": gameName = "" if secondCommand is not None: gameName = secondCommand creator.createNewProject(gameName) elif firstCommand == "untarget": targeter.untarget() else: #if here, we are working on existing games #trying to find the targeted game toTarget = targetedGame if secondCommand is not None: if secondCommand != "" and secondCommand != "all" and not Game.isValidGame(secondCommand): for g in games: if g.internalGameName.startswith(secondCommand) and utils.readYesNo("Did you mean " + g.internalGameName + "?", True): secondCommand = g.internalGameName break if Game.isValidGame(secondCommand): toTarget = Game.fromInternalName(secondCommand) if firstCommand == "target": if toTarget is not None: targeter.target(secondCommand) else: targeter.target(None) elif firstCommand == "unity": if "all" in commandList: Game.launchUnityForAllGames("ask" in commandList) else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: Game.launchUnityForAllGames("ask" in commandList) #The user selected "All" else: toTarget.launchUnity(None, False) elif firstCommand == "status": if toTarget is not None and secondCommand != "all": toTarget.hasFilesToCommit(True,True) else: gamesWithFilesToCommit = Game.getGamesWithFilesToCommit(True,False) if len(gamesWithFilesToCommit) <= 0: print("CLEAN - All games have no files to commit!") elif firstCommand == "pull": if "all" in commandList: puller.pullAll() else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: puller.pullAll() #The user selected "All" else: puller.pull(toTarget, True) elif firstCommand == "push": #By default uses targeted game. If overridden, use the given one if toTarget is None: toTarget = Game.pick(False) pusher.push(toTarget) #if targeted game is None, a picker will appear elif firstCommand == "sign": if "all" in commandList: signer.signAll() else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: signer.signall() #The user selected "All" else: signer.sign(toTarget) elif firstCommand == "build": if "all" in commandList: builder.buildAll(targetAndroid, targetIOS) else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: builder.buildAll(targetAndroid, targetIOS) #The user selected "All" else: builder.build(toTarget, targetAndroid, targetIOS) elif firstCommand == "ship": if "all" in commandList: shipper.shipAll(targetAndroid, targetIOS) else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: shipper.shipAll(targetAndroid, targetIOS) #The user selected "All" else: shipper.ship(toTarget, targetAndroid, targetIOS) elif firstCommand == "test": if "all" in commandList: shipper.updateAllIOSTesters() else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: shipper.updateAllIOSTesters() #The user selected "All" else: shipper.updateIOSTesters(toTarget) elif firstCommand == "check": if "all" in commandList: shipper.checkAllIOS() else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: shipper.checkAllIOS(targetAndroid, targetIOS) #The user selected "All" else: shipper.checkIOS(toTarget) elif firstCommand == "fill": if "all" in commandList: shipper.fillAllIOSTestInfo() else: if toTarget is None: toTarget = Game.pick(True, "All") if toTarget is None: shipper.fillAllIOSTestInfo() #The user selected "All" else: shipper.fillIOSTestInfo(toTarget) else: if command != "": print("invalid command. Use 'info' to get a list of available commands.")