Beispiel #1
0
 /// <summary>
 /// 有効化
 /// </summary>
 public void Activate(ToolBox.ShipData shipData, GameManager gm, Color symbolColor)
 {
     this.gm          = gm;
     bulletTag        = "Bullet";
     this.symbolColor = symbolColor;
     //機体名
     shipName = shipData.name;
     //機体データ
     this.shipData = shipData;
     //タグ
     gameObject.tag = "Ship";
     //機体
     Activate_Ship(shipData);
     //ランチャー
     Activate_Launcher(shipData);
     //ブースター
     Activate_Booster(shipData, gm.gameSpeed);
     //物理演算
     Activate_Rigidbody();
     //背景
     Activate_Background();
     //AP関連の準備
     maxHP = nowHP = shipData.GetHP();
     //エネルギーの準備
     maxEnergy    = nowEnergy = gm.maxEnergy;
     energyOutput = gm.energyOutput;
 }
Beispiel #2
0
 /// <summary>
 /// アイテム取得
 /// </summary>
 public void GetItem(UISprite itemSprite, string itemName)
 {
     //所持リストに追加
     haveItemList.Add(itemName);
     //SE再生
     AudioManager.Instance.PlaySE("ItemGet_1");
     //UIに反映
     if (indicator.OnGetItem(itemSprite.spriteName, itemSprite.color))
     {
         //溜まったので新しくパーツをくっつける
         //とりあえずランダムに
         ToolBox.ShipData addParts = GameManager.Instance.ShipDic_RandomSelect();
         ship.AddParts(addParts, Vector3.up * 2f);
         //表示
         int total, normal, missile, optical;
         addParts.GetLauncherNum(out total, out normal, out missile, out optical);
         indicator.IndicateLvUp(0, normal, missile, optical);
         //アイテムストック数を増やす
         indicator.itemList.AddItemNum();
         //HP全回復
         ship.SetHP(ship.maxHP);
     }
     else
     {
         //ラベル表示
         LabelManager.Instance.SetLabel("ItemGet!", 2f, transform.position, itemSprite.color, Vector3.one * 8f);
     }
 }
 /// <summary>
 /// ボタンクリック
 /// </summary>
 protected override void OnSelectButtonClicked(GameObject obj)
 {
     //インデックスを求める
     ToolBox.ShipData shipData = GetShipDataFromObjectName(obj);
     //イベント送信
     NotifyTarget(clickedFunctionName, shipData);
 }
    /// <summary>
    /// 指定したカテゴリーに新規に機体を保存する
    /// </summary>
    public bool ShipDic_SaveAs(string category, ToolBox.ShipData ship)
    {
        //カテゴリーが存在するか
        if (!shipDataDic.ContainsKey(category))
        {
            //新しくカテゴリーを作成
            shipDataDic.Add(category, new Dictionary <string, ToolBox.ShipData>());
        }

        //一意なIDを取得する
        string guid;

        do
        {
            guid = Guid.NewGuid().ToString();
        } while(shipDataDic[category].ContainsKey(guid));

        //パラメータを設定
        ship.id       = guid;
        ship.category = category;

        //フラグ設定
        ship.flagNew    = true;
        ship.flagUpdate = false;

        //日時の設定
        ship.created   = ship.updated = DateTime.Now.ToString();
        ship.updateNum = 1;

        //辞書に追加
        shipDataDic[category].Add(guid, ship);

        return(true);
    }
    /// <summary>
    /// 指定したカテゴリーの指定データを更新する
    /// </summary>
    public bool ShipDic_Update(ToolBox.ShipData ship)
    {
        //カテゴリー確認
        if (!shipDataDic.ContainsKey(ship.category))
        {
            return(false);
        }
        //機体が含まれているかを確認
        if (!shipDataDic[ship.category].ContainsKey(ship.id))
        {
            return(false);
        }

        //フラグ
        ship.flagNew    = false;
        ship.flagUpdate = true;

        //日時の設定
        ship.updated = DateTime.Now.ToString();
        ship.updateNum++;

        //上書き
        shipDataDic[ship.category][ship.id] = ship;
        return(true);
    }
    /// <summary>
    /// 体力を指定して生成
    /// </summary>
    public T InstantiateEnemy <T>(ToolBox.ShipData shipData, int hp) where T : Enemy
    {
        T enemy = gm.InstantiateEnemy <T>(shipData);

        enemy.ship.SetHP(hp);
        return(enemy);
    }
    /// <summary>
    /// 機体パーツリストから機体データを作成する(辞書に登録はしない)
    /// </summary>
    public ToolBox.ShipData CreateShipData(List <ToolBox.ShipPartsData> partsList, string name)
    {
        ToolBox.ShipData shipData = new ToolBox.ShipData(partsList);
        //カテゴリー
        shipData.category = defaultShipCategory;
        //一意なIDを取得する
        if (!shipDataDic.ContainsKey(shipData.category))
        {
            shipDataDic.Add(shipData.category, new Dictionary <string, ToolBox.ShipData>());
        }
        string guid;

        do
        {
            guid = Guid.NewGuid().ToString();
        } while(shipDataDic[shipData.category].ContainsKey(guid));
        shipData.id = guid;
        //名前
        shipData.name = name;
        //機体サイズ
        shipData.shipSize = editShipSize.name;
        //日時の設定
        shipData.created   = shipData.updated = DateTime.Now.ToString();
        shipData.updateNum = 1;
        //フラグ設定
        shipData.flagNew    = true;
        shipData.flagUpdate = false;
        return(shipData);
    }
 /// <summary>
 /// カテゴリ、IDを指定して機体を生成
 /// </summary>
 public Ship InstantiateShip(string category, string shipID, Color color)
 {
     ToolBox.ShipData shipData = ShipDic_Select(category, shipID);
     if (shipData == null)
     {
         return(null);
     }
     return(InstantiateShip(shipData, color));
 }
    /// <summary>
    /// 機体を指定して機体を作成
    /// </summary>
    public Ship InstantiateShip(ToolBox.ShipData shipData, Color color)
    {
        //機体を実体化
        GameObject g    = (GameObject)Instantiate(emptyObject);
        Ship       ship = g.AddComponent <Ship>();

        //有効化
        ship.Activate(shipData, this, color);
        return(ship);
    }
