Ejemplo n.º 1
0
    public void initFromSaveData(DgInformationData data,PlayerData playerdata)
    {
        //Debug.Log(data.CurrentDgParameter.ItemDetectionPowers[0]);
        CurrentDungeonParameter = data.CurrentDgParameter.toDgParameter(); ;
        CurrentFloor = new Floor(data.CurrenFloor);
        CurrentFloorNumber = data.CurrentFloorNumber;
        CurrentRank = data.CurrentRank;
        CurrentTurnCount = data.CurrentTurnCount;
        TotalTurnCount = data.TotalTurnCount;
        List<Floor> floors = new List<Floor>();
        foreach (FloorData floor in data.GeneratedFloors) {
            floors.Add(new Floor(floor));
        }
        GeneratedFloors = floors.ToArray();
        CurrentFloorIndex = data.CurrentFloorIndex;
        StairsPosition = data.StairsPosition;
        BookUnknownNames = data.BookNames;
        CaneUnknownNames = data.CaneNames;
        PotUnknownNames = data.PotNames;
        PotionUnknownNames = data.PotionNames;
        BangleUnknownNames = data.BangleNames;
        CurrentShopMode = data.CurrentShopMode;
        CurrentDungeonParameter.DistributionTable.setUnknownItemName(BookUnknownNames);
        CurrentDungeonParameter.DistributionTable.setUnknownItemName(CaneUnknownNames);
        CurrentDungeonParameter.DistributionTable.setUnknownItemName(PotUnknownNames);
        CurrentDungeonParameter.DistributionTable.setUnknownItemName(PotionUnknownNames);
        CurrentDungeonParameter.DistributionTable.setUnknownItemName(BangleUnknownNames);
        // 鑑定力に応じた鑑定状態のセットをできるようにする
        setInitalDetectionLevel();
        for (int i = 0; i < data.ItemTypeStrs.Length; i++) {
            updateItemDetectionLevel(Type.GetType(data.ItemTypeStrs[i]), data.DLevels[i]);
        }
        foreach (ItemEntityData item in data.Items) {
            ObjectEntityFactory.enableItemEntityFromSavedata(item, CurrentDungeonParameter.DistributionTable.ItemTable);
        }
        foreach (TrapEntityData trap in data.Traps) ObjectEntityFactory.enableTrapEntityFromSavedata(trap);
        Dictionary<MyCharacterController,CharacterEntityData> dic = new Dictionary<MyCharacterController,CharacterEntityData>();
        foreach (CharacterEntityData enemy in data.Enemys) {
            var entity = ObjectEntityFactory.enableCharacterEntityFromSaveData(enemy);
            if(entity != null && enemy != null)dic.Add(entity,enemy);
        }
        foreach (MyCharacterController enemy in Enemys) {
            var find = Array.FindAll(data.Enemys, e => Array.Exists(dic[enemy].AttackerLog, log => log == e.DataID)).ToList();
            foreach (var pair in dic) {
                if (find.Exists(f => f.DataID == pair.Value.DataID)) {
                    enemy.AttackerLog.push(pair.Key);
                }
            }
            if (Array.Exists(dic[enemy].AttackerLog, log => log == playerdata.EntityData.DataID)) {
                int index = Array.IndexOf(dic[enemy].AttackerLog, playerdata.EntityData.DataID);
                enemy.AttackerLog.Insert(index, GameController.MainPlayer);
            }

            int idx = 0;
            foreach (var log in enemy.AttackerLog) {
                Debug.logger.Log(enemy.name, string.Format("[{0}]:{1}", idx++, log.name));
            }
        }

        MoveResevationList = new Deque<EnemyController>();
        //AttackResevationList = new Stack<EnemyController>();
        GameController.PlayerUIController.setFloorNum(CurrentFloorNumber);
        ListOfUnpaidCommodityWhichNotExistOnFiled = new List<ItemBasis>();
        foreach (ItemData item in data.ListOfUnpaidCommodityWhichNotExistOnFiled) {
         ListOfUnpaidCommodityWhichNotExistOnFiled.Add(item.toItem());
        }
        int xm = (int)CurrentFloor.Size.x;
        int ym = (int)CurrentFloor.Size.y;
        TileTypeTable = new TileBasis.TileType[xm][];
        //GameController.PlayingLogger.addLogFormat("{0} {1}",xm,ym);
        for (int x = 0; x < xm; x++) {
            var ys = data.TileTypeTable.Skip(x * ym).Take(ym).ToArray();
            //GameController.PlayingLogger.addLogFormat("{0} {1}", x * ym, ys);
            TileTypeTable[x] = ys;
        }
    }
