public void OnSpriteMouseDown(GameObject spriteObj) { if (!levelActive) { return; } heldSpriteTossable = spriteObj.GetComponent <SpriteTossable>(); grabPosLocal = heldSpriteTossable.transform.localPosition; // maintain copy of character's position where grabbed, relative to the boat if (heldSpriteTossable is CharBase) { heldChar = spriteObj.GetComponent <CharBase>(); } else { heldChar = null; } // Bring character to focus, in front of everything. heldSpriteTossable.SortCompLayerChange(Consts.DrawLayers.FrontOfLevel3, null); holdWeight.CurrentValue = heldSpriteTossable.Weight; uiUpdate.RaiseEvent(); spriteMouseRespScpt.SetActive(true); }
public virtual void EndAction() { taskCounter = taskInterval = 0; timerBar.IsActive = false; IsCancelBtnActive = false; if (activeChar != null) { activeChar.SetStateDazed(false); activeChar.ReturnToNeutral(); activeChar = null; } if (CharState != Consts.CharState.Saved) { CharState = Consts.CharState.Default; if (!Airborne) { AnimTrigger("Idle"); } actHold = false; } activeSkill = Consts.Skills.None; }
public bool TryRelease(CharBase chara) { if (chara == character) { character = null; return(true); } return(false); }
public bool TryOccupy(CharBase c) { if (CanWalkWithChar || IsOccupant(c)) { character = c; return(true); } c.CheckAndResolveDeadlock(character); return(false); }
public bool Cling(CharBase character) { if (clingPoints.Count < 1) { return(false); } // TODO: Determine which of the available points the character is closest to, and use/remove that one. character.transform.position = clingPoints[0].position; clingPoints.RemoveAt(0); return(true); }
public void RemoveCharacter(CharBase character) { charsInPlay.Remove(character); if (character is CharChild) { children.Remove(character as CharChild); numChildren--; } else { numElders--; } }
public Enemy GetNearestEnemy(CharBase c) { Enemy e = null; float closest = Mathf.Infinity; foreach (var en in chars) { var m = (en.Value.transform.position - c.transform.position).magnitude; if (!e || m < closest) { closest = m; e = en.Value; } } return(e); }
// 取得玩家隊伍資料 void SetPlayerTeamData() { if (playerTeam != null) { playerTeam.Clear(); } // official PlayerData playerData = (PlayerData)PlayerDataManager.instance.Load("playerdata", typeof(PlayerData)); int teamMemberCount = playerData.teamData; for (int i = 1; i <= teamMemberCount; i++) { string dataPath = "character" + i; Character character = (Character)PlayerDataManager.instance.Load(dataPath, typeof(Character)); CharBase chb = new CharBase(); chb.currentHP = character.equipHP; chb.currentAtk = character.equipAtk; chb.currentDef = character.equipDef; playerTeam.Add(chb); } // test // Character chr = new Character(); // chr.chrName = "Henry"; // chr.currentHP = 300; // chr.currentAtk = 6; // chr.currentDef = 2; // playerTeam.Add(chr); // chr = new Character(); // chr.chrName = "Davis"; // chr.currentHP = 200; // chr.currentAtk = 7; // chr.currentDef = 1; // playerTeam.Add(chr); // chr = new Character(); // chr.chrName = "Woody"; // chr.currentHP = 350; // chr.currentAtk = 4; // chr.currentDef = 4; // playerTeam.Add(chr); playerTeam = playerTeam.OrderBy(val => val.currentHP).ToList(); }
public Char(CharBase charBase, int clevel) { Base = charBase; Level = clevel; CurrentHP = MaxHP; CurrentMP = MaxMP; Moves = new List <CharMove>(); foreach (var move in Base.LearnableMoves) { if (move.Level <= Level) { Moves.Add(new CharMove(move.Base)); } if (Moves.Count >= 99) { break; } } }
public void HeldSpriteToss() { spriteMouseRespScpt.SetActive(false); // TODO: Top out the toss speed to something not TOO unreasonable //Vector2 tossDir = mouseDelta.normalized; float tossSpeed = mouseDelta.magnitude / Time.deltaTime; if (heldSpriteTossable is ItemBase) { RemoveItem(heldSpriteTossable as ItemBase); heldSpriteTossable.Toss(mouseDelta * tossSpeed); } else { CharBase c = heldSpriteTossable as CharBase; // TODO: Character animation still set to Struggling? That's fine for now, but perhaps make something else for when airborne. if (c.ItemHeld != null) { c.ItemHeld.Toss(Utility.AddNoiseDeg(mouseDelta, Consts.TOSS_NOISE_MIN, Consts.TOSS_NOISE_MAX) * tossSpeed); } c.Toss(mouseDelta * tossSpeed); } // Change weight in boat boat.RemoveLoad(holdWeight.CurrentValue); prepTossCalc = false; heldChar = null; heldSpriteTossable = null; holdWeight.CurrentValue = 0; uiUpdate.RaiseEvent(); UnPauseLevel(); }
// 根據樓層取得敵人隊伍資料 void SetEnemyTeamByFloor(int floor) { if (enemyTeam != null) { enemyTeam.Clear(); } // test for (int i = 0; i < 3; i++) { Monster mob = new Monster(); mob.equipHP = floor * 10 + 5; mob.equipAtk = floor * 8 + 2; mob.equipDef = floor * 1 + 1; CharBase chb = new CharBase(); chb.currentHP = mob.equipHP; chb.currentAtk = mob.equipAtk; chb.currentDef = mob.equipDef; enemyTeam.Add(chb); } enemyTeam = enemyTeam.OrderBy(val => val.currentHP).ToList(); }
public void atkMe(GameObject obj, CharBase src) { int number = src.getY(); if (enemies[number].life) { if (count == 0) { audioSource.PlayOneShot(atk_sound_me); enemies[number].damage(src.getAtk()); enemies[number].checkLife(); src.atk_flag = false; obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber()); src.setY(src.getMyNumber()); control_bar.reroadBar(charas[0].getHpMaxRate(), charas[1].getHpMaxRate(), charas[2].getHpMaxRate(), enemies[0].getHpMaxRate(), enemies[1].getHpMaxRate(), enemies[2].getHpMaxRate()); } obj.transform.Rotate(0, 0, 18); } else if (count == 0) { obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber()); src.setY(src.getMyNumber()); } }
public void moveMe(GameObject obj, CharBase src) { if (count == 0) { switch (src.next_rode) { case 2: src.setX(src.getX() + 1); break; case 3: src.setY(src.getY() - 1); break; case 0: src.setX(src.getX() - 1); break; case 1: src.setY(src.getY() + 1); break; } if (src.getX() < 0 || src.getY() < 0 || src.getY() >= 3) { src.idou = false; obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber()); src.setX(-1); src.setY(src.getMyNumber()); } else if (src.getX() >= 5) { src.idou = false; src.atk_flag = true; src.setX(-1); } else { int[] able = road[src.getY(), src.getX()].getAble(); if (able[(src.next_rode + 2) % 4] == 0) { src.idou = false; obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber()); src.setX(-1); src.setY(src.getMyNumber()); } } } if (count == 10) { src.next_rode = road[src.getY(), src.getX()].getNext((src.next_rode + 2) % 4); } switch (src.next_rode) { case 2: obj.transform.Translate(0.05f, 0, 0, Space.World); break; case 3: obj.transform.Translate(0, 0, -0.05f, Space.World); break; case 0: obj.transform.Translate(-0.05f, 0, 0, Space.World); break; case 1: obj.transform.Translate(0, 0, 0.05f, Space.World); break; } }
public bool IsOccupant(CharBase c) { return(character == c); }
public IEnumerator CreatePlayer(NetworkConnection conn) { yield return(new WaitUntil(() => awaitingConnections.Count > 0)); List <string> reservedSpawnPoints = new List <string>(); string tempSP = ""; List <Player> pr = new List <Player>(); foreach (Player p in awaitingConnections) { pr.Add(p); Player player = null; for (int i = 0; i < e.Players.Length; i++) { if (e.Players[i].SpawnPoint != "") { reservedSpawnPoints. Add(e.Players[i].SpawnPoint); } if (p.CID != e.Players[i].CID) { continue; } player = e.Players[i]; for (int y = 1; y <= 100; y++) { tempSP = "SpawnPoint" + player.Side.ToString() + "_" + y.ToString(); if (reservedSpawnPoints.Contains(tempSP)) { continue; } e.Players[i].SpawnPoint = tempSP; player.SpawnPoint = tempSP; break; } break; } if (player == null) { continue; } foreach (PlayerController obj in conn.playerControllers) { CharBase cbase = obj.gameObject.GetComponent <CharBase>(); Health health = obj.gameObject.GetComponent <Health>(); //Movement movement = obj.gameObject.GetComponent<Movement>(); obj.gameObject.name = player.Account_ID; cbase.cid = conn.connectionId; health.playerName = player.PlayerName; obj.gameObject.transform.Find("Namebar").Find("Name"). GetComponent <Text>().text = player.PlayerName; // server debug to see the char obj.gameObject.transform.Find("DebugServer").gameObject. SetActive(true); health.selectedSpawnPoint = player.SpawnPoint; health.characterID = player.Character; break; } } foreach (Player p in pr) { awaitingConnections.Remove(p); } conn.Send(Comm.msgCID, new IntegerMessage(1)); // notify all clients NetworkInstanceId n = new NetworkInstanceId(); foreach (CharBase cb in FindObjectsOfType <CharBase>()) { if (cb.isMe) { n = cb.netId; } } Comm.MBChar c = new Comm.MBChar { connection = conn.connectionId, playerName = Account.GetUser().Nickname, characterID = Match.self.activeEvent.Me.Character, }; NetworkServer.SendToAll(Comm.msgChar, c); }
public void ConfirmItemSelection(CharBase charToAct, ItemBase item) { item.RemoveFromChar(); RemoveItem(item); }
public void CharKilled(CharBase character) { charsKilled++; RemoveCharacter(character); CheckLevelEnd(); }