예제 #1
0
        private async void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            var item = e.SelectedItem as MainPageMenuItem;

            if (item == null)
            {
                return;
            }

            switch (item.Title)
            {
            case "Profil":
                await Navi.PushAsync(new Profile());

                break;

            case "Ustawienia":
                await Navi.PushAsync(new Settings());

                break;

            case "Pomoc":
                await Navi.PushAsync(new Help());

                break;

            case "O aplikacji":
                await Navi.PushAsync(new AboutApp());

                break;
            }

            IsPresented = false;
            MasterPage.ListView.SelectedItem = null;
        }
예제 #2
0
    public override void activate(Navi navi)
    {
        if (navi.active_chip != null)                   // deactivate any other active chip before activating
        {
            navi.active_chip.deactivate(navi);
        }
        navi.active_chip = this;
        // If being activated by me
        if (navi.localOwner.Id == navi.owner.Id)
        {
            AC_dispObj = navi.AC_dispA;
        }
        // If being activated by enemy
        if (navi.localOwner.Id != navi.owner.Id)
        {
            AC_dispObj = navi.AC_dispB;
        }
        AC_dispObj.SetActive(true);
        AC_disp = AC_dispObj.GetComponent <ActiveChipDisplay>();
        AC_disp.RecieveData(this);
        AC_disp.max_duration             = power;
        AC_disp.duration                 = power;
        AC_disp.power_text.text          = "" + Math.Ceiling(AC_disp.duration);
        AC_disp.duration_ring.fillAmount = AC_disp.duration / AC_disp.max_duration;
        //	*****	Buster Charge Up	******
        int i = 0;

        while (i < navi.charge_levels.Length)
        {
            navi.charge_levels[i] *= 0.75f;             // reduce time for full charge by 25%
            i++;
        }
    }
예제 #3
0
    }                           // empty constructor (surround pulls all animations from Tower

    public override void initAnim(Navi navi, ChipLogic c)
    {
        // grab effect sprite from Towers
        EffectDB.TOWER.initAnim(navi, c);            // initAnim() stores sprite in c.chip_sprite
        c.chip_anim_frame = 0;

        // create renderer objects in all tiles surrounding navi
        int col = 1;

        while (col >= -1)                                             // spawn in columns above, in, and below
        {
            if ((navi.column + col <= 5) && (navi.column + col >= 0)) // do not try to spawn off board
            {
                int r = 1;
                while (r >= -1)                                     // spawn in rows ahead, in, and behind (for all good columns)
                {
                    if ((navi.row + r <= 2) && (navi.row + r >= 0)) // do not try to spawn off board
                    {
                        if ((col != 0) || (r != 0))                 // do not spawn on navi
                        {
                            GameObject attack_render = new GameObject();
                            attack_render.transform.position = navi.field.grid[navi.row + r][navi.column + col].transform.position;
                            attack_render.AddComponent <SpriteRenderer>();
                            attack_render.GetComponent <SpriteRenderer>().sprite       = c.chip_sprite[c.chip_anim_frame];
                            attack_render.GetComponent <SpriteRenderer>().sortingOrder = 1;
                            SurroundTile st = new SurroundTile(navi.row + r, navi.column + col, false, attack_render);
                            affectedArea.Add(st);
                        }
                    }
                    r--;                        // row completed or failed
                }
            }
            col--;                // column completed or failed
        }
    }
예제 #4
0
 public override void OnSyncedUpdate(Navi navi, ChipLogic c)
 {
     c.frametimer -= Time.deltaTime;
     if (c.chip_anim_frame > 1)            // attack is active on 3rd frame
     {
         int i = 0;
         while (i < affectedArea.Count)
         {
             if (!affectedArea[i].hit)                 // no hit from space yet, so check for hit
             // tests for hit and set to true if there is one so it won't check again
             {
                 affectedArea[i].hit = navi.shot_handler.check_position(c.power, navi.playerNumber, c.stun,
                                                                        affectedArea[i].row, affectedArea[i].col, c.elem);
             }
             i++;
         }
     }
     if (c.frametimer <= 0)
     {
         c.frametimer = c.chipFR;
         if (c.chip_anim_frame < c.chip_sprite.Length - 1)               // advance to next frame if not at end
         {
             c.chip_anim_frame++;
             foreach (SurroundTile bt in affectedArea)                     // update sprite of all burning tiles
             {
                 bt.renderer.GetComponent <SpriteRenderer>().sprite = c.chip_sprite[c.chip_anim_frame];
             }
         }
         else
         {
             c.deactivate(navi);
         }
     }
 }
