void ChangeWeapon(int weaponnum) //assumpt when this function call, the [weaponnum] weapon is able to be change(i.e. not empty , not 0 durability { if (weaponnum == 0) //want to change to default weapon { if (curweaponorder == 1) //is holding second weapon { weaponinbacklistscript.HideWeaponInBack(weaponorder[0, 1]); //if player holding second, there must be a default in back weaponinbacklistscript.ShowWeaponInBack(weaponorder[1, 1]); //put the holding (second) weapon in back } else if (curweaponorder == 2) //if player holding throw weapon, there is 2 possible state : get two weapon in back / get default weapon in back == default must in back { weaponinbacklistscript.HideWeaponInBack(weaponorder[0, 1]); if (weaponorder[2, 1] == "normalbody") { //do sth HoldingBodyDrop();//maybe drop the body and if there are fragments? change to fragments : change to empty } } curweaponorder = 0; curweaponanim = weaponlistscript.changeweapon(curweaponanim, weaponorder[0, 0], weaponorder[0, 1], 100); //100 is meaningless, durability is no use for default weapon curweaponweight = int.Parse(weaponorder[0, 2]); } else if (weaponnum == 1) // want to change to second weapon : here assume second weapon is not empty(in back) { if (curweaponorder == 0) //is holding default weapon { weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]); weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]); } else if (curweaponorder == 2) //is holding throw weapon, there must be two weapon in back { weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]); if (weaponorder[2, 1] == "normalbody") { //do sth HoldingBodyDrop();//maybe drop the body and if there are fragments? change to fragments : change to empty } } curweaponorder = 1; curweaponanim = weaponlistscript.changeweapon(curweaponanim, weaponorder[1, 0], weaponorder[1, 1], cursecweadurability); curweaponweight = int.Parse(weaponorder[1, 2]); } else //weaponnum == 2 == want to change to throweapon > body cannot be hide > must be bodyfragment(s) { weaponinbacklistscript.ShowWeaponInBack(weaponorder[curweaponorder, 1]); curweaponorder = 2; curweaponanim = weaponlistscript.changeweapon(curweaponanim, weaponorder[2, 0], weaponorder[2, 1], fragmentcount); curweaponweight = int.Parse(weaponorder[2, 2]); } anim.SetTrigger("weaponchanged"); curweaponfacing = curweaponanim.GetComponent <weaponfacing>(); curweaponfacing.Show(); }
//**************************************// // Use this for initialization void Start() { //CC = GetComponent<CharacterController>(); man = transform.Find("man"); cursca = transform.localScale; face = man.Find("face").gameObject; weapon = transform.Find("weapon"); weaponinback = man.Find("body/backweaponctrl"); weaponlistscript = weapon.GetComponent <weaponlist>(); weaponinbacklistscript = weaponinback.GetComponent <weaponinbacklist>(); zerovetor = Vector2.zero; anim = man.GetComponent <Animator>(); col = GetComponent <BoxCollider2D>(); body = GetComponent <Rigidbody2D>(); mousepos = zerovetor; curweaponweight = int.Parse(weaponorder[0, 2]); //rhand = transform.Find("rhand").gameObject; //punchhitbox = rhand.GetComponent<CircleCollider2D>(); curweaponanim = weaponlistscript.changeweapon(curweaponanim, "melee", "stopbrand", 100); curweaponfacing = curweaponanim.GetComponent <weaponfacing>(); droppt = man.Find("droppt"); bodyfragment = weapon.Find("throw/bodyfragment/bodypos"); startrot = transform.rotation; SoundList = man.GetComponents <AudioSource>(); footstep = new AudioSource[footstepnum]; for (int i = 0; i < footstepnum; i++) { footstep[i] = SoundList[i]; } rollsound = SoundList[footstepnum]; //4, which is the 5th particleeffect = transform.Find("effect"); walkdust = particleeffect.Find("walkdust").GetComponent <ParticleSystem>(); rolldust = particleeffect.Find("rolldust").GetComponent <ParticleSystem>(); }
void PickUpWeapon() { if (Input.GetButtonDown("PickUp")) { if (pickableweaponcount > 0) { if (closestweapon.gameObject.layer == 17 || closestweapon.CompareTag("chest")) //17 is Interactable Layer { closestweapon.GetComponent <interactable>().Interact(transform); return; } weaponinfo = dropweaponscript.getweaponinfo(); if (curweaponorder == 2 && weaponorder[2, 1] == "normalbody") // if holding a body { HoldingBodyDrop(); } if (weaponinfo[0] == "throw") { if (weaponinfo[1] == "normalbody") { curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], 100); // [0][1][2] stand for type, weaponname, weight , [3] weight is not need in weaponlist script UpdateThrowWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], "100"); // [2] weight is not need in weaponlist script, but used in here } else { if (weaponorder[2, 1] != "empty") { if (weaponinfo[1] == weaponorder[2, 1]) //check is player already have that weapon { fragmentcount += float.Parse(weaponinfo[3]); } else //useless now, because there is only one type = bodyframent { weapondropped = Instantiate(Resources.Load("dropweapon/" + weaponorder[2, 1]), droppt.position, Quaternion.identity) as GameObject; weapondropped.GetComponent <dropweapon>().setdurability(cursecweadurability); } } else { fragmentcount = float.Parse(weaponinfo[3]); } curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], fragmentcount); // [0][1][2] stand for type, weaponname, weight , [3] weight is not need in weaponlist script UpdateThrowWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], fragmentcount.ToString()); // [2] weight is not need in weaponlist script, but used in here } anim.SetTrigger("weaponchanged"); //****use to interrupt the attack animation to prevent player attack and changed weapon at the same time******// weaponinbacklistscript.ShowWeaponInBack(weaponorder[curweaponorder, 1]); curweaponorder = 2; } else //other types, which means that will be places as second weapon { /*if (weaponorder[1,1] != "empty") * { * if (weaponinfo[1] == weaponorder[1, 1]) //check is player already have that weapon * { * cursecweadurability += float.Parse(weaponinfo[3]); * } * else * { * weapondropped = Instantiate(Resources.Load("dropweapon/" + weaponorder[1, 1]), droppt.position, Quaternion.identity) as GameObject; * weapondropped.GetComponent<dropweapon>().setdurability(cursecweadurability); * } * } * else * { * cursecweadurability = float.Parse(weaponinfo[3]); * } * * //curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], cursecweadurability); // [0][1][2] stand for type, weaponname, weight , [3] weight is not need in weaponlist script * //anim.SetTrigger("weaponchanged"); //use to interrupt the attack animation to prevent player attack and changed weapon at the same time// * * weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]); //this order can make sure the same name weapon can show * UpdateSecondWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], cursecweadurability.ToString()); // [2] weight is not need in weaponlist script, but used in here * * curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], cursecweadurability); * * if (curweaponorder == 0) // if player using default/throw weapon, then change to second * { * weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]); * } * curweaponorder = 1;*/ if (weaponorder[1, 1] == "empty") { if (curweaponorder == 0) { weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]); } cursecweadurability = float.Parse(weaponinfo[3]); } else { if (curweaponorder == 0) { weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]); weaponinbacklistscript.ShowWeaponInBack(weaponorder[0, 1]); } else if (curweaponorder == 2) { weaponinbacklistscript.HideWeaponInBack(weaponorder[1, 1]); } if (weaponinfo[1] == weaponorder[1, 1]) //check is player already have that weapon { cursecweadurability += float.Parse(weaponinfo[3]); } else { weapondropped = Instantiate(Resources.Load("dropweapon/" + weaponorder[1, 1]), droppt.position, Quaternion.identity) as GameObject; weapondropped.GetComponent <dropweapon>().setdurability(cursecweadurability); } } UpdateSecondWeapon(weaponinfo[0], weaponinfo[1], weaponinfo[2], cursecweadurability.ToString()); // [2] weight is not need in weaponlist script, but used in here curweaponanim = weaponlistscript.changeweapon(closestweapon, curweaponanim, weaponinfo[0], weaponinfo[1], cursecweadurability); curweaponorder = 1; } curweaponweight = int.Parse(weaponorder[curweaponorder, 2]); curweaponfacing = curweaponanim.GetComponent <weaponfacing>(); } } }