Now using libstormgames submodule.
This commit is contained in:
parent
696839880e
commit
ff91462619
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "libstormgames"]
|
||||||
|
path = libstormgames
|
||||||
|
url = https://gitlab.com/stormdragon2976/libstormgames.git
|
@ -1,190 +0,0 @@
|
|||||||
#!/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""Standard initializations and functions shared by all games."""
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import os
|
|
||||||
from os import listdir
|
|
||||||
from os.path import isfile, join
|
|
||||||
from inspect import isfunction
|
|
||||||
from xdg import BaseDirectory
|
|
||||||
import pygame
|
|
||||||
import pyperclip
|
|
||||||
import random
|
|
||||||
import requests
|
|
||||||
import speechd
|
|
||||||
import subprocess
|
|
||||||
import time
|
|
||||||
|
|
||||||
localConfig = configparser.ConfigParser()
|
|
||||||
globalConfig = configparser.ConfigParser()
|
|
||||||
spd = speechd.Client()
|
|
||||||
|
|
||||||
def write_config(writeGlobal = False):
|
|
||||||
if writeGlobal == False:
|
|
||||||
with open(gamePath, 'w') as configfile:
|
|
||||||
localConfig.write(configfile)
|
|
||||||
else:
|
|
||||||
with open(globalPath, 'w') as configfile:
|
|
||||||
globalConfig.write(configfile)
|
|
||||||
|
|
||||||
def read_config(section, value, readGlobal = False):
|
|
||||||
if readGlobal == False:
|
|
||||||
with open(gamePath, 'r') as configfile:
|
|
||||||
return localConfig.read(section, value)
|
|
||||||
else:
|
|
||||||
return globalConfig.read(section, value)
|
|
||||||
|
|
||||||
def speak(text, interupt = True):
|
|
||||||
if interupt == True: spd.cancel()
|
|
||||||
spd.say(text)
|
|
||||||
|
|
||||||
def exit_game():
|
|
||||||
spd.close()
|
|
||||||
pygame.mixer.music.stop()
|
|
||||||
pygame.quit()
|
|
||||||
exit()
|
|
||||||
|
|
||||||
def initialize_gui(gameTitle):
|
|
||||||
# Check for, and possibly create, storm-games path
|
|
||||||
global globalPath
|
|
||||||
global gamePath
|
|
||||||
globalPath = BaseDirectory.xdg_config_home + "/storm-games"
|
|
||||||
gamePath = globalPath + "/" + str.lower(str.replace(gameTitle, " ", "-") + "config")
|
|
||||||
globalPath = globalPath + "/config"
|
|
||||||
if not os.path.exists(gamePath): os.makedirs(gamePath)
|
|
||||||
# Seed the random generator to the clock
|
|
||||||
random.seed()
|
|
||||||
# Set game's name
|
|
||||||
global gameName
|
|
||||||
gameName = gameTitle
|
|
||||||
# start pygame
|
|
||||||
pygame.init()
|
|
||||||
# start the display (required by the event loop)
|
|
||||||
pygame.display.set_mode((320, 200))
|
|
||||||
pygame.display.set_caption(gameTitle)
|
|
||||||
# Load sounds from the sound directory and creates a list like that {'bottle': 'bottle.ogg'}
|
|
||||||
soundFiles = [f for f in listdir("sounds/") if isfile(join("sounds/", f)) and (f.split('.')[1].lower() in ["ogg","wav"])]
|
|
||||||
#lets make a dict with pygame.mixer.Sound() objects {'bottle':<soundobject>}
|
|
||||||
soundData = {}
|
|
||||||
for f in soundFiles:
|
|
||||||
soundData[f.split('.')[0]] = pygame.mixer.Sound("sounds/" + f)
|
|
||||||
soundData['game-intro'].play()
|
|
||||||
time.sleep(soundData['game-intro'].get_length())
|
|
||||||
return soundData
|
|
||||||
|
|
||||||
def instructions():
|
|
||||||
# Read in the instructions file
|
|
||||||
try:
|
|
||||||
with open('files/instructions.txt', 'r') as f:
|
|
||||||
info = f.readlines()
|
|
||||||
except:
|
|
||||||
info = ["Instructions file is missing."]
|
|
||||||
display_text(info)
|
|
||||||
|
|
||||||
def credits():
|
|
||||||
info = [
|
|
||||||
gameName + ": brought to you by Storm Dragon",\
|
|
||||||
"Billy Wolfe, designer and coder.",\
|
|
||||||
"https://social.wolfe.casa/storm"]
|
|
||||||
display_text(info)
|
|
||||||
|
|
||||||
def display_text(text):
|
|
||||||
i = 0
|
|
||||||
text.insert(0, "Press space to read the whole text. Use up and down arrows to navigate the text line by line. Press c to copy the current line to the clipboard or t to copy the entire text. Press enter or escape when you are done reading.")
|
|
||||||
text.append("End of text.")
|
|
||||||
speak(text[i])
|
|
||||||
while True:
|
|
||||||
event = pygame.event.wait()
|
|
||||||
if event.type == pygame.KEYDOWN:
|
|
||||||
if event.key == pygame.K_ESCAPE or event.key == pygame.K_RETURN: return
|
|
||||||
if event.key == pygame.K_DOWN and i < len(text) - 1: i = i + 1
|
|
||||||
if event.key == pygame.K_UP and i > 0: i = i - 1
|
|
||||||
if event.key == pygame.K_SPACE:
|
|
||||||
speak(''.join(text[1:]))
|
|
||||||
else:
|
|
||||||
speak(text[i])
|
|
||||||
if event.key == pygame.K_c:
|
|
||||||
try:
|
|
||||||
pyperclip.copy(text[i])
|
|
||||||
speak("Copied " + text[i] + " to the clipboard.")
|
|
||||||
except:
|
|
||||||
speak("Failed to copy the text to the clipboard.")
|
|
||||||
if event.key == pygame.K_t:
|
|
||||||
try:
|
|
||||||
pyperclip.copy(''.join(text[1:-1]))
|
|
||||||
speak("Copied entire message to the clipboard.")
|
|
||||||
except:
|
|
||||||
speak("Failed to copy the text to the clipboard.")
|
|
||||||
event = pygame.event.clear()
|
|
||||||
time.sleep(0.001)
|
|
||||||
|
|
||||||
def learn_sounds(sounds):
|
|
||||||
loop = True
|
|
||||||
pygame.mixer.music.pause()
|
|
||||||
i = 0
|
|
||||||
soundFiles = [f for f in listdir("sounds/") if isfile(join("sounds/", f)) and (f.split('.')[1].lower() in ["ogg","wav"]) and (f.split('.')[0].lower() not in ["game-intro", "music_menu"])]
|
|
||||||
# j keeps track of last spoken index so it isn't voiced on key up.
|
|
||||||
j = -1
|
|
||||||
while loop == True:
|
|
||||||
if i != j:
|
|
||||||
speak(soundFiles[i][:-4])
|
|
||||||
j = i
|
|
||||||
event = pygame.event.wait()
|
|
||||||
if event.type == pygame.KEYDOWN:
|
|
||||||
if event.key == pygame.K_ESCAPE: return "menu"
|
|
||||||
if event.key == pygame.K_DOWN and i < len(soundFiles) - 1:
|
|
||||||
i = i + 1
|
|
||||||
if event.key == pygame.K_UP and i > 0:
|
|
||||||
i = i - 1
|
|
||||||
if event.key == pygame.K_RETURN:
|
|
||||||
try:
|
|
||||||
soundName = soundFiles[i][:-4]
|
|
||||||
sounds[soundName].play()
|
|
||||||
continue
|
|
||||||
except:
|
|
||||||
j = -1
|
|
||||||
speak("Could not play sound.")
|
|
||||||
continue
|
|
||||||
event = pygame.event.clear()
|
|
||||||
time.sleep(0.001)
|
|
||||||
|
|
||||||
def game_menu(*options):
|
|
||||||
loop = True
|
|
||||||
if pygame.mixer.music.get_busy():
|
|
||||||
pygame.mixer.music.unpause()
|
|
||||||
else:
|
|
||||||
pygame.mixer.music.load("sounds/music_menu.ogg")
|
|
||||||
pygame.mixer.music.set_volume(0.75)
|
|
||||||
pygame.mixer.music.play(-1)
|
|
||||||
i = 0
|
|
||||||
# j keeps track of last spoken index so it isn't voiced on key up.
|
|
||||||
j = -1
|
|
||||||
while loop == True:
|
|
||||||
if i != j:
|
|
||||||
speak(options[i])
|
|
||||||
j = i
|
|
||||||
event = pygame.event.wait()
|
|
||||||
if event.type == pygame.KEYDOWN:
|
|
||||||
if event.key == pygame.K_ESCAPE: exit_game()
|
|
||||||
if event.key == pygame.K_DOWN and i < len(options) - 1:
|
|
||||||
i = i + 1
|
|
||||||
if options[i] != "donate": pygame.mixer.music.unpause()
|
|
||||||
if event.key == pygame.K_UP and i > 0:
|
|
||||||
i = i - 1
|
|
||||||
if options[i] != "donate": pygame.mixer.music.unpause()
|
|
||||||
if event.key == pygame.K_RETURN:
|
|
||||||
try:
|
|
||||||
j = -1
|
|
||||||
eval(options[i] + "()")
|
|
||||||
continue
|
|
||||||
except:
|
|
||||||
j = -1
|
|
||||||
return options[i]
|
|
||||||
continue
|
|
||||||
event = pygame.event.clear()
|
|
||||||
time.sleep(0.001)
|
|
||||||
|
|
||||||
def donate():
|
|
||||||
pygame.mixer.music.pause()
|
|
||||||
subprocess.call(["xdg-open", "https://liberapay.com/stormdragon2976/donate"])
|
|
1
libstormgames
Submodule
1
libstormgames
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 1a724ada21f01103cebb503b9fbf94e9765d26c6
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from libstorm_games import *
|
from libstormgames.libstormgames import *
|
||||||
|
|
||||||
# Initial variable settings
|
# Initial variable settings
|
||||||
mode = "menu"
|
mode = "menu"
|
||||||
|
Loading…
Reference in New Issue
Block a user