예제 #5
0
 public override void OnSyncedUpdate(Navi navi, ChipLogic c)
 {
     c.frametimer -= Time.deltaTime;
     if (c.frametimer <= 0)
     {
         c.frametimer = c.chipFR;
         if (c.chip_anim_frame < c.chip_sprite.Length - 1)               // advance to next frame if not at end
         {
             c.chip_anim_frame++;
             c.chip_renderObj.GetComponent <SpriteRenderer>().sprite = c.chip_sprite[c.chip_anim_frame];
             if (c.chip_anim_frame > 0)                    // cannon animation has 1 frame more than shoot at the front
             {
                 navi.controlledSpriteSet(c.chip_anim_frame - 1);
             }
             if (c.chip_anim_frame == 2)
             {
                 navi.shot_handler.check_bust(c.power, navi.playerNumber, c.stun, c.elem);                     // shot fired on 3rd frame
             }
         }
         else                // animation finished
         {
             c.deactivate(navi);
         }
     }
 }
예제 #6
0
    public override void initializeMap(GameRoot game_root)
    {
        MapCreator   map_creator   = MapCreator.get();
        PartyControl party_control = PartyControl.get();

        map_creator.setRoomNum(1, 1);

        map_creator.floor_root_go = new GameObject("Floor");

        // 방 만들기.
        RoomController room = map_creator.createRoomFloor(new Map.RoomIndex(0, 0));

        // 더미 방 만들기.
        map_creator.createVacancy(new Map.RoomIndex(0, -1));

        // 방을 구분하는 벽을 만든다.
        map_creator.createRoomWall();

        // 외벽을 만든다.
        map_creator.createOuterWalls();

        GameRoot.get().createLocalPlayer();
        GameRoot.get().createNetPlayers();

        // 플레이어 위치 설정.

        chrBehaviorLocal local_player = PartyControl.get().getLocalPlayer();

        Vector3 playerStartPosition = Vector3.zero;

        local_player.transform.position = playerStartPosition + PartyControl.get().getPositionOffset(local_player.control.global_index);

        for (int i = 0; i < PartyControl.get().getFriendCount(); i++)
        {
            chrBehaviorPlayer friend = PartyControl.get().getFriend(i);

            friend.control.cmdSetPositionAnon(playerStartPosition + PartyControl.get().getPositionOffset(friend.control.global_index));
        }

        party_control.setCurrentRoom(room);

        // ボスの作成.

        chrControllerEnemyBase enemy;

        if (UsesHumanControlForBoss)
        {
            enemy = CharacterRoot.get().createEnemy("Boss1", "chrControllerEnemyBoss", "chrBehaviorEnemyBoss_Human") as chrControllerEnemyBase;
        }
        else
        {
            enemy = CharacterRoot.get().createEnemy("Boss1", "chrControllerEnemyBoss", "chrBehaviorEnemyBoss") as chrControllerEnemyBase;
        }

        enemy.cmdSetPosition(new Vector3(0.0f, 0.0f, 20.0f));

        // 스테이터스 창.

        Navi.get().createStatusWindows();
    }
