mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Removed alternate map rendering code
This commit is contained in:
@@ -24,8 +24,6 @@ module Settings
|
|||||||
SCREEN_HEIGHT = 384
|
SCREEN_HEIGHT = 384
|
||||||
# The default screen scale factor. Possible values are 0.5, 1.0, 1.5 and 2.0.
|
# The default screen scale factor. Possible values are 0.5, 1.0, 1.5 and 2.0.
|
||||||
SCREEN_SCALE = 1.0
|
SCREEN_SCALE = 1.0
|
||||||
# Map view mode (0=original, 1=custom, 2=perspective).
|
|
||||||
MAP_VIEW_MODE = 1
|
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
|
|||||||
@@ -244,7 +244,6 @@ class Game_Event < Game_Character
|
|||||||
|
|
||||||
def should_update?(recalc=false)
|
def should_update?(recalc=false)
|
||||||
return @to_update if !recalc
|
return @to_update if !recalc
|
||||||
return true if $PokemonSystem.tilemap==2
|
|
||||||
return true if @trigger && (@trigger == 3 || @trigger == 4)
|
return true if @trigger && (@trigger == 3 || @trigger == 4)
|
||||||
return true if @move_route_forcing
|
return true if @move_route_forcing
|
||||||
return true if @event.name[/update/i]
|
return true if @event.name[/update/i]
|
||||||
|
|||||||
@@ -148,8 +148,7 @@ class Sprite_Character < RPG::Sprite
|
|||||||
self.oy -= @character.bob_height
|
self.oy -= @character.bob_height
|
||||||
end
|
end
|
||||||
if self.visible
|
if self.visible
|
||||||
if $PokemonSystem.tilemap == 0 ||
|
if @character.is_a?(Game_Event) && @character.name[/regulartone/i]
|
||||||
(@character.is_a?(Game_Event) && @character.name[/regulartone/i])
|
|
||||||
self.tone.set(0, 0, 0, 0)
|
self.tone.set(0, 0, 0, 0)
|
||||||
else
|
else
|
||||||
pbDayNightTint(self)
|
pbDayNightTint(self)
|
||||||
|
|||||||
@@ -114,18 +114,9 @@ class Spriteset_Map
|
|||||||
tmoy = (@map.display_y/Game_Map::Y_SUBPIXELS).round
|
tmoy = (@map.display_y/Game_Map::Y_SUBPIXELS).round
|
||||||
@tilemap.ox = tmox
|
@tilemap.ox = tmox
|
||||||
@tilemap.oy = tmoy
|
@tilemap.oy = tmoy
|
||||||
if $PokemonSystem.tilemap==0 # Original Map View only, to prevent wrapping
|
|
||||||
@@viewport1.rect.x = [-tmox,0].max
|
|
||||||
@@viewport1.rect.y = [-tmoy,0].max
|
|
||||||
@@viewport1.rect.width = [@tilemap.map_data.xsize*Game_Map::TILE_WIDTH-tmox,Graphics.width].min
|
|
||||||
@@viewport1.rect.height = [@tilemap.map_data.ysize*Game_Map::TILE_HEIGHT-tmoy,Graphics.height].min
|
|
||||||
@@viewport1.ox = [-tmox,0].max
|
|
||||||
@@viewport1.oy = [-tmoy,0].max
|
|
||||||
else
|
|
||||||
@@viewport1.rect.set(0,0,Graphics.width,Graphics.height)
|
@@viewport1.rect.set(0,0,Graphics.width,Graphics.height)
|
||||||
@@viewport1.ox = 0
|
@@viewport1.ox = 0
|
||||||
@@viewport1.oy = 0
|
@@viewport1.oy = 0
|
||||||
end
|
|
||||||
@@viewport1.ox += $game_screen.shake
|
@@viewport1.ox += $game_screen.shake
|
||||||
@tilemap.update
|
@tilemap.update
|
||||||
@panorama.ox = tmox/2
|
@panorama.ox = tmox/2
|
||||||
|
|||||||
@@ -76,16 +76,8 @@ class Spriteset_Map
|
|||||||
|
|
||||||
def update
|
def update
|
||||||
return if @tilemap.disposed?
|
return if @tilemap.disposed?
|
||||||
if $PokemonSystem.tilemap==0
|
|
||||||
if self.map==$game_map
|
|
||||||
pbDayNightTint(@@viewport3)
|
|
||||||
else
|
|
||||||
@@viewport3.tone.set(0,0,0,0)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
pbDayNightTint(@tilemap)
|
pbDayNightTint(@tilemap)
|
||||||
@@viewport3.tone.set(0,0,0,0)
|
@@viewport3.tone.set(0,0,0,0)
|
||||||
end
|
|
||||||
_animationSprite_update
|
_animationSprite_update
|
||||||
for i in 0...@usersprites.length
|
for i in 0...@usersprites.length
|
||||||
@usersprites[i].update if !@usersprites[i].disposed?
|
@usersprites[i].update if !@usersprites[i].disposed?
|
||||||
|
|||||||
43
Data/Scripts/005_Sprites/013_ScreenPosHelper.rb
Normal file
43
Data/Scripts/005_Sprites/013_ScreenPosHelper.rb
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
module ScreenPosHelper
|
||||||
|
def self.pbScreenZoomX(ch)
|
||||||
|
return Game_Map::TILE_WIDTH/32.0
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.pbScreenZoomY(ch)
|
||||||
|
return Game_Map::TILE_HEIGHT/32.0
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.pbScreenX(ch)
|
||||||
|
return ch.screen_x
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.pbScreenY(ch)
|
||||||
|
return ch.screen_y
|
||||||
|
end
|
||||||
|
|
||||||
|
@heightcache={}
|
||||||
|
|
||||||
|
def self.bmHeight(bm)
|
||||||
|
h=@heightcache[bm]
|
||||||
|
if !h
|
||||||
|
bmap=AnimatedBitmap.new("Graphics/Characters/"+bm,0)
|
||||||
|
h=bmap.height
|
||||||
|
@heightcache[bm]=h
|
||||||
|
bmap.dispose
|
||||||
|
end
|
||||||
|
return h
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.pbScreenZ(ch,height=nil)
|
||||||
|
if height==nil
|
||||||
|
height=0
|
||||||
|
if ch.tile_id > 0
|
||||||
|
height=32
|
||||||
|
elsif ch.character_name!=""
|
||||||
|
height=bmHeight(ch.character_name)/4
|
||||||
|
end
|
||||||
|
end
|
||||||
|
ret=ch.screen_z(height)
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -8,18 +8,7 @@ class TilemapLoader
|
|||||||
end
|
end
|
||||||
|
|
||||||
def updateClass
|
def updateClass
|
||||||
case $PokemonSystem.tilemap
|
|
||||||
when 1 # Custom (recommended)
|
|
||||||
setClass(CustomTilemap)
|
setClass(CustomTilemap)
|
||||||
when 2 # Perspective
|
|
||||||
setClass(Draw_Tilemap)
|
|
||||||
else # Original (SynchronizedTilemap) or custom (CustomTilemap)
|
|
||||||
if Tilemap.method_defined?(:passages)
|
|
||||||
setClass(CustomTilemap)
|
|
||||||
else
|
|
||||||
setClass(SynchronizedTilemap)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def setClass(cls)
|
def setClass(cls)
|
||||||
@@ -38,7 +27,7 @@ class TilemapLoader
|
|||||||
end
|
end
|
||||||
@tilemap.dispose
|
@tilemap.dispose
|
||||||
@tilemap = newtilemap
|
@tilemap = newtilemap
|
||||||
newtilemap.update if cls!=SynchronizedTilemap
|
newtilemap.update
|
||||||
else
|
else
|
||||||
@tilemap = newtilemap
|
@tilemap = newtilemap
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -146,36 +146,6 @@ end
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
#
|
#
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Unused
|
|
||||||
def createMinimap2(mapid)
|
|
||||||
map=load_data(sprintf("Data/Map%03d.rxdata",mapid)) rescue nil
|
|
||||||
return BitmapWrapper.new(32,32) if !map
|
|
||||||
bitmap=BitmapWrapper.new(map.width*4,map.height*4)
|
|
||||||
black=Color.new(0,0,0)
|
|
||||||
bigmap=(map.width>40 && map.height>40)
|
|
||||||
tilesets=$data_tilesets
|
|
||||||
tileset=tilesets[map.tileset_id]
|
|
||||||
return bitmap if !tileset
|
|
||||||
helper=TileDrawingHelper.fromTileset(tileset)
|
|
||||||
for y in 0...map.height
|
|
||||||
for x in 0...map.width
|
|
||||||
if bigmap
|
|
||||||
next if (x>8 && x<=map.width-8 && y>8 && y<=map.height-8)
|
|
||||||
end
|
|
||||||
for z in 0..2
|
|
||||||
id=map.data[x,y,z]
|
|
||||||
next if id==0 || !id
|
|
||||||
helper.bltSmallTile(bitmap,x*4,y*4,4,4,id)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
bitmap.fill_rect(0,0,bitmap.width,1,black)
|
|
||||||
bitmap.fill_rect(0,bitmap.height-1,bitmap.width,1,black)
|
|
||||||
bitmap.fill_rect(0,0,1,bitmap.height,black)
|
|
||||||
bitmap.fill_rect(bitmap.width-1,0,1,bitmap.height,black)
|
|
||||||
return bitmap
|
|
||||||
end
|
|
||||||
|
|
||||||
def createMinimap(mapid)
|
def createMinimap(mapid)
|
||||||
map=load_data(sprintf("Data/Map%03d.rxdata",mapid)) rescue nil
|
map=load_data(sprintf("Data/Map%03d.rxdata",mapid)) rescue nil
|
||||||
return BitmapWrapper.new(32,32) if !map
|
return BitmapWrapper.new(32,32) if !map
|
||||||
@@ -1,386 +0,0 @@
|
|||||||
module ScreenPosHelper
|
|
||||||
def self.pbScreenZoomX(ch)
|
|
||||||
zoom=1.0
|
|
||||||
if $PokemonSystem.tilemap==2
|
|
||||||
zoom=((ch.screen_y - 16) - (Graphics.height / 2)) *
|
|
||||||
(Draw_Tilemap::Pitch*1.0 / (Graphics.height * 25)) + 1
|
|
||||||
end
|
|
||||||
return zoom*Game_Map::TILE_WIDTH/32.0
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.pbScreenZoomY(ch)
|
|
||||||
zoom=1.0
|
|
||||||
if $PokemonSystem.tilemap==2
|
|
||||||
zoom=((ch.screen_y - 16) - (Graphics.height / 2)) *
|
|
||||||
(Draw_Tilemap::Pitch*1.0 / (Graphics.height * 25)) + 1
|
|
||||||
end
|
|
||||||
return zoom*Game_Map::TILE_HEIGHT/32.0
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.pbScreenX(ch)
|
|
||||||
ret=ch.screen_x
|
|
||||||
if $PokemonSystem.tilemap==2
|
|
||||||
widthdiv2=(Graphics.width / 2)
|
|
||||||
ret=widthdiv2+(ret-widthdiv2)*pbScreenZoomX(ch)
|
|
||||||
end
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.pbScreenY(ch)
|
|
||||||
ret=ch.screen_y
|
|
||||||
if $PokemonSystem.tilemap==2 && Draw_Tilemap::Curve && Draw_Tilemap::Pitch != 0
|
|
||||||
zoomy=pbScreenZoomY(ch)
|
|
||||||
oneMinusZoomY=1-zoomy
|
|
||||||
ret += (8 * oneMinusZoomY * (oneMinusZoomY /
|
|
||||||
(2 * ((Draw_Tilemap::Pitch*1.0 / 100) / (Graphics.height*1.0 / 16.0))) + 0.5))
|
|
||||||
end
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
@heightcache={}
|
|
||||||
|
|
||||||
def self.bmHeight(bm)
|
|
||||||
h=@heightcache[bm]
|
|
||||||
if !h
|
|
||||||
bmap=AnimatedBitmap.new("Graphics/Characters/"+bm,0)
|
|
||||||
h=bmap.height
|
|
||||||
@heightcache[bm]=h
|
|
||||||
bmap.dispose
|
|
||||||
end
|
|
||||||
return h
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.pbScreenZ(ch,height=nil)
|
|
||||||
if height==nil
|
|
||||||
height=0
|
|
||||||
if ch.tile_id > 0
|
|
||||||
height=32
|
|
||||||
elsif ch.character_name!=""
|
|
||||||
height=bmHeight(ch.character_name)/4
|
|
||||||
end
|
|
||||||
end
|
|
||||||
ret=ch.screen_z(height)
|
|
||||||
if $PokemonSystem.tilemap==2
|
|
||||||
ret-=(pbScreenZoomY(ch) < 0.5 ? 1000 : 0)
|
|
||||||
end
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
###############################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Draw_Tilemap # This class controls a set of sprites, with
|
|
||||||
attr_reader :tileset # different Z values, arranged into horizontal bars
|
|
||||||
attr_reader :map_data
|
|
||||||
attr_reader :flash_data
|
|
||||||
attr_reader :priorities
|
|
||||||
attr_reader :terrain_tags
|
|
||||||
attr_reader :autotiles
|
|
||||||
attr_accessor :bitmaps
|
|
||||||
attr_accessor :pitch
|
|
||||||
attr_accessor :ox
|
|
||||||
attr_accessor :oy
|
|
||||||
attr_accessor :visible
|
|
||||||
attr_reader :viewport
|
|
||||||
attr_accessor :color
|
|
||||||
attr_accessor :tone
|
|
||||||
StripSize = 16
|
|
||||||
Curve = true
|
|
||||||
Pitch = 3
|
|
||||||
FlashOpacity = [100,90,80,70,80,90]
|
|
||||||
|
|
||||||
def initialize(viewport=nil)
|
|
||||||
@tileset=nil
|
|
||||||
@map_data=nil
|
|
||||||
@priorities=nil
|
|
||||||
@terrain_tags=nil
|
|
||||||
@autotiles=[nil,nil,nil,nil,nil,nil,nil]
|
|
||||||
@viewport=viewport
|
|
||||||
@visible=true
|
|
||||||
@helper=TileDrawingHelper.new(nil,@autotiles)
|
|
||||||
@drawnstrips=[]
|
|
||||||
@contentstrips=[]
|
|
||||||
@disposed=false
|
|
||||||
@bitmaps=[]
|
|
||||||
@sprites=[]
|
|
||||||
@ox=0
|
|
||||||
@oy=0
|
|
||||||
@tone=Tone.new(0,0,0,0)
|
|
||||||
@color=Color.new(0,0,0,0)
|
|
||||||
@flash_data=nil
|
|
||||||
@numsprites=0
|
|
||||||
end
|
|
||||||
|
|
||||||
def tileset=(value)
|
|
||||||
@tileset=value
|
|
||||||
@helper.tileset=value
|
|
||||||
@doredraw=true
|
|
||||||
end
|
|
||||||
|
|
||||||
def map_data=(value)
|
|
||||||
@map_data=value
|
|
||||||
@doredraw=true
|
|
||||||
end
|
|
||||||
|
|
||||||
def flash_data=(value)
|
|
||||||
@flash_data=value
|
|
||||||
@doredraw=true
|
|
||||||
end
|
|
||||||
|
|
||||||
def priorities=(value)
|
|
||||||
@priorities=value
|
|
||||||
@doredraw=true
|
|
||||||
end
|
|
||||||
|
|
||||||
def terrain_tags=(value)
|
|
||||||
@terrain_tags=value
|
|
||||||
@doredraw=true
|
|
||||||
end
|
|
||||||
|
|
||||||
def redrawmap
|
|
||||||
# Provide blank data in proper object form
|
|
||||||
self.clear
|
|
||||||
xsize=@map_data.xsize
|
|
||||||
ysize=@map_data.ysize
|
|
||||||
# Bitmaps used for each priority's drawing. Priorities 2-5 are combined.
|
|
||||||
@bitmaps = [Bitmap.new(xsize*32, ysize*32+StripSize),
|
|
||||||
Bitmap.new(xsize*32, ysize*32+StripSize),
|
|
||||||
Bitmap.new(xsize*32, ysize*32+StripSize)]
|
|
||||||
for i in @bitmaps
|
|
||||||
i.clear
|
|
||||||
end
|
|
||||||
if @flash_data
|
|
||||||
@bitmaps.push(Bitmap.new(xsize*32, ysize*32+StripSize))
|
|
||||||
end
|
|
||||||
@drawnstrips.clear
|
|
||||||
@contentstrips.clear
|
|
||||||
# Generate blank sprites
|
|
||||||
@sprites.clear
|
|
||||||
@numsprites=ysize * (32 / StripSize)
|
|
||||||
@map_data.zsize.times do # For each layer
|
|
||||||
@sprites.push([])
|
|
||||||
@contentstrips.push([])
|
|
||||||
end
|
|
||||||
if @flash_data
|
|
||||||
@sprites.push([])
|
|
||||||
@contentstrips.push([])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
|
||||||
if !@flash_data.nil? && @sprites.length>0
|
|
||||||
flashindex=@sprites.length-1
|
|
||||||
for j in 0...@numsprites
|
|
||||||
sprite=@sprites[flashindex][j]
|
|
||||||
next if !sprite.is_a?(Sprite)
|
|
||||||
sprite.opacity=FlashOpacity[(Graphics.frame_count/2) % 6]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for s in @sprites
|
|
||||||
for sprite in s
|
|
||||||
next if !sprite.is_a?(Sprite)
|
|
||||||
# sprite.tone=@tone
|
|
||||||
# sprite.color=@color
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if @doredraw
|
|
||||||
@drawnstrips=[]
|
|
||||||
redrawmap
|
|
||||||
@doredraw=false
|
|
||||||
elsif @oldOx==@ox && @oldOy==@oy
|
|
||||||
return
|
|
||||||
end
|
|
||||||
@oldOx=@ox
|
|
||||||
@oldOy=@oy
|
|
||||||
@pitch = Pitch
|
|
||||||
minvalue=[0, ((Graphics.height / 2) -
|
|
||||||
((Graphics.height * 60) / @pitch) + @oy) / StripSize].max.to_i
|
|
||||||
maxvalue=[@numsprites - 1,(@oy + Graphics.height) / StripSize].min.to_i
|
|
||||||
return if minvalue>maxvalue
|
|
||||||
for j in 0...@numsprites
|
|
||||||
if j<minvalue || j>maxvalue
|
|
||||||
for i in 0...@sprites.length
|
|
||||||
sprite=@sprites[i][j]
|
|
||||||
if sprite
|
|
||||||
sprite.dispose if sprite.is_a?(Sprite)
|
|
||||||
@sprites[i][j]=nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
drawStrip(j)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vpy=@viewport.rect.y
|
|
||||||
vpr=@viewport.rect.x+@viewport.rect.width
|
|
||||||
numsprites=0
|
|
||||||
for i in @sprites
|
|
||||||
numsprites+=i.compact.length
|
|
||||||
end
|
|
||||||
for j in minvalue..maxvalue
|
|
||||||
# For each strip within the visible screen, update OX/Y
|
|
||||||
x=Graphics.width/2
|
|
||||||
sox=@ox+x
|
|
||||||
y = (j * StripSize - @oy)
|
|
||||||
zoom_x=1.0
|
|
||||||
zoom_y=1.0
|
|
||||||
unless @pitch == 0 # Apply X Zoom
|
|
||||||
zoom_x = (y - Graphics.height*1.0 / 2) * (@pitch*1.0 / (Graphics.height * 25)) + 1
|
|
||||||
if Curve # Zoom Y values same as X, and compensate
|
|
||||||
zoom_y = zoom_x
|
|
||||||
yadd = StripSize*1.0 * (1 - zoom_y) * ((1 - zoom_y) /
|
|
||||||
(2 * ((@pitch*1.0 / 100) / (Graphics.height*1.0 / (StripSize * 2)))) + 0.5)
|
|
||||||
y+=yadd
|
|
||||||
end
|
|
||||||
end
|
|
||||||
xstart=(x-sox*zoom_x)
|
|
||||||
yend=(y+(StripSize*2)*zoom_y)
|
|
||||||
if xstart>vpr || yend<=vpy
|
|
||||||
for i in 0...@sprites.length
|
|
||||||
sprite=@sprites[i][j]
|
|
||||||
if sprite.is_a?(Sprite)
|
|
||||||
sprite.dispose
|
|
||||||
@sprites[i][j]=nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
for i in 0...@sprites.length
|
|
||||||
sprite=@sprites[i][j]
|
|
||||||
next if !sprite
|
|
||||||
if sprite==true
|
|
||||||
sprite=newSprite(i,j)
|
|
||||||
@sprites[i][j]=sprite
|
|
||||||
end
|
|
||||||
sprite.visible=@visible
|
|
||||||
sprite.x = x
|
|
||||||
sprite.ox = sox
|
|
||||||
sprite.y = y
|
|
||||||
sprite.zoom_x = zoom_x
|
|
||||||
sprite.zoom_y = zoom_y
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def clear
|
|
||||||
for i in @bitmaps
|
|
||||||
i.dispose
|
|
||||||
end
|
|
||||||
@bitmaps.clear
|
|
||||||
for i in 0...@sprites.length
|
|
||||||
for j in 0...@sprites[i].length
|
|
||||||
@sprites[i][j].dispose if @sprites[i][j].is_a?(Sprite)
|
|
||||||
end
|
|
||||||
@sprites[i].clear
|
|
||||||
end
|
|
||||||
@sprites.clear
|
|
||||||
end
|
|
||||||
|
|
||||||
def dispose
|
|
||||||
return if @disposed
|
|
||||||
self.clear
|
|
||||||
for i in 0...7
|
|
||||||
self.autotiles[i]=nil
|
|
||||||
end
|
|
||||||
@helper=nil
|
|
||||||
@sprites=nil
|
|
||||||
@bitmaps=nil
|
|
||||||
@disposed = true
|
|
||||||
end
|
|
||||||
|
|
||||||
def disposed?
|
|
||||||
return @disposed
|
|
||||||
end
|
|
||||||
|
|
||||||
def newSprite(i,j)
|
|
||||||
sprite=Sprite.new(@viewport)
|
|
||||||
sprite.bitmap=@bitmaps[i]
|
|
||||||
sprite.src_rect.set(0, j * StripSize, @map_data.xsize * 32, StripSize * 2)
|
|
||||||
sprite.x = Graphics.width / 2
|
|
||||||
sprite.y = -64
|
|
||||||
sprite.z = (i * 32)
|
|
||||||
sprite.tone=@tone
|
|
||||||
sprite.color=@color
|
|
||||||
if i==@bitmaps.length-1 && !@flash_data.nil?
|
|
||||||
sprite.blend_type=1
|
|
||||||
sprite.z=1
|
|
||||||
sprite.opacity=FlashOpacity[(Graphics.frame_count/2) % 6]
|
|
||||||
end
|
|
||||||
return sprite
|
|
||||||
end
|
|
||||||
|
|
||||||
def drawStrip(j)
|
|
||||||
minY=(j*StripSize)/32
|
|
||||||
maxY=(j*StripSize+StripSize*2)/32
|
|
||||||
minY=0 if minY<0
|
|
||||||
minY=@map_data.ysize-1 if minY>@map_data.ysize-1
|
|
||||||
maxY=0 if maxY<0
|
|
||||||
maxY=@map_data.ysize-1 if maxY>@map_data.ysize-1
|
|
||||||
for y in minY..maxY
|
|
||||||
if !@drawnstrips[y]
|
|
||||||
for x in 0...@map_data.xsize
|
|
||||||
draw_position(x, y)
|
|
||||||
end
|
|
||||||
@drawnstrips[y]=true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for i in 0...@sprites.length # For each priority
|
|
||||||
sprite=@sprites[i][j]
|
|
||||||
if !sprite || (sprite!=true && sprite.disposed?)
|
|
||||||
havecontent=false
|
|
||||||
for y in minY..maxY
|
|
||||||
havecontent=havecontent||@contentstrips[i][y]
|
|
||||||
end
|
|
||||||
sprite=(havecontent) ? true : nil
|
|
||||||
@sprites[i][j]=sprite
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def draw_position(x, y)
|
|
||||||
for layer in 0...@map_data.zsize
|
|
||||||
pos = @map_data[x, y, layer]
|
|
||||||
priopos=@priorities[pos]
|
|
||||||
priopos=0 if !priopos
|
|
||||||
prio=(2<priopos) ? 2 : priopos
|
|
||||||
@contentstrips[prio][y]=true if pos>0
|
|
||||||
@helper.bltTile(@bitmaps[prio],x*32,y*32,pos,0)
|
|
||||||
end
|
|
||||||
if !@flash_data.nil?
|
|
||||||
lastlayer=@bitmaps.length-1
|
|
||||||
id=@flash_data[x,y,0]
|
|
||||||
r=(id>>8)&15
|
|
||||||
g=(id>>4)&15
|
|
||||||
b=(id)&15
|
|
||||||
@contentstrips[lastlayer][y]=true
|
|
||||||
color=Color.new(r*16,g*16,b*16)
|
|
||||||
@bitmaps[lastlayer].fill_rect(x*32,y*32,32,32,color)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Sprite_Character
|
|
||||||
alias perspectivetilemap_initialize initialize
|
|
||||||
attr_accessor :character
|
|
||||||
|
|
||||||
def initialize(viewport, character = nil)
|
|
||||||
@character = character
|
|
||||||
perspectivetilemap_initialize(viewport,character)
|
|
||||||
end
|
|
||||||
|
|
||||||
alias update_or :update
|
|
||||||
|
|
||||||
def update
|
|
||||||
update_or
|
|
||||||
if $PokemonSystem.tilemap==2
|
|
||||||
self.zoom_y=ScreenPosHelper.pbScreenZoomY(@character)
|
|
||||||
self.zoom_x=ScreenPosHelper.pbScreenZoomX(@character)
|
|
||||||
self.x=ScreenPosHelper.pbScreenX(@character)
|
|
||||||
self.y=ScreenPosHelper.pbScreenY(@character)
|
|
||||||
self.z=ScreenPosHelper.pbScreenZ(@character,@ch)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
#===============================================================================
|
|
||||||
#
|
|
||||||
#===============================================================================
|
|
||||||
class SynchronizedTilemapAutotilesInternal
|
|
||||||
def initialize(oldat)
|
|
||||||
@atdisposables = [[],[],[],[],[],[],[]]
|
|
||||||
@atframes = [[],[],[],[],[],[],[]]
|
|
||||||
@atframe = [-1,-1,-1,-1,-1,-1,-1]
|
|
||||||
@autotiles = []
|
|
||||||
@oldat = oldat
|
|
||||||
end
|
|
||||||
|
|
||||||
def dispose
|
|
||||||
for i in 0...7
|
|
||||||
for bitmap in @atdisposables[i]
|
|
||||||
bitmap.dispose
|
|
||||||
end
|
|
||||||
@atdisposables[i].clear
|
|
||||||
@atframes[i].clear
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def [](i)
|
|
||||||
return @autotiles[i]
|
|
||||||
end
|
|
||||||
|
|
||||||
def []=(i,value)
|
|
||||||
for frame in @atdisposables[i]
|
|
||||||
frame.dispose
|
|
||||||
end
|
|
||||||
@atframe[i] = -1
|
|
||||||
@atframes[i].clear
|
|
||||||
@atdisposables[i].clear
|
|
||||||
if value && !value.disposed?
|
|
||||||
if value.height==32
|
|
||||||
frames = value.width/32
|
|
||||||
for j in 0...frames
|
|
||||||
@atdisposables[i][j] = Bitmap.new(32,32)
|
|
||||||
@atdisposables[i][j].blt(0,0,value,Rect.new(j*32,0,32,32))
|
|
||||||
@atframes[i][j] = @atdisposables[i][j]
|
|
||||||
end
|
|
||||||
elsif value.height==128
|
|
||||||
frames = value.width/96
|
|
||||||
for j in 0...frames
|
|
||||||
@atdisposables[i][j] = Bitmap.new(96,128)
|
|
||||||
@atdisposables[i][j].blt(0,0,value,Rect.new(j*96,0,96,128))
|
|
||||||
@atframes[i][j] = @atdisposables[i][j]
|
|
||||||
end
|
|
||||||
else
|
|
||||||
@atframes[i][0] = value
|
|
||||||
end
|
|
||||||
else
|
|
||||||
@atframes[i][0] = value
|
|
||||||
end
|
|
||||||
@autotiles[i] = value
|
|
||||||
sync
|
|
||||||
end
|
|
||||||
|
|
||||||
def sync
|
|
||||||
for i in 0...7
|
|
||||||
frames = [1,@atframes[i].length].max
|
|
||||||
frame = (Graphics.frame_count/15)%frames
|
|
||||||
if frames>1 && @atframe[i]!=frame
|
|
||||||
@oldat[i] = @atframes[i][frame]
|
|
||||||
@atframe[i] = frame
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SynchronizedTilemapAutotiles
|
|
||||||
def initialize(autotiles)
|
|
||||||
@autotiles = autotiles
|
|
||||||
end
|
|
||||||
|
|
||||||
def [](i)
|
|
||||||
return @autotiles[i]
|
|
||||||
end
|
|
||||||
|
|
||||||
def []=(i,value)
|
|
||||||
@autotiles[i] = value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SynchronizedTilemap < Tilemap
|
|
||||||
# This class derives from Tilemap just to synchronize
|
|
||||||
# the tilemap animation.
|
|
||||||
attr_accessor :numupdates
|
|
||||||
|
|
||||||
def initialize(viewport=nil)
|
|
||||||
super(viewport)
|
|
||||||
@updating = true
|
|
||||||
@autotiles = SynchronizedTilemapAutotilesInternal.new(self.autotiles)
|
|
||||||
@autos = SynchronizedTilemapAutotiles.new(@autotiles)
|
|
||||||
@updating = false
|
|
||||||
end
|
|
||||||
|
|
||||||
def dispose
|
|
||||||
@autotiles.dispose
|
|
||||||
super
|
|
||||||
end
|
|
||||||
|
|
||||||
def autotiles
|
|
||||||
return @autos if !@updating
|
|
||||||
super
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
|
||||||
return if disposed?
|
|
||||||
@autotiles.sync
|
|
||||||
super
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -27,8 +27,6 @@ class PokemonSystem
|
|||||||
@sevolume = 100 # Volume of sound effects
|
@sevolume = 100 # Volume of sound effects
|
||||||
@textinput = 0 # Text input mode (0=cursor, 1=keyboard)
|
@textinput = 0 # Text input mode (0=cursor, 1=keyboard)
|
||||||
end
|
end
|
||||||
|
|
||||||
def tilemap; return Settings::MAP_VIEW_MODE; end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user