Beispiel #10
0
    /// <summary>
    /// 機体の有効化
    /// </summary>
    protected void Activate_Ship(ToolBox.ShipData shipData)
    {
        //機体パーツを結合したMeshを取得
        Mesh m = shipData.GetConnectedMesh();

        FuncBox.SetMesh(gameObject, m, gm.shipMaterial);
        //半径を求める
        Vector3 size   = m.bounds.size / 2f;
        Vector3 center = FuncBox.Vector3Abs(m.bounds.center);

        collisionRadius = Vector3.Distance(Vector3.zero, center + size);
    }
 //ShipSelect
 protected void ShipSelectButtonClicked(ToolBox.ShipData shipData)
 {
     //スタックがshipsにくるまでループ
     indicateStack.StackCheck(ships);
     //編集ボタンを表示
     indicateStack.Push(editButtons);
     //ゲームパッドのイベント送信先をeditButtonsに
     gamepadInput.target = editButtons;
     //編集機体を表示
     gm.SetEditShipData(shipData);
     gm.editShipSize = gm.GetShipSize(shipData.shipSize);
 }
 /// <summary>
 /// ボタンホバー
 /// </summary>
 protected override void OnSelectButtonHover(GameObject obj)
 {
     if (enabled)
     {
         //データ取得
         ToolBox.ShipData shipData = GetShipDataFromObjectName(obj);
         //データ表示
         if (shipDataIndicator)
         {
             shipDataIndicator.SetShipData(shipData);
         }
     }
 }
 /// <summary>
 /// ボタンホバー
 /// </summary>
 protected override void OnSelectButtonHover(GameObject obj)
 {
     //データ取得
     ToolBox.ShipData shipData = GetShipDataFromObjectName(obj);
     //データ表示
     if (shipDataIndicator)
     {
         shipDataIndicator.Indicate(true);
         shipDataIndicator.SetShipData(shipData);
     }
     //イベント送信
     NotifyTarget(hoverFunctionName, shipData);
 }
 /// <summary>
 /// 外部から機体データを設定,エントリー状態にする
 /// </summary>
 public void SetShipData(ToolBox.ShipData shipData)
 {
     Entry();
     shipDataIndicator.SetShipData(shipData);
     //gui管理クラスに知らせる
     gui.SetShipData(((int)index) - 1, shipData);
     //選択出来ないように
     if (enabled)
     {
         enabled = false;
     }
     PlayEntryTween(false);
 }
 /// <summary>
 /// ボタンクリック
 /// </summary>
 protected override void OnSelectButtonClicked(GameObject obj)
 {
     if (enabled)
     {
         //インデックスを求める
         ToolBox.ShipData shipData = GetShipDataFromObjectName(obj);
         //gui管理クラスに知らせる
         gui.SetShipData(((int)index) - 1, shipData);
         //選択出来ないように
         enabled = false;
         PlayEntryTween(false);
     }
 }