예제 #7
0
 public override void OnSyncedUpdate(Navi navi)
 {
     // update active chip display
     AC_disp.duration                -= (Time.deltaTime * decay_rate);                  // Barrier loses 2 power per second, normal lifespan = 40s
     AC_disp.duration                 = (AC_disp.duration <= 0) ? 0 : AC_disp.duration; // no negative dur
     AC_disp.power_text.text          = "" + Math.Ceiling(AC_disp.duration);
     AC_disp.duration_ring.fillAmount = AC_disp.duration / AC_disp.max_duration;
     // animate sprite
     frametimer -= Time.deltaTime;
     if (frametimer <= 0)
     {
         if (chip_anim_frame < chip_sprite.Length - 1)               // advance to next frame if not at end
         {
             chip_anim_frame++;
         }
         else                // repeat animation in reverse
         {
             Array.Reverse(chip_sprite);
             chip_anim_frame = 1;
         }
         chip_renderObj.GetComponent <SpriteRenderer>().sprite = chip_sprite[chip_anim_frame];
         frametimer = chipFR;
     }
     // Terminate effect when duration runs out
     if (AC_disp.duration <= 0)
     {
         deactivate(navi);
     }
 }
예제 #8
0
 public override void OnSyncedUpdate(Navi navi, ChipLogic c)
 {
     if (recov_amount > 3)          // HP text number increase effect (going by 3s reduces strain)
     {
         recov_amount -= 3;
         navi.HP      += 3;
     }
     else if (recov_amount > 0)             // for non divisible by 3
     {
         navi.HP     += recov_amount;
         recov_amount = 0;
     }
     c.frametimer -= Time.deltaTime;
     if (c.frametimer <= 0)
     {
         c.frametimer = c.chipFR;
         if (c.chip_anim_frame < c.chip_sprite.Length - 1)               // advance to next frame if not at end
         {
             c.chip_anim_frame++;
             c.chip_renderObj.GetComponent <SpriteRenderer>().sprite = c.chip_sprite[c.chip_anim_frame];
         }
         else                      // animation finished
         {
             if (recov_amount > 0) // add any remaining chip.power to HP if animation was too short for HOT effect
             {
                 navi.HP     += recov_amount;
                 recov_amount = 0;
             }
             c.deactivate(navi);
         }
     }
 }
예제 #9
0
    public override void initAnim(Navi navi, ChipLogic c)
    {
        c.chip_sprite     = effectAnim;
        c.chip_anim_frame = 0;
        c.frametimer      = c.chipFR;
        current_row       = navi.row;
        target_column     = (navi.myNavi()) ? navi.column + 3 : navi.column - 3;        // moves right if my navi, moves left if opponents
        target_column     = (target_column < 0) ? 0 : target_column;
        target_column     = (target_column > 5) ? 5 : target_column;
        target_top        = navi.field.grid[0][target_column].gameObject.transform;
        target_bottom     = navi.field.grid[2][target_column].gameObject.transform;

        //create the render object and set its position forward 3 rows
        c.chip_renderObj = new GameObject();
        c.chip_renderObj.transform.position = navi.field.grid[current_row][target_column].gameObject.transform.position;
        c.chip_renderObj.AddComponent <SpriteRenderer>();
        c.chip_renderObj.GetComponent <SpriteRenderer>().sortingOrder = 3;        //!!!!!! NEED TO FIND SOME WAY OF ORGANIZING THESE SORTING LAYERS!!!!!!
        c.chip_renderObj.GetComponent <SpriteRenderer>().sprite       = c.chip_sprite[c.chip_anim_frame];

        // initialize values
        move_up    = false;
        loop_up    = true;
        move_speed = 1.5f;                      // MOVE SPEED HARD CODED
        duration   = c.power / 2.0f;            // Duration hard coded based on chip power
        hit_row    = false;
    }
