
package com.tankalfa;


 


import android.graphics.*;

import java.io.*;
import com.osnova.Sprite;

 



/** не понимаеш , что написал 22.09.19
 * ну ты дал в натуре чертыла
 * @author Biverus 20.01.19
 * P.I 19.02.20
 * 31 марта мне удалось сделать так, чтобы персонажи не мигали и не копировались
 * Ура это победа моя личная Biverus 2021 год
 * сегодня 9 августа 2022 года
 */
public class Map {
 
     
    
 File f;
 InputStream is;   
 DataInputStream dis;   
int [][]m;  
 String na="1.map";
 Sprite c; 
public int op;
  Hero h1;
  Npc n,np,nn;
 
 
private int StoH=0,StoN=0,
 StoNp=0,StoSna=0,StoNN=0;

private int SnaTn=0,SnaTnn=0;
  
private Bitmap im;
private Canvas g;

// 01.11.22
 public static int W;
 public static int H;
 
 
 
 
 
//УКАЗЫВАЙ ПУТЬ И ИМЯ ВОТ ТАК "/tank.map" БЕЗ ПАПКИ "src"
public Map(Sprite c){
this.c=c;
m=new int[30][30];

W=30*c.W(c.ul);
H=30*c.H(c.ul);
  
im= Bitmap.createBitmap(W,H,Bitmap.Config.ARGB_8888);
 g=new Canvas(im);

  
 // не работает на Lg k7 
//ip= Bitmap.createBitmap(64*c.su,64*c.su,Bitmap.Config.ARGB_8888);
 //g1=new Canvas(ip);

  
  
}
 
 
 
 
 
 
 
 
 
 
 
  public Map(String n){  
  //f=new File("src/tank.map");  
 
  //this.m=m;
  //this.c=c;
 m=new int[30][30];

  try{  
    is=Map.class.getResourceAsStream(n);
      
      
     

//is=new FileInputStream(f);
    dis=new DataInputStream(is);  
    for(int i=0;i<30;i++){
    for(int j=0;j<30;j++){
 
   m[i][j]=dis.readInt();
     
 }}
      
      
   }catch(Exception ex){}  
  } 
  

  public void Map(int kv,int id){  
 
     
      
  if(id==1){    
   if(kv==1){na="1.map";}   
   if(kv==2){na="2.map";}
   if(kv==3){na="3.map";}   
   if(kv==4){na="4.map";}   
   if(kv==5){na="5.map";}   
   if(kv==6){na="6.map";}
   if(kv==7){na="7.map";}   
   if(kv==8){na="8.map";}
   if(kv==9){na="9.map";}   
   if(kv==10){na="10.map";}
   if(kv==11){na="11.map";}   
   if(kv==12){na="12.map";}} 
    
    
   if(id==2){    
   if(kv==1){na="1P.map";}   
   if(kv==2){na="2P.map";}
   if(kv==3){na="3P.map";}   
   if(kv==4){na="4P.map";}   
   if(kv==5){na="5P.map";}   
   if(kv==6){na="6P.map";}
   if(kv==7){na="7P.map";}   
   if(kv==8){na="8P.map";} 
   if(kv==9){na="9P.map";}   
   if(kv==10){na="10P.map";}
   if(kv==11){na="11P.map";}   
   if(kv==12){na="12P.map";}}


  
  try{  
    is=Map.class.getResourceAsStream("/assets/map/"+na);
      
      
     

    dis=new DataInputStream(is);  
    for(int i=0;i<30;i++){
    for(int j=0;j<30;j++){
 
   m[i][j]=dis.readInt();
     
 }}
      
      
   }catch(IOException ex){}  
  
 if(id==1){ LoadFon();}
  
  } 
  
 
  private void LoadFon(){
    
     
      
     for(int i=0;i<30;i++){
     for(int j=0;j<30;j++){
      
    
op=m[i][j];
if(op==25){continue;}



c.setFrame(op);

c.setPosition(i*c.W(c.ul), j*c.H(c.ul));
  
c.paint(g);
 
    
     }} 
    

  
 }
  
  
  
  
  

  
  
  
  public void Maps(){ 
 
 // int in=0; 
  
 for(int i=0;i<30;i++){
for(int j=0;j<30;j++){
       

 
  
 

 
 
 op =m[i][j];
 
 if(op==25){continue;}

        
 
 
c.setPosition(i*c.W(c.ul)-D.x, j*c.H(c.ul)-D.y);

  


  if(StoH==1){h1.StolkMap(c,op);}
  if(StoN==1){n.StolkMap(c, op);}
  if(StoNp==1){np.StolkMap(c, op);}
  if(StoNN==1){nn.StolkMap(c, op);}
    
  
    



  }}
  
  
  }
  
  
  
  public void MapFon(Canvas g){
    
    //  ЧТОБЫ НЕ ЖРАЛО ФПС 
  g.drawBitmap(im, 0-D.x, 0-D.y, null);

  
  }
  
  
  
  

  
  public void MapPri(Canvas g){ 
 
      
     
    
 for(int i=0;i<30;i++){
for(int j=0;j<30;j++){
    
    
op =m[i][j];

    
   
    
    
 if(op==25){continue;}

  
   c.setFrame(op);
 
   
    
 /* 
  * Чтобы изменения и 
  *  анимация работала
  * писать под setFrame если чё!   
  * if(op==15){c.setAnime(16,19,15)
;c.skAnime=20;}   
   */


c.setPosition(i*c.W(c.ul)-D.x, j*c.H(c.ul)-D.y);
 
   
c.paint(g);

  if(StoSna==1){h1.s.StolkMap(c, op);}
  if(SnaTn==1){n.SnaStolk(c, op);}
  if(SnaTnn==1){nn.SnaStolkNN(c, op);}  
        
  
  
   if(D.ba1>=1&op==2){m[i][j]=25;D.ba1=0;}   
   if(D.ba1>=2&op==4){m[i][j]=25;D.ba1=0;}
   if(D.ba1>=3&op==3){m[i][j]=25;D.ba1=0;}
   if(D.ba1>=4&op==5){m[i][j]=25;D.ba1=0;}
   if(D.ba1==5&op==1){m[i][j]=25;D.ba1=0;}
    
  
    
    
    /*
   if(D.ba2==1&op==2){m[i][j]=25;D.ba2=0;}
   if(D.ba3==1&op==3){m[i][j]=25;D.ba3=0;}
   if(D.ba4==1&op==4){m[i][j]=25;D.ba4=0;}
   if(D.ba5==1&op==5){m[i][j]=25;D.ba5=0;}
    */
 }}
  
 }
  
  
  
  
  
  
 public void add(Hero h){
 this.h1=h;
  
 StoH=1;
 StoSna=1;
 } 
  
 
 
 

 
 
   
 public void addNpc(Npc n){
 this.n=n;
 
 StoN=1; 
 SnaTn=1; 
 } 
 
 
 public void add1(Npc np){
 this.np=np;
 StoNp=1;
 
 
} 
 
  public void add2(Npc nn){
 this.nn=nn;
 StoNN=1;
 SnaTnn=1;
 
}
  
  
 /////////////// end class ///////// 
}  
  
  
  
  
  
  
  
  
  
  
  