Beispiel #16
0
    /// <summary>
    /// エネミー用機体を作成(文字列から)
    /// </summary>
    public Enemy InstantiateEnemy(string componentName, ToolBox.ShipData shipData)
    {
        //色
        Color c = enemyColor;
        //機体を生成
        Ship ship = InstantiateShip(shipData, c);
        //エネミー用コンポーネントをアタッチする
        Enemy enemy = (Enemy)ship.gameObject.AddComponent(Type.GetType(componentName));

        //有効化
        enemy.Activate(this, "Enemy", "Enemy");
        return(enemy);
    }
Beispiel #17
0
    /// <summary>
    /// エネミー用機体を作成(ジェネリック)
    /// </summary>
    public T InstantiateEnemy <T>(ToolBox.ShipData shipData) where T : Enemy
    {
        //色
        Color c = enemyColor;
        //機体を生成
        Ship ship = InstantiateShip(shipData, c);
        //エネミー用コンポーネントをアタッチする
        T enemy = ship.gameObject.AddComponent <T>();

        //有効化
        enemy.Activate(this, "Enemy", "Enemy");
        return(enemy);
    }
Beispiel #18
0
    /// <summary>
    /// ブースターの有効化
    /// </summary>
    protected void Activate_Booster(ToolBox.ShipData ship, float gameSpeed)
    {
        if (boosterList == null)
        {
            boosterList = new List <BoosterInfo>();
        }
        //ブースター出力
        float output = baseBoostOutput;
        //エフェクト
        GameObject boost;
        GameObject highBoost;
        GameObject quickBoost;

        foreach (ToolBox.ShipPartsData s in ship.shipPartsList)
        {
            foreach (ToolBox.Booster b in s.booster)
            {
                //ブースター出力
                output += b.performance.output;
                //ブーストエフェクト
                boost = (GameObject)Instantiate(gm.GetEffect("Booster_2"));
                boost.transform.parent           = transform;
                boost.transform.localPosition    = b.point + s.offset;
                boost.transform.localScale       = Vector3.one;
                boost.transform.localEulerAngles = b.angle;
                //ハイブーストエフェクト
                highBoost = (GameObject)Instantiate(gm.GetEffect("Booster_3"));
                highBoost.transform.parent        = transform;
                highBoost.transform.localPosition = b.point + s.offset;
                highBoost.transform.localScale    = Vector3.one;
                Vector3 angle = b.angle;
                angle.z -= 60;
                highBoost.transform.localEulerAngles = angle;
                //クイックブーストエフェクト
                quickBoost = (GameObject)Instantiate(gm.GetEffect("QuickBoost_1"));
                quickBoost.transform.parent           = transform;
                quickBoost.transform.localPosition    = b.point + s.offset;
                quickBoost.transform.localScale       = Vector3.one;
                quickBoost.transform.localEulerAngles = angle;
                //追加
                boosterList.Add(new BoosterInfo(boost, highBoost, quickBoost, symbolColor));
            }
        }
        boostOutput      = output * boostOutputScale * gameSpeed;
        highBoostOutput  = output * highBoostOutputScale * gameSpeed;
        quickBoostOutput = output * quickBoostScale * gameSpeed;
        //エフェクトの非表示
        IndicateBoostEffect(false);
        IndicateHighBoostEffect(false);
        IndicateQuickBoostEffect(false);
    }