예제 #10
0
        public void RegisterMessageCenter()
        {
            MessagingCenter.Subscribe <MainPage, bool>(this, Messages.HomeClicked, async(sends, arg) =>
            {
                await GetData();
            });


            MessagingCenter.Subscribe <AccountService, bool>(this, Messages.LoginSuccessful, async(sends, arg) =>
            {
                await GetData();
            });


            MessagingCenter.Subscribe <MainMapPageViewModel, string>(this, Messages.MapEventsClicked, async(sends, arg) =>
            {
                await Navi.GoToEventPage(arg);
            });


            MessagingCenter.Subscribe <MainMapPageViewModel, string>(this, Messages.MapProfileClicked, async(sends, arg) =>
            {
                await Navi.GoToProfilePage(arg);
            });
        }
        private void Tick(object sender, EventArgs e)
        {
            if (Status != (EntityStatus)Api.Player.Status)
            {
                Status = (EntityStatus)Api.Player.Status;
                StatusChanged(this, new StatusChangedEventArgs {
                    Status = Status
                });
            }
            if (Zone != CurrentZone)
            {
                Zone = CurrentZone;
                ZoneChanged(this, EventArgs.Empty);
            }
            CastCheck();
            if (OldPosition.Equals(CurrentPosition))
            {
                IsMoving = false;
            }
            else if (!OldPosition.Equals(CurrentPosition))
            {
                IsMoving = true;

                OldPosition = CurrentPosition;
                if (Tasks.Huntertask.Options.RecordWaypoints)
                {
                    Navi.LearnRoutine();
                }
            }
        }
예제 #12
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            panelTypes = Scripting.getObjectsFromFile("panelTypes.txt", "name").
                         ToDictionary(k => (string)k.Key, k => (PanelType)k.Value);
            damageTypes = Scripting.getObjectsFromFile("damageTypes.txt", "name").
                          ToDictionary(k => (string)k.Key, k => (DamageType)k.Value);

            chipsList = Scripting.getObjectsFromFile("chips/chips.txt", "name").
                        ToDictionary(k => (string)k.Key, k => (Chip)k.Value);
            areaList = Scripting.getObjectsFromFile("areas/areas.txt", "name").
                       ToDictionary(k => (string)k.Key, k => (Area)k.Value);

            attackTypes = Scripting.getObjectsFromFile("attackTypes.txt", "name").
                          ToDictionary(k => (string)k.Key, k => (AttackType)k.Value);

            naviList = Scripting.getObjectsFromFile("navis.txt", "name").
                       ToDictionary(k => (string)k.Key, k => (Navi)k.Value);
            navi = naviList["NormalNavi"];

            currentKeyboard = new KeyboardState();
            oldKeyboard     = new KeyboardState();
            stage           = new Stage();
            custom          = new Custom();

            virus = new List <Virus>();
            virus.Add(new Mettaur());
            virus.Add(new Mettaur2());
            virus.Add(new MettaurΩ());

            currentArea = areaList["ACDC1"];
            navi.area   = currentArea;

            base.Initialize();
        }
예제 #13
0
        async Task WriteDiaryAsync()
        {
            if (!IsAuthenticated)
            {
                return;
            }

            if (DiaryInfo == null)
            {
                return;
            }

            DiaryContent content;

            if (DiaryInfo.IsSecret)
            {
                content = await DiaryService.WriteDiaryAsync(User, DiaryInfo, Date, Content, UserData.Password);
            }
            else
            {
                content = await DiaryService.WriteDiaryAsync(User, DiaryInfo, Date, Content);
            }

            if (content != null)
            {
                Navi.NavigateTo(DiaryUrl.DiaryContent(DiaryInfo.DiaryName, Date));
            }
        }
예제 #14
0
 public override void OnSyncedUpdate(Navi navi)
 {
     if (effect != null)
     {
         effect.OnSyncedUpdate(navi, this);
     }
 }
예제 #15
0
        private async void Save(object obj)
        {
            if (ValidateRecipe())
            {
                try
                {
                    UserDialogs.Instance.ShowLoading("Saving...");

                    ThisRecipe.UpdatedDate = DateTime.Now;
                    ThisRecipe.Title       = Title;
                    ThisRecipe.Text        = Instructions;
                    ThisRecipe.Ingredients = Ingredients;
                    ThisRecipe.Tags        = Tags;

                    DataRepository.Instance.Update <Recipes>(ThisRecipe);

                    App.RecipesViewModel.OnNavigatedTo();
                    App.ItemDetailViewModel.GetDetails(ThisRecipe);

                    await Navi.PopPageAsync();

                    UserDialogs.Instance.HideLoading();
                }
                catch (Exception ex)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.Alert(ex.Message);
                }
            }
            else
            {
                await UserDialogs.Instance.AlertAsync(ErrorMessage);
            }
        }