Ejemplo n.º 2
0
 public void init(DungeonParameter param)
 {
     CurrentDungeonParameter = param;
     CurrentTurnCount = 0;
     TotalTurnCount = 0;
     Enemys = new List<MyCharacterController>();
     Items = new List<ItemEntity>();
     Traps = new List<TrapEntity>();
     createUnknownItemNameTable(param.DistributionTable);
     param.DistributionTable.setUnknownItemName(BookUnknownNames);
     param.DistributionTable.setUnknownItemName(CaneUnknownNames);
     param.DistributionTable.setUnknownItemName(PotUnknownNames);
     param.DistributionTable.setUnknownItemName(PotionUnknownNames);
     param.DistributionTable.setUnknownItemName(BangleUnknownNames);
     ItemDetectionLevelTable = new Dictionary<Type, ItemBasis.DetectionLevel>();
     setInitalDetectionLevel();
     MoveResevationList = new Deque<EnemyController>();
     GameController.PlayerUIController.setFloorNum(CurrentFloorNumber);
     ListOfUnpaidCommodityWhichNotExistOnFiled = new List<ItemBasis>();
     TileTypeTable = new TileBasis.TileType[(int)param.MaxMapSize.x][];
     for (int x = 0; x < TileTypeTable.GetLength(0); x++) {
         TileTypeTable[x] = new TileBasis.TileType[(int)param.MaxMapSize.y];
         for (int y = 0; y < (int)param.MaxMapSize.y; y++)
         {
             TileTypeTable[x][y] = TileBasis.TileType.UNBREAKABLEWALL;
         }
     }
 }
Ejemplo n.º 3
0
 public void init(TileBasis tile,DungeonParameter dgparam)
 {
     //Debug.Log(tile.Type);
     Type = tile.Type;
     string newtag = "";
     //Sprite newsprite = null;
     switch (Type)
     {
         case TileBasis.TileType.ROAD:
             newtag = TagList.Road;
             SpriteRenderer.sprite = dgparam!=null? dgparam.CurrentRoadSprite:GameSkins.getTileSprite(TileBasis.TileType.ROAD,0);
             break;
         case TileBasis.TileType.WALL:
             newtag = TagList.Wall;
             SpriteRenderer.sprite = dgparam != null ? dgparam.CurrentWallSprite : GameSkins.getTileSprite(TileBasis.TileType.WALL,0); ;
             break;
         case TileBasis.TileType.WATERWAY:
             newtag = TagList.Wall;
             SpriteRenderer.sprite = dgparam != null ? dgparam.CurrentWaterWaySprite : GameSkins.getTileSprite(TileBasis.TileType.WATERWAY,0); ;
             break;
         case TileBasis.TileType.UNBREAKABLEWALL:
             newtag = TagList.Wall;
             SpriteRenderer.sprite = dgparam != null ? dgparam.CurrentWallSprite : GameSkins.getTileSprite(TileBasis.TileType.WALL, 0); ;
             break;
     }
     Entity = tile;
     this.transform.tag = newtag;
     SpriteRenderer.sortingLayerName = newtag;
     gameObject.layer = LayerMask.NameToLayer(newtag);
     this.name = Type.ToString();
 }
Ejemplo n.º 4
0
    public void changeTileType(TileBasis.TileType newtype, string parentname, int spritenumber)
    {
        Type = newtype;
        TileBasis tile = road;
        string newtag = "";
        string layername = "";
        //Sprite newsprite = null;
        switch (newtype)
        {
            case TileBasis.TileType.ROAD:
                tile = road;
                newtag = TagList.Road;
                layername = newtag;
                break;
            case TileBasis.TileType.WALL:
                tile = wall;
                newtag = TagList.Wall;
                layername = newtag;
                break;
            case TileBasis.TileType.WATERWAY:
                tile = waterway;
                newtag = TagList.WaterWay;
                layername = newtag;
                break;
            case TileBasis.TileType.OVERLAPROAD:
                tile = road;
                newtag = TagList.Road;
                layername = TagList.OverlapRoad;
                break;
            case TileBasis.TileType.UNBREAKABLEWALL:
                tile = wall;
                newtag = TagList.Wall;
                layername = newtag;
                break;
        }
        //Debug.Log(newsprite.name);
        //Debug.LogFormat("{0}",newtype);
        Entity = tile;
        this.transform.tag = newtag;
        SpriteRenderer.sprite = GameSkins.getTileSprite(parentname,spritenumber);
        SpriteRenderer.sortingLayerName = layername;
        gameObject.layer = LayerMask.NameToLayer(newtag);
        this.name = Entity.Name + (newtype == TileBasis.TileType.OVERLAPROAD ? @"(Overlap)" : ""); ;

        //throw new NotImplementedException();
    }