Beispiel #19
0
    /// <summary>
    /// プレイヤー用機体を作成
    /// </summary>
    public Player InstantiatePlayer(ToolBox.ShipData shipData, int playerNum = 1)
    {
        //色
        Color c = playerColor[playerNum - 1];
        //機体を生成
        Ship ship = InstantiateShip(shipData, c);
        //プレイヤー用コンポーネントをアタッチする
        Player player = ship.gameObject.AddComponent <Player>();

        //有効化
        player.Activate(this, "Player " + playerNum, "Player");
        //プレイヤーゲームパッド設定
        player.SetGamePad(playerNum, ToolBox.InputType.GamePad, false);
        return(player);
    }
Beispiel #20
0
    //それぞれの設定用関数
    public void SetPreview(ToolBox.ShipData shipData)
    {
        if (!previewMf)
        {
            return;
        }
        Mesh m = shipData.GetConnectedMesh();

        previewMf.mesh = m;
        if (!previewCamera)
        {
            return;
        }
        Vector3 size   = m.bounds.size / 2f;
        Vector3 center = FuncBox.Vector3Abs(m.bounds.center);

        previewCamera.orthographicSize = Vector3.Distance(Vector3.zero, center + size);
    }
Beispiel #21
0
    /// <summary>
    /// ランチャーの有効化
    /// </summary>
    protected void Activate_Launcher(ToolBox.ShipData ship)
    {
        if (launcherDic == null)
        {
            launcherDic = new Dictionary <string, Launchers>();
        }
        GameObject bullet;

        foreach (ToolBox.ShipPartsData s in ship.shipPartsList)
        {
            foreach (ToolBox.Launcher l in s.launcher)
            {
                //使用していれば辞書に登録する
                if (l.flagUse)
                {
                    //弾のインスタンスを取得する
                    ToolBox.Bullet b = gm.bulletDic[l.bulletCategory][l.bulletID];
                    //インスタンスを取得する
                    bullet = (GameObject)Instantiate(b.instance);
                    bullet.transform.parent           = transform;
                    bullet.transform.localPosition    = l.point + s.offset;
                    bullet.transform.localEulerAngles = l.angle;
                    //ランチャーの性能を計算する
                    l.totalPerformance = ToolBox.LauncherPerformance.Add(l.basePerformance, b.performance);

                    //ランチャー辞書に登録されているか確認する
                    if (!launcherDic.ContainsKey(l.tag))
                    {
                        //登録されていなければ新しく項目を作る
                        launcherDic[l.tag] = new Launchers();
                    }
                    //追加
                    launcherDic[l.tag].launchers.Add(new LauncherInfo(l, bullet));
                }
            }
        }
        //ランチャー辞書の項目毎の処理
        foreach (Launchers l in launcherDic.Values)
        {
            l.SortLaunchers();
        }
        //リロードを終わらせる
        ReloadComplete();
    }
    /// <summary>
    /// プレイヤーを生成
    /// </summary>
    private Player InstantiatePlayer(ToolBox.ShipData shipData, int playerNo)
    {
        Player p = gm.InstantiatePlayer(shipData, playerNo);

        //VsEnemyの場合はnameの調整
        if (gm.playMode == ToolBox.PlayMode.VsEnemy)
        {
            p.ship.SetTagAndName("Player", "Player", "Player");
            p.notCollisionName = "Player";
        }
        //位置調整
        if (gm.selectStage != null)
        {
            p.transform.position = gm.selectStage.playerRespawnPos[playerNo - 1] * scale;
        }
        //データベースに追加
        AddPlayer(p);
        return(p);
    }