예제 #16
0
 public override void activate(Navi navi)
 {
     if (navi.active_chip != null)               // deactivate any other active chip before activating
     {
         navi.active_chip.deactivate(navi);
     }
     navi.active_chip = this;
     // If being activated by me
     if (navi.localOwner.Id == navi.owner.Id)
     {
         AC_dispObj = navi.AC_dispA;
         //	*****	Fast Custom	******
         navi.cust_dispA.GetComponent <Cust>().cust_speed /= 2;             // Increase Cust speed by 50%
     }
     // If being activated by enemy
     if (navi.localOwner.Id != navi.owner.Id)
     {
         AC_dispObj = navi.AC_dispB;
         //	*****	Fast Custom	******
         navi.cust_dispB.GetComponent <Cust>().cust_speed /= 2;             // Increase Cust speed by 50%
     }
     AC_dispObj.SetActive(true);
     AC_disp = AC_dispObj.GetComponent <ActiveChipDisplay>();
     AC_disp.RecieveData(this);
     AC_disp.max_duration             = power;
     AC_disp.duration                 = power;
     AC_disp.power_text.text          = "" + Math.Ceiling(AC_disp.duration);
     AC_disp.duration_ring.fillAmount = AC_disp.duration / AC_disp.max_duration;
 }
예제 #17
0
    private void SetIsBreakEx(int damage, int lockonBonus)
    {
        if (
            enemyState == State.FOLLOWINGLEADER ||
            enemyState == State.ATTACK)
        {
            if (life > 0)
            {
                life -= damage;
            }

            if (life <= 0)
            {
                // 敵機を破壊した.
                enemyState      = State.BREAK;
                isBreakByPlayer = true;

                // 点数加算.
                Navi.get().AddScore(score * lockonBonus);
                // サブスクリーンへメッセージ出力.
                printMessage.SetMessage("DESTROYED " + enemyTypeString + " BY LOCK BONUS X " + lockonBonus);
            }
            else
            {
                // ダメージアニメーション.
                if (effectDamage)
                {
                    Instantiate(
                        effectDamage,
                        transform.position,
                        new Quaternion(0f, 0f, 0f, 0f));
                }
            }
        }
    }
예제 #18
0
    // Update is called once per frame
    void Update()
    {
        int  i = 0;
        Navi n = navi.GetComponent <Navi>();

        while (i < held)
        {
            BattleChip bc = chips[i].GetComponent <BattleChip>();
            if ((bc.color_code == n.combo_color))                                          // chip in combo
            {
                if ((n.combo_color != ChipData.WHITE) && (n.combo_color != ChipData.GREY)) // white and grey don't combo
                {
                    if (n.combo_level <= 2)
                    {
                        bc.cost = (bc.base_cost - 1 >= 0) ? bc.base_cost - 1 : 0; // no negative cost
                    }
                    else                                                          // after 3rd chip in combo, discount become 2
                    {
                        bc.cost = (bc.base_cost - 2 >= 0) ? bc.base_cost - 2 : 0; // no negative cost
                    }
                    bc.cost_icon.GetComponent <Outline>().enabled = true;
                }
            }
            else                // reset all non-combo-color chips back to base cost
            {
                bc.cost = bc.base_cost;
                bc.cost_icon.GetComponent <Outline>().enabled = false;
            }
            i++;
        }
    }
예제 #19
0
 public override void deactivate(Navi navi, ChipLogic c)
 {
     navi.rate_controlled = false;               // Navi controls its own animation again
     navi.swordAnim       = false;
     UnityEngine.Object.Destroy(slash_renderer); // removes the slash effect
     base.deactivate(navi, c);
 }