Ejemplo n.º 5
0
 public void changeTileType(TileBasis.TileType newtype, int spritenumber)
 {
     Type = newtype;
     TileBasis tile = road;
     string newtag = "";
     Sprite newsprite = null;
     string layername = "";
     switch (newtype) {
         case TileBasis.TileType.ROAD:
             tile = road;
             newtag = TagList.Road;
             //Debug.LogFormat("B:{0}:{1},{2}", newtype, spritenumber, GameSkins.RoadSprites.Length);
             spritenumber = spritenumber > GameSkins.RoadSprites.Length ? 0 : spritenumber;
             //Debug.LogFormat("A:{0}:{1},{2}", newtype, spritenumber, GameSkins.RoadSprites.Length);
             newsprite = GameSkins.RoadSprites[spritenumber];
             layername = newtag;
             break;
         case TileBasis.TileType.WALL:
             tile = wall;
             newtag = TagList.Wall;
             spritenumber = spritenumber > GameSkins.WallSprites.Length ? 0 : spritenumber;
             newsprite = GameSkins.WallSprites[spritenumber];
             layername = newtag;
             break;
         case TileBasis.TileType.WATERWAY:
             tile = waterway;
             newtag = TagList.WaterWay;
             spritenumber = spritenumber > GameSkins.WaterWaySprites.Length ? 0 : spritenumber;
             newsprite = GameSkins.WaterWaySprites[spritenumber];
             layername = newtag;
             break;
         case TileBasis.TileType.OVERLAPROAD:
             tile = road;
             newtag = TagList.Road;
             //Debug.LogFormat("B:{0}:{1},{2}", newtype, spritenumber, GameSkins.RoadSprites.Length);
             spritenumber = spritenumber > GameSkins.RoadSprites.Length ? 0 : spritenumber;
             //Debug.LogFormat("A:{0}:{1},{2}", newtype, spritenumber, GameSkins.RoadSprites.Length);
             newsprite = GameSkins.RoadSprites[spritenumber];
             layername = TagList.OverlapRoad;
             break;
         case TileBasis.TileType.UNBREAKABLEWALL:
             tile = wall;
             newtag = TagList.Wall;
             spritenumber = spritenumber > GameSkins.WallSprites.Length ? 0 : spritenumber;
             newsprite = GameSkins.WallSprites[spritenumber];
             layername = newtag;
             break;
     }
     Debug.Log(newsprite.name);
     Entity = tile;
     this.transform.tag = newtag;
     SpriteRenderer.sprite = newsprite;
     SpriteRenderer.sortingLayerName = layername;
     gameObject.layer = LayerMask.NameToLayer(newtag);
     this.name = Type.ToString();  //Entity.Name + (newtype == TileBasis.TileType.OVERLAPROAD?@"(Overlap)":"");
 }
Ejemplo n.º 6
0
 public void changeTileType(TileBasis.TileType newtype, DungeonParameter dgparam)
 {
     switch (newtype)
     {
         case TileBasis.TileType.ROAD:
             init(road,dgparam);
             //newtag = TagList.Road;
             break;
         case TileBasis.TileType.WALL:
             init(wall,dgparam);
             //newtag = TagList.Wall;
             break;
         case TileBasis.TileType.WATERWAY:
             init(waterway,dgparam);
             //newtag = TagList.Wall;
             break;
         case TileBasis.TileType.OVERLAPROAD:
             init(road, dgparam);
             string newtag = TagList.Road;
             this.transform.tag = newtag;
             SpriteRenderer.sortingLayerName = TagList.OverlapRoad;
             gameObject.layer = LayerMask.NameToLayer(newtag);
             //this.name += @"(Overlap)";
             break;
         case TileBasis.TileType.UNBREAKABLEWALL:
             init(wall, dgparam);
             Type = TileBasis.TileType.UNBREAKABLEWALL;
             name = Type.ToString();
             break;
     }
 }