proper star animations
--HG-- branch : vssg
This commit is contained in:
parent
fcb7f7fcec
commit
65cd7de4b1
4 changed files with 72 additions and 45 deletions
17
gametimer.py
17
gametimer.py
|
@ -1,5 +1,18 @@
|
||||||
def timer_elapsed():
|
import pygame
|
||||||
|
|
||||||
|
def start_loop():
|
||||||
|
global g_timer, g_elapsed
|
||||||
|
g_elapsed = 0
|
||||||
|
g_timer = pygame.time.get_ticks()
|
||||||
|
|
||||||
|
def next_frame():
|
||||||
|
global g_timer, g_elapsed
|
||||||
|
newticks = pygame.time.get_ticks()
|
||||||
|
g_elapsed = newticks - g_timer
|
||||||
|
g_timer = newticks
|
||||||
|
|
||||||
|
def elapsed():
|
||||||
"""
|
"""
|
||||||
get the amount of time passed since the last frame was displayed
|
get the amount of time passed since the last frame was displayed
|
||||||
"""
|
"""
|
||||||
return get_
|
return g_elapsed
|
||||||
|
|
57
starmap.py
57
starmap.py
|
@ -1,12 +1,20 @@
|
||||||
import math
|
import math
|
||||||
import pygame
|
import pygame
|
||||||
import random
|
import random
|
||||||
|
import gametimer
|
||||||
|
|
||||||
class Galaxy(object):
|
class Galaxy(object):
|
||||||
def __init__(self, width, height):
|
def __init__(self, width, height):
|
||||||
self.starmap = [[[] for x in range(width)] for x in range(height)]
|
self.starmap = [[[] for x in range(width)] for x in range(height)]
|
||||||
self.starlist = []
|
self.starlist = []
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
for star in self.get_all_stars():
|
||||||
|
star.update()
|
||||||
|
def draw(self, scr):
|
||||||
|
for star in self.get_all_stars():
|
||||||
|
star.draw(scr)
|
||||||
|
|
||||||
def add_star(self, star):
|
def add_star(self, star):
|
||||||
self.starlist.append(star)
|
self.starlist.append(star)
|
||||||
self.starmap[int(star.y / 100)][int(star.x / 100)].append(star)
|
self.starmap[int(star.y / 100)][int(star.x / 100)].append(star)
|
||||||
|
@ -51,16 +59,25 @@ class StarSys(object):
|
||||||
self.habitat = habitat
|
self.habitat = habitat
|
||||||
self.minerals = minerals
|
self.minerals = minerals
|
||||||
def draw(self, surf):
|
def draw(self, surf):
|
||||||
frame = random.random()
|
self.startype.draw(surf, int(self.x / 10), int(self.y / 10), self.frame)
|
||||||
if frame > 0.5:
|
def update(self):
|
||||||
frame = 1
|
#if self.startype.size == "Dwarf" and self.startype.color == "White":
|
||||||
else:
|
#print gametimer.elapsed()
|
||||||
frame = 2
|
#print self.frame_timer
|
||||||
self.startype.draw(surf, int(self.x / 10), int(self.y / 10), frame)
|
#print self.frame_timer - gametimer.elapsed()
|
||||||
|
#print self.delays
|
||||||
|
#sys.exit(0)
|
||||||
|
self.frame_timer -= gametimer.elapsed()
|
||||||
|
while self.frame_timer <= 0:
|
||||||
|
self.frame_timer += self.delays[self.frame]
|
||||||
|
self.frame += 1
|
||||||
|
if self.frame >= len(self.delays):
|
||||||
|
self.frame = 0
|
||||||
|
|
||||||
def set_frame_timers(self, show1, show2):
|
def set_frame_timers(self, delays):
|
||||||
self.show1 = show1
|
self.delays = [int(x * 1000) for x in delays]
|
||||||
self.show2 = show2
|
self.frame_timer = self.delays[0]
|
||||||
|
self.frame = 0
|
||||||
|
|
||||||
class StarClass(object):
|
class StarClass(object):
|
||||||
def __init__(self, name, color, size, habitat_mod, minerals_mod):
|
def __init__(self, name, color, size, habitat_mod, minerals_mod):
|
||||||
|
@ -69,23 +86,15 @@ class StarClass(object):
|
||||||
self.size = size
|
self.size = size
|
||||||
self.habitat_mod = habitat_mod
|
self.habitat_mod = habitat_mod
|
||||||
self.minerals_mod = minerals_mod
|
self.minerals_mod = minerals_mod
|
||||||
self.png1 = None
|
self.frames = None
|
||||||
self.png2 = None
|
|
||||||
|
|
||||||
def draw(self, surf, x, y, frame):
|
def draw(self, surf, x, y, frame):
|
||||||
if self.png1 == None:
|
if self.frames == None:
|
||||||
self.png1 = pygame.image.load('img/%s_%s1.png' % (self.color.lower(), self.size.lower()))
|
self.frames = [pygame.image.load('img/%s_%s%d.png' % (self.color.lower(), self.size.lower(), i+1)) for i in range(2)]
|
||||||
self.png1.convert_alpha(surf)
|
for png in self.frames:
|
||||||
self.png2 = pygame.image.load('img/%s_%s2.png' % (self.color.lower(), self.size.lower()))
|
png.convert_alpha(surf)
|
||||||
self.png2.convert_alpha(surf)
|
dest = self.frames[frame].get_rect()
|
||||||
if frame == 1:
|
|
||||||
dest = self.png1.get_rect()
|
|
||||||
dest.x = x - (dest.w / 2) + 1
|
dest.x = x - (dest.w / 2) + 1
|
||||||
dest.y = y - (dest.h / 2) + 1
|
dest.y = y - (dest.h / 2) + 1
|
||||||
surf.blit(self.png1, dest)
|
surf.blit(self.frames[frame], dest)
|
||||||
else:
|
|
||||||
dest = self.png2.get_rect()
|
|
||||||
dest.x = x - (dest.w / 2) + 1
|
|
||||||
dest.y = y - (dest.h / 2) + 1
|
|
||||||
surf.blit(self.png2, dest)
|
|
||||||
|
|
|
@ -122,21 +122,24 @@ def starmap_generate():
|
||||||
if i >= numstars:
|
if i >= numstars:
|
||||||
break
|
break
|
||||||
|
|
||||||
if i != 0:
|
|
||||||
mindist = max(175.0, (mapx + mapy) / 2.0 * 100.0 / ((i + 1)**0.75*0.75))
|
|
||||||
|
|
||||||
x = (random.random() * mapx) + 1
|
x = (random.random() * mapx) + 1
|
||||||
y = (random.random() * mapy) + 1
|
y = (random.random() * mapy) + 1
|
||||||
x *= 100
|
x *= 100
|
||||||
y *= 100
|
y *= 100
|
||||||
|
|
||||||
if mindist != None and False:
|
if i != 0 and mindist == None:
|
||||||
|
mindist = max(125.0, (1000.0 / params.density), (mapx + mapy) / 2.0 * 100.0 / ((i + 1)*0.75))
|
||||||
|
|
||||||
|
if mindist != None:
|
||||||
star = map.get_nearest_star(x, y)
|
star = map.get_nearest_star(x, y)
|
||||||
dist = map.get_distance(x, y, star.x, star.y)
|
dist = map.get_distance(x, y, star.x, star.y)
|
||||||
if dist < mindist:
|
if dist < mindist:
|
||||||
print "Dist (%s, %s): %s, Mindist (%s, %s): %s" % (star.x, star.y, dist, int(x), int(y), mindist)
|
print "Dist (%s, %s): %s, Mindist (%s, %s): %s" % (star.x, star.y, dist, int(x), int(y), mindist)
|
||||||
|
mindist -= 2
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
mindist = None
|
||||||
|
|
||||||
loopcount = 0
|
loopcount = 0
|
||||||
startype = None
|
startype = None
|
||||||
while True:
|
while True:
|
||||||
|
@ -164,7 +167,7 @@ def starmap_generate():
|
||||||
print "Generated star %s %s %s at (%s, %s)" % (startype.name, hab, min, int(x), int(y))
|
print "Generated star %s %s %s at (%s, %s)" % (startype.name, hab, min, int(x), int(y))
|
||||||
|
|
||||||
star = StarSys(int(x), int(y), startype, hab, min)
|
star = StarSys(int(x), int(y), startype, hab, min)
|
||||||
star.set_frame_timers(0.1 + (random.random() * 2), 0.1 + (random.random() * 2))
|
star.set_frame_timers([0.6 + (random.random() * 1.5), 0.6 + (random.random() * 1.5)])
|
||||||
map.add_star(star)
|
map.add_star(star)
|
||||||
|
|
||||||
i += 1
|
i += 1
|
||||||
|
|
20
vssg.py
20
vssg.py
|
@ -8,6 +8,7 @@ import math
|
||||||
import random
|
import random
|
||||||
import starmap
|
import starmap
|
||||||
import starmap_gen
|
import starmap_gen
|
||||||
|
import gametimer
|
||||||
from ocempgui.widgets import *
|
from ocempgui.widgets import *
|
||||||
from ocempgui.widgets.Constants import *
|
from ocempgui.widgets.Constants import *
|
||||||
|
|
||||||
|
@ -88,9 +89,9 @@ def screen_mainmenu():
|
||||||
re.title = "vssg 0.1 - Very Simple Space Game"
|
re.title = "vssg 0.1 - Very Simple Space Game"
|
||||||
re.color = (40,0,70)
|
re.color = (40,0,70)
|
||||||
|
|
||||||
b_start = Button("Start Game")
|
b_start = Button("#Start Game")
|
||||||
b_options = Button("Options")
|
b_options = Button("#Options")
|
||||||
b_quit = Button("Quit")
|
b_quit = Button("#Quit")
|
||||||
blist = [b_start, b_options, b_quit]
|
blist = [b_start, b_options, b_quit]
|
||||||
totheight = (b_start.height * len(blist)) + (5 * (len(blist) - 1))
|
totheight = (b_start.height * len(blist)) + (5 * (len(blist) - 1))
|
||||||
maxwidth = 0
|
maxwidth = 0
|
||||||
|
@ -169,9 +170,9 @@ def screen_options():
|
||||||
btnframe = HFrame()
|
btnframe = HFrame()
|
||||||
btnframe.border = BORDER_NONE
|
btnframe.border = BORDER_NONE
|
||||||
btnframe.spacing = 5
|
btnframe.spacing = 5
|
||||||
b_ok = Button("OK")
|
b_ok = Button("#OK")
|
||||||
b_apply = Button("Apply")
|
b_apply = Button("#Apply")
|
||||||
b_cancel = Button("Cancel")
|
b_cancel = Button("#Cancel")
|
||||||
b_ok.connect_signal(SIG_CLICKED, btn_ok)
|
b_ok.connect_signal(SIG_CLICKED, btn_ok)
|
||||||
b_apply.connect_signal(SIG_CLICKED, btn_apply)
|
b_apply.connect_signal(SIG_CLICKED, btn_apply)
|
||||||
b_cancel.connect_signal(SIG_CLICKED, btn_cancel)
|
b_cancel.connect_signal(SIG_CLICKED, btn_cancel)
|
||||||
|
@ -186,9 +187,11 @@ def screen_options():
|
||||||
|
|
||||||
|
|
||||||
guiscreen = screen_mainmenu()
|
guiscreen = screen_mainmenu()
|
||||||
|
gametimer.start_loop()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
events = pygame.event.get()
|
events = pygame.event.get()
|
||||||
|
gametimer.next_frame()
|
||||||
|
|
||||||
if guiscreen != None:
|
if guiscreen != None:
|
||||||
for ev in events:
|
for ev in events:
|
||||||
|
@ -218,9 +221,8 @@ while True:
|
||||||
break
|
break
|
||||||
|
|
||||||
handle_keys(keys)
|
handle_keys(keys)
|
||||||
|
map.update()
|
||||||
for star in map.get_all_stars():
|
map.draw(scr)
|
||||||
star.draw(scr)
|
|
||||||
|
|
||||||
|
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
|
|
Loading…
Add table
Reference in a new issue