예제 #20
0
        public void LoadPointsOfInterest()
        {
            OpenFileDialog OpenDialog = new OpenFileDialog();

            Tc.PointsComboBox.Items.Clear();
            string PATH = (string.Format(Application.StartupPath + "\\Documents\\Points of intrest"));

            OpenDialog.InitialDirectory = PATH;
            OpenDialog.FilterIndex      = 0;

            if (OpenDialog.ShowDialog() == DialogResult.OK)
            {
                Navi.Reset();
                Points.Clear();

                string PointsFilename = OpenDialog.FileName;
                Logger.AddDebugText(Tc.rtbDebug, string.Format(@"Nav file loaded = {0}", PointsFilename));
                try
                {
                    Points = XmlSerializationHelper.Deserialize <List <PointsOfInterest> >(PointsFilename) ?? new List <PointsOfInterest>();

                    OpenDialog.Dispose();
                    foreach (var item in Points)
                    {
                        Tc.PointsComboBox.Items.Add(item.Name);
                    }
                    Logger.AddDebugText(Tc.rtbDebug, string.Format(@"Added {0} Points of interest", Points.Count.ToString()));
                    Tc.PointsComboBox.SelectedIndex = 0;
                }
                catch (Exception ex)
                {
                    Logger.AddDebugText(Tc.rtbDebug, string.Format(@"LoadWaypoints error {0}", ex.ToString()));
                }
            }
        }
예제 #21
0
    // 将连击数设置为0
    public void     clearComboCount()
    {
        this.combo_count = 0;
        this.combo       = COMBO.NORMAL;

        Navi.get().setCombo(this.combo);
    }
예제 #22
0
    private void SetIsBreakEx(int damage, int lockonBonus)
    {
        if (
            enemyState == State.FOLLOWINGLEADER ||
            enemyState == State.ATTACK)
        {
            if (life > 0)
            {
                life -= damage;
            }

            if (life <= 0)
            {
                // 毁坏敌机
                enemyState      = State.BREAK;
                isBreakByPlayer = true;

                // 统计得分
                Navi.get().AddScore(score * lockonBonus);
                // 向子窗口输出消息
                printMessage.SetMessage("DESTROYED " + enemyTypeString + " BY LOCK BONUS X " + lockonBonus);
            }
            else
            {
                // 毁坏动画
                if (effectDamage)
                {
                    Instantiate(
                        effectDamage,
                        transform.position,
                        new Quaternion(0f, 0f, 0f, 0f));
                }
            }
        }
    }
예제 #23
0
        private async Task EditDiary()
        {
            if (!IsAuthenticated)
            {
                return;
            }

            if (DiaryInfo == null)
            {
                return;
            }

            List <DiaryContent> content;

            if (DiaryInfo.IsSecret)
            {
                content = await DiaryService.UpdateDiaryAsync(User, DiaryInfo, View.DiaryContents, UserData.Password);
            }
            else
            {
                content = await DiaryService.UpdateDiaryAsync(User, DiaryInfo, View.DiaryContents);
            }

            if (content?.Any() ?? false)
            {
                Navi.NavigateTo(DiaryUrl.DiaryContent(DiaryInfo.DiaryName, content.First().Date));
            }
            else
            {
                Navi.NavigateTo(DiaryUrl.Home(DiaryInfo.DiaryName));
            }
        }
예제 #24
0
        protected override async Task OnPageInitializedAsync()
        {
            if (!IsAuthenticated)
            {
                Navi.NavigateTo("/login");
                return;
            }

            var list = await DiaryService.GetWritableDiaryInfoAsync(User);

            DiaryInfo = list.FirstOrDefault(x => x.DiaryName == DiaryName);

            if (DiaryInfo == null)
            {
                Navi.NavigateTo(DiaryUrl.Home(DiaryName));
            }

            if (DiaryInfo.IsSecret && string.IsNullOrWhiteSpace(UserData.Password))
            {
                Navi.NavigateTo(DiaryUrl.SetPassword());
                return;
            }

            LastDiary = await DiaryService.GetLastDiaryViewAsync(User, DiaryInfo);

            Date = DateTime.Today;
        }