Beispiel #23
0
    /// <summary>
    /// 機体データを一括で表示に設定
    /// </summary>
    public void SetShipData(ToolBox.ShipData shipData)
    {
        if (shipData == null)
        {
            return;
        }
        SetPreview(shipData);
        SetName(shipData.name);
        SetHP(shipData.GetHP());
        //SetCost(shipData.GetCost());
        int total, normal, missile, optical;

        shipData.GetLauncherNum(out total, out normal, out missile, out optical);
        SetLauncher(total, normal, missile, optical);
        float output;

        shipData.GetBoosterInfo(out total, out output);
        SetBoost(total, (int)output);
        SetSize(shipData.shipSize);
    }
    /// <summary>
    /// ランダムに行動を設定した敵を生成する
    /// </summary>
    public Enemy InstantiateRandomActionEnemy(ToolBox.ShipData shipData)
    {
        switch (Random.Range(0, 3))
        {
        case 0:
            //通常
            return(InstantiateEnemy <Enemy>(shipData));

        case 1:
            //一人集中
            return(InstantiateEnemy <Enemy_Concentration>(shipData));

        case 2:
            //優柔不断
            return(InstantiateEnemy <Enemy_Indecision>(shipData));

        default:
            return(null);
        }
    }
Beispiel #25
0
 /// <summary>
 /// 機体をパーツとして追加する
 /// </summary>
 public void AddParts(ToolBox.ShipData addParts, Vector3 offset)
 {
     //先に追加分だけを追加
     //ランチャー
     Activate_Launcher(addParts);
     //ブースター
     Activate_Booster(addParts, gm.gameSpeed);
     //パーツの結合
     foreach (ToolBox.ShipPartsData parts in addParts.shipPartsList)
     {
         //parts.offset += offset;
         shipData.shipPartsList.Add(parts);
     }
     Activate_Ship(shipData);
     //当たり判定
     sCollider.radius = collisionRadius;
     //背景オブジェクト
     Destroy(backgroundObjectRenderer.gameObject);
     Activate_Background();
 }
Beispiel #26
0
 /// <summary>
 /// 編集機体データを設定(ディープコピーせずに)
 /// </summary>
 public void SetEditShipData(ToolBox.ShipData shipData)
 {
     editShipData = shipData;
 }
Beispiel #27
0
    public float rankYPosOffset = -20f;                 //ランクによるy座標のずれ
    #region 関数
    /// <summary>
    /// 有効化
    /// </summary>
    public void Activate(int playerNo, Color color, int rank, ToolBox.PlayerScore playerScore, ToolBox.ShipData shipData)
    {
        //表示
        Indicate(true);
        //値の設定
        playerNoLabel.text = "Player" + playerNo;
        if (rankLabel)
        {
            rankLabel.text = rank.ToString();
        }
        if (scoreLabel)
        {
            scoreLabel.text = playerScore.score.ToString();
        }
        if (killLabel)
        {
            killLabel.text = playerScore.kill.ToString();
        }
        if (deadLabel)
        {
            deadLabel.text = playerScore.dead.ToString();
        }
        //Mesh
        mf.mesh = shipData.GetConnectedMesh();
        meshCamera.orthographicSize = mf.mesh.bounds.size.y;
        //色
        colorSetter.SetColor(color);
        //順位によって位置を変更(下位の順位ほど画面上で下へ)
        float   yPos = (rank - 1) * rankYPosOffset;
        Vector3 pos  = transform.localPosition;

        pos.y += yPos;
        transform.localPosition = pos;
    }
 /// <summary>
 /// 敵を生成
 /// </summary>
 public T InstantiateEnemy <T>(ToolBox.ShipData shipData) where T : Enemy
 {
     return(gm.InstantiateEnemy <T>(shipData));
 }
 /// <summary>
 /// 指定番号に機体データを設定する
 /// </summary>
 public void SetShipData(int index, ToolBox.ShipData shipData)
 {
     selectShipData[index] = shipData;
     //参加人数の確認
     CheckEntryAndPlayEffect();
 }