예제 #25
0
 public virtual void deactivate(Navi navi, ChipLogic c)
 {
     if (c.chip_renderObj != null)
     {
         UnityEngine.Object.Destroy(c.chip_renderObj); // removes the chip's sprite
     }
     navi.running_chips.Remove(c);                     // removes self from running chips list to no longer be called on synced update
 }
예제 #26
0
 // Update is called once per frame
 void Update()
 {
     cost_icon.transform.GetChild(0).GetComponent <Text>().text = "" + cost;
     if (GameObject.FindGameObjectWithTag("My Navi") != null)
     {
         navi = GameObject.FindGameObjectWithTag("My Navi").GetComponent <Navi>();
     }
 }
예제 #27
0
    public Node(double cost, Navi goal, Node parent, Navi passConnect)
    {
        this.cost   = cost;
        this.navi   = passConnect;
        this.parent = parent;

        this.heuristicCost = Vector2.Distance(goal.position, passConnect.position);
        this.score         = this.cost + this.heuristicCost;
    }
예제 #28
0
파일: Navi.cs 프로젝트: hafewa/U3Dtest
    public static Navi      get()
    {
        if (instance == null)
        {
            instance = GameObject.Find("GameCanvas").GetComponent <Navi>();
        }

        return(instance);
    }
예제 #29
0
    public override void initAnim(Navi navi, ChipLogic c)
    {
        List <Sprite> subarray = new List <Sprite>();
        int           start; // index of first frame in sheet

        switch (c.sword_size)
        {
        case 1:                 // sword (1x1)
            start = 4;
            break;

        case 2:                 // longsword (1x2)
            start = 0;
            break;

        case -1:                 // widesword (3x1)
            start = 8;
            break;

        default:                // unlisted sword size: NOT A SWORD
            start = 0;
            break;
        }
        int i = 0;

        while (i < 4)           // animation is 4 frames long
        {
            subarray.Add(effectAnim[start + i]);
            i++;
        }
        slash_eff = subarray.ToArray();         // load only corresponding cannon frames
        // prepare renderer for slash effect then deactivate until time to render
        slash_renderer = new GameObject();
        slash_renderer.AddComponent <SpriteRenderer>();
        slash_frame = 0;
        slash_renderer.GetComponent <SpriteRenderer>().sprite       = slash_eff[slash_frame];
        slash_renderer.GetComponent <SpriteRenderer>().sortingOrder = 6; //top layer, hit effect shows above auras
        if (!navi.myNavi())                                              // flip slash effect horizontally when created by opponent
        {
            slash_renderer.GetComponent <SpriteRenderer>().flipX = true;
        }
        slash_renderer.SetActive(false);

        hit = true;             // reset hit check boolean to true until active frame of attack

        // take control of navi sword animation to sync animations
        c.chip_anim_frame    = 0;
        c.frametimer         = 2 * c.chipFR;    // first frame is longer
        navi.rate_controlled = true;
        navi.swordAnim       = true;
        navi.controlledSpriteSet(0);

        //sound
        navi.GetComponent <AudioSource>().PlayOneShot(Resources.Load <AudioClip>("Audio/s_sword"));

        c.interrupt = true;             //sword attacks can be interrupted at any time
    }
예제 #30
0
    public override void activate(Navi navi)
    {
        navi.running_chips.Add(this);

        // Chip uses a generic sword effect
        this.effect = EffectDB.SWORD.clone();
        effect.initAnim(navi, this);
        OnSyncedUpdate(navi);           // starts animation + logic
    }
예제 #31
0
파일: Navi.cs 프로젝트: syogesh/Lights
 void Awake()
 {
     S = this;
 }
예제 #32
0
파일: Navi.cs 프로젝트: fotoco/006772
	public static Navi	get()
	{
		if(Navi.instance == null) {

			Navi.instance = GameObject.Find("Navi").GetComponent<Navi>();
		}

		return(Navi.instance